当 pv each 的输出发生变化时,如何将其打印在新行上?

当 pv each 的输出发生变化时,如何将其打印在新行上?

我必须使用 复制一个大文件pv,因为 pv 输出进度,我想利用这一点并将其用于文件中php。但是,pv在同一行上输出进度(覆盖先前的状态),我需要它将每个新状态写在新行上,然后可以通过 读取php。我该怎么做?我尝试了以下各种版本,但不起作用:

 pv largefiles > newlargefiles | stdbuf -oL tr '\r' '\n'

答案1

问题是,如果 stderr 不是终端,则 pv 将不输出任何内容,因此请添加-f。您还需要将 stderr 移动到管道:

pv -f largefiles 2>&1 >newlargefiles | stdbuf -oL tr '\r' '\n'

根据您的使用情况,您可能不需要stdbuf -oL,正如@kos 所说。

相关内容