![管道进度报告](https://linux22.com/image/211674/%E7%AE%A1%E9%81%93%E8%BF%9B%E5%BA%A6%E6%8A%A5%E5%91%8A.png)
假设我正在运行这样的管道:
cat input.txt | foo | bar | baz | last_step > result.txt
有没有办法让 shell 在执行时将每个步骤打印到 stderr?
我知道如果命令foo
等bar
本身打印到 stderr 它将完成此操作。但是,我希望有一个不依赖于提供进度信息的管道步骤的通用解决方案。
答案1
我能找到的最好的方法是这样的:
cat input.txt \
| foo | pv -N "foo" \
| bar | pv -N "bar" \
| baz | pv -N "baz" \
| last_step | pv -N "last_step" > result.txt
但我不确定是否有更好的方法。