什么时候应该使用>|
将输出重定向到文件而不仅仅是>
?
当我看到这个时给出的解释是它保证目标文件首先被截断。但我认为>
已经暗示了这一点。
有用吗>|
?
答案1
这是对选项的明确绕过noclobber
。
这样,即使使用noclobber
set,您也可以覆盖该文件。
看http://mywiki.wooledge.org/NoClobber
从man bash
:
如果重定向运算符为 >,并且已启用 set 内建函数的 noclobber 选项,则如果名称由单词扩展产生的文件存在并且是常规文件,则重定向将失败。如果重定向运算符为 >|,或者重定向运算符为 > 并且未启用 set 内置命令的 noclobber 选项,则即使 word 命名的文件存在,也会尝试重定向。
答案2
从man bash
:
-C If set, bash does not overwrite an existing file with
the >, >&, and <> redirection operators. This may be
overridden when creating output files by using the redi‐
rection operator >| instead of >.