操作不断变化的命令输出流

操作不断变化的命令输出流

我正在尝试更改使用 rsync 进行的文件传输的输出位置,如下所示:

rsync -zvh --progress ubuntu-19.10-desktop-amd64.iso /home/lnxusr/Downloads/ 

由此:

ubuntu-19.10-desktop-amd64.iso
        144.67M   5%   34.50MB/s    0:01:05

对此:

ubuntu-19.10-desktop-amd64.iso
144.67M   5%   34.50MB/s    0:01:05

但是,当我将其通过管道传输到时| sed -u 's/[^\s]+//',我只得到静态输出:

ubuntu-19.10-desktop-amd64.iso

我尝试了建议的答案这里关闭缓冲过程,stdbuf -o0但得到的结果与之前相同。

有人知道这种输出操作吗?或者是否有可能定位这个输出?

答案1

另一个答案可能会提供更好的方法:

rsync 有一个--info选项不仅可以用来输出当前进度,还可以输出传输速率和经过时间:

--info=FLAGS            fine-grained informational verbosity

有关如何使用它的解释位于-P手册页中的选项下:

-P     The -P option is equivalent to --partial --progress.  Its purpose is to
       make it much easier to specify these two options for a long transfer that
       may be interrupted.

       There is also a --info=progress2 option that outputs statistics based on
       the whole transfer, rather than individual files.  Use this flag
       without  out‐putting  a  filename  (e.g. avoid -v or specify --info=name0)
       if you want to see how the transfer is doing without scrolling the screen 
       with  a  lot  of names.   (You  don’t  need  to specify the --progress
       option in order to use --info=progress2.)

因此尝试使用:

rsync -zvh --info=progress2 --info=name0 ubuntu-19.10-desktop-amd64.iso /home/lnxusr/Downloads/

笔记:

  • 这给出了整个传输的进度,而不是单个文件名的进度。
  • 我的系统上没有您的源文件和目标目录可供测试。

相关内容