什么> | 在bash做什么?

Ed *_*d I 2 bash

在本文中,如何为RPM创建修补程序文件,有以下命令:

diff -ru base-1.4.4-orig base-1.4.4 >| $HOME/rpmbuild/SOURCES/base-1.4.4-f12.patch
Run Code Online (Sandbox Code Playgroud)

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

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

Kei*_*son 6

通过执行命令

set -o noclobber
Run Code Online (Sandbox Code Playgroud)

或等同物

set -C
Run Code Online (Sandbox Code Playgroud)

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

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

参考文献:

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

s>\|
Run Code Online (Sandbox Code Playgroud)

(如果你熟悉csh和/或tcsh,bash >|(大于垂直条)类似于csh >!(大于感叹号).