我必须使用 复制一个大文件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 所说。