以下两个重定向命令有何区别?
ls > out
ls >| out
它们似乎都产生相同的输出。
答案1
根据[1],区别在于>|
即使设置了noclobber选项也会将输出重定向到文件。
noclobber 选项由 bash 的命令行选项设置-C
,用于防止通过重定向覆盖文件 [2]。设置 noclobber 选项后, 会ls >| out
覆盖文件out
, 否则ls > out
不会。
[1]http://tldp.org/LDP/abs/html/special-chars.html
[2]http://tldp.org/LDP/abs/html/options.html#NOCLOBBERREF