我可以用T恤来输出发送到标准输出和文件中像这样:如何使用tee将所有输出发送到stdout和grepped输出到文件?
./process.sh | tee output.log
我如何完成输出发送到标准输出和grepped输出到文件?
这也不起作用,因为发球预计第二个文件参数:
./process.sh | tee | grep foo > output.log
我可以用T恤来输出发送到标准输出和文件中像这样:如何使用tee将所有输出发送到stdout和grepped输出到文件?
./process.sh | tee output.log
我如何完成输出发送到标准输出和grepped输出到文件?
这也不起作用,因为发球预计第二个文件参数:
./process.sh | tee | grep foo > output.log
你可以尝试:
./process.sh | { tee /dev/tty | grep foo > output.log; }
这不输出发送到标准输出,但对TTY 。也许这够好。
,或者你可以这样做:
./process.sh | awk '/foo/{ print > "output.log"} 1'
它打印的process.sh
所有的输出到标准输出,并匹配foo
该行被写入文件。
此外,你可以这样做:
mkfifo fifo
./process.sh | { cat fifo & tee fifo | grep foo > output.log; }
rm fifo
可以与/proc
文件系统更干净来完成:
./process.sh | { tee /proc/self/fd/6 | grep foo > output.lot; } 6>&1
除了另一种答案,如果你使用它重定向输出到/dev/tty
,外壳(和一个操作系统)支持bash
风格的过程替换,你可以这样做:
./process.sh | tee >(grep foo > output.log)