将命令通过管道传输到 pv 但隐藏所有原始命令的输出

将命令通过管道传输到 pv 但隐藏所有原始命令的输出

我正在尝试使用pv,但我想隐藏通过管道输入的命令的输出,同时仍然能够看到 pv 的输出。使用command &> /dev/null | pv不起作用(例如,pv 没有收到任何数据)。command在标准输出和标准错误上生成输出,我也不想看到。

我尝试使用 grep 管道 ( command &> /dev/null | pv | grep <=>) 但有时会将内容输出到终端。

答案1

man pv

要使用它,请将其插入两个进程之间的管道中,并使用适当的选项。其标准输入将传递到其标准输出,并且进度将显示在标准错误上。

您看到的输出来自pv.进度条位于 stderr 上,您通过管道输入的内容位于 stdout 上。您可以重定向输出:

cmd | pv > /dev/null

你仍然会得到进度条输出。

如果命令产生它自己的stderr 上的文本也是如此,您可以明确重定向到/dev/null,然后将输出传递给pv

cmd 2>/dev/null | pv > /dev/null

相关内容