如何在 pv each 更改时在新行上打印输出?

nah*_*hom 1 php copy

我必须使用复制一个大文件,pv并且由于 pv 输出进度,我想利用它并在php文件中使用它。但是,pv在同一行上输出进度(覆盖以前的状态),我需要它在新行上写入每个新状态,然后可以由php. 我怎样才能做到这一点?我已经尝试了以下各种版本,但它不起作用:

 pv largefiles > newlargefiles | stdbuf -oL tr '\r' '\n'
Run Code Online (Sandbox Code Playgroud)

meu*_*euh 7

问题是如果 stderr 不是终端, pv 将不输出,所以添加-f. 您还需要将 stderr 移动到管道:

pv -f largefiles 2>&1 >newlargefiles | stdbuf -oL tr '\r' '\n'
Run Code Online (Sandbox Code Playgroud)

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

  • `因为您是信誉 1 的用户:如果此答案对您有帮助,请不要忘记单击此文本左侧的灰色 **☑**,这意味着 [Yes, this answer is valid][askubuntu.com /help/...](http://askubuntu.com/help/accepted-answer)!**;-)** (2认同)