在 bash 脚本中,> 和 >| 重定向之间有什么区别?

在 bash 脚本中,> 和 >| 重定向之间有什么区别?

以下两个重定向命令有何区别?

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

相关内容