什么是这个Bash(和/或其他shell?)构造调用?

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