之间有什么区别
cat dat | tee >(wc -l ) | some other command
和
cat dat | tee file | wc -l
关于引擎盖下发生的事情? 我可以理解第二个,因为T恤将流分为文件和管道。但我对第一个感到困惑。
答案 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手册页的“流程替换”。