3

和有什么区别

cat dat | tee >(wc -l ) | some other command

cat dat | tee file | wc -l

就幕后发生的事情而言?我可以理解第二个,因为 tee 将流分叉到文件中,也分叉到管道中。但我对第一个感到困惑。

4

2 回答 2

3

第一个符号是 Bash 4.x 的进程替换(不在 3.x 中,或者不是在 3.x 的所有版本中)。

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

于 2012-12-04T03:31:36.347 回答
1

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

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

于 2012-12-04T03:31:21.233 回答