bash中的结构叫做什么,你可以把一个输出到stdout的命令包装起来,这样输出本身就像一个stream一样被处理。 如果我没有描述得那么好,也许一个例子会做的最好,这就是我通常用它来做的:把diff应用到不是来自文件的输出,而是来自其他命令,
cmd
被包裹为
<(cmd)
通过以这种方式包装一个命令,在下面的例子中,我确定我正在运行的两个命令之间有一个差异,然后我能够确定一个精确的差异。 什么是包装一个命令作为<(cmd)调用的构造/技术? 谢谢
[builder@george v6.5 html]$ git status | egrep modified | awk '{print $3}' | wc -l 51 [builder@george v6.5 html]$ git status | egrep modified | awk '{print $3}' | xargs grep -l 'Ext\.define' | wc -l 50 [builder@george v6.5 html]$ diff <(git status | egrep modified | awk '{print $3}') <(git status | egrep modified | awk '{print $3}' | xargs grep -l 'Ext\.define') 39d38 < javascript/reports/report_initiator.js
附录使用git的ls-file的build议修改后的命令应该如下(未经testing):
diff <(git ls-files -m) <(git ls-files -m | xargs grep -l 'Ext\.define')
它被称为进程替代 。
这被称为Process Substitution
就像你所说的那样,这就是过程替代。 我只想指出,这也适用于另一个方向。 使用>(cmd)的进程替换允许您执行写入文件的命令,而将输出重定向到另一个命令的stdin。 将某些输入文件名作为参数的管道插入是非常有用的。 你不会看到这么多,因为几乎所有的标准命令都会写入stdout,但是我经常使用自定义的东西。 这是一个人为的例子:
$ echo "hello world" | tee >(wc) hello world 1 2 12