什么是> |在bash做什么?

时间:2014-02-06 18:32:26

标签: bash

在本文How To Create a Patch File for a RPM中,有以下命令:

diff -ru base-1.4.4-orig base-1.4.4 >| $HOME/rpmbuild/SOURCES/base-1.4.4-f12.patch

由于输出被写入文件,简单的重定向操作符>对我来说很好。

此运算符是否意味着重定向到管道?如果是这样,如何重定向到管道不同于仅重定向到文件或仅仅是管道到进程?

2 个答案:

答案 0 :(得分:6)

执行命令

set -o noclobber

或等效的

set -C

在重定向输出时,您可以使bash拒绝写入现有文件。

使用>|而不是>会覆盖该设置。

参考文献:

或运行info bash(假设它已安装在您的系统上)并搜索>|

s>\|

(如果您熟悉csh和/或tcsh,则bash的>|(大于竖直条)类似于csh的>!(大于感叹号)。

答案 1 :(得分:2)

来自bash手册页:

  

如果重定向运算符是> |或重定向   运算符是>并且未启用set builtin命令的noclobber选项,重定向>即使文件名为,也会尝试   字存在。