Command-Line
是否可以將命令的輸出重定向到多個命令?
據我所知,我可以使用 tee 命令將標準輸出拆分到螢幕和其他文件上:
command -option1 -option2 argument | tee file1 file2 file3
是否可以使用 tee 將輸出重定向到命令而不是文件,以便理論上可以創建命令鏈?
您可以在命令行上使用命名管道(http://linux.die.net/man/1/mkfifo
tee
),並在命名管道上讀取命令。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
正常終止。