如何通过管道传输并回显正在处理的结果?

如何通过管道传输并回显正在处理的结果?

我想执行这个命令:

find /apps/ -type f -print0 | grep -z log$ | xargs -0 grep 'this->aForm'

同时,我想查看哪些文件正在被处理。

怎么办呢?

答案1

Stack Overflow 上有一个类似的问题:

https://stackoverflow.com/questions/670784/redirecting-bash-stdout-stderr-to-two-places

这个想法是使用命名管道,在 bash 中你可以简单地执行以下操作:

command_that_writes_to_stdout | tee >(command_that_reads_from_stdin)

但在一般情况下,使用mkfifo,例如:

mkfifo some_pipe
command_that_writes_to_stdout | tee some_pipe \
  & command_that_reads_from_stdin < some_pipe
rm some_pipe

(两个例子均来自 Stack Overflow 答案)

相关内容