What is the difference between the following two redirection commands?
ls > out ls >| out
They both seem to produce the same output.
According to  the difference is that
>| redirects the output to a file even if noclobber option is set.
noclobber option is set by bash's command line option
-C and prevents overwriting of files by redirection . When the noclobber option is set, then
ls >| out overwrittes the file
ls > out does not.