$ some-command >| /tmp/output.txt
标准重定向中使用了垂直管道,将一个命令的输出“插入”到另一个命令,实际上
>|
完全没有用,因为在这种情况下会和>
一样吗?#1 楼
它不是没有用的-它是普通>
重定向运算符的一种特殊形式(并且可能令人困惑的是,与管道无关)。 bash
和大多数其他现代外壳程序都具有选项noclobber
,该选项可防止重定向覆盖或破坏已经存在的文件。例如,如果noclobber
是true,并且文件/tmp/output.txt
已经存在,则该操作将失败:重定向运算符-即使设置了noclobber
,重定向也将起作用。您可以使用
>|
来确定当前环境中是否设置了noclobber
。有关历史记录, “ noclobber”选项及其旁路功能均来自
noclobber
(70年代后期)。 set -o
复制了它(80年代初),但使用了csh
而不是ksh
。 POSIX指定了>|
语法(因此,所有的POSIX shell(包括bash,在某些系统上用作sh的较新的ash派生工具)都支持它。 Zsh支持两种语法。我不认为它已添加到任何Bourne shell变体中,但我可能是错的。评论
@sch-重新记录您的历史记录(感谢您提供额外的信息,顺便说一句)-FreeBSD的sh自2002年5月以来就没有麻烦。
– D_Bye
2012年9月24日上午10:42
评论
寻找> |网址:stackoverflow.com/questions/818255/in-the-bash-shell-what-is-21/…对于其余图片,我强烈建议外壳程序的控制和重定向运算符是什么?