![在 bash 脚本中,> 和 >| 重定向之间有什么区别?](https://linux22.com/image/691744/%E5%9C%A8%20bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD%EF%BC%8C%3E%20%E5%92%8C%20%3E%7C%20%E9%87%8D%E5%AE%9A%E5%90%91%E4%B9%8B%E9%97%B4%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%9F.png)
以下两个重定向命令有何区别?
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