命令管道进入子shell

时间:2012-12-04 03:14:37

标签: unix tee

之间有什么区别
cat dat | tee >(wc -l ) | some other command

cat dat | tee file | wc -l

关于引擎盖下发生的事情? 我可以理解第二个,因为T恤将流分为文件和管道。但我对第一个感到困惑。

2 个答案:

答案 0 :(得分:3)

第一个表示法是Bash 4.x的process substitution(不在3.x中,或者不是3.x的所有版本)。

tee而言,它被赋予一个文件名(例如/dev/fd/64),它被写入以及标准输出;它实际上是管道写入端的文件描述符。就wc而言,它读取其标准输入(它是连接到/dev/fd/64的{​​{1}}的管道的读取端),并将其答案写入标准输出调用管道的shell(不是管道中的tee的标准输出)。

答案 1 :(得分:1)

因为>(是bash的流程替代, 第一行说: 将文件'dat'的内容发送到其他命令 进程'wc'以其输入或输出运行 连接到管道,管道也发送'dat'的内容

检查bash手册页的“流程替换”。