Command-Line

是否可以將命令的輸出重定向到多個命令?

  • March 14, 2015

據我所知,我可以使用 tee 命令將標準輸出拆分到螢幕和其他文件上:

command -option1 -option2 argument | tee file1 file2 file3 

是否可以使用 tee 將輸出重定向到命令而不是文件,以便理論上可以創建命令鏈?

您可以在命令行上使用命名管道(http://linux.die.net/man/1/mkfifotee ),並在命名管道上讀取命令。

mkfifo /tmp/data0 /tmp/data1 /tmp/data2
cmd0 < /tmp/data0 & cmd1 < /tmp/data1 & cmd2 < /tmp/data2 &
command -option1 -option2 argument | tee /tmp/data0 /tmp/data1 /tmp/data2

完成command後,將關閉命名管道,這將在每個通常終止程序tee的管道上發出 EOF(讀取 0 字節)信號。真實例子:/tmp/dataN``cmdN

$ mkfifo /tmp/data0 /tmp/data1 /tmp/data2
$ wc -l < /tmp/data0 & wc -w < /tmp/data1 & wc -c < /tmp/data2 &
$ tee /tmp/data0 /tmp/data1 /tmp/data2 < /etc/passwd >/dev/null
$ 61
1974
37

由於後台程序,shell 在程序輸出之前返回了一個提示。所有三個實例都wc正常終止。

引用自:https://unix.stackexchange.com/questions/188930