• pv
    • 补充说明
    • 下载安装
      • 语法
      • 选项
      • 实例

    pv

    显示当前在命令行执行的命令的进度信息,管道查看器。

    补充说明

    pv命令 Pipe Viewer 的简称,由Andrew Wood 开发。意思是通过管道显示数据处理进度的信息。这些信息包括已经耗费的时间,完成的百分比(通过进度条显示),当前的速度,全部传输的数据,以及估计剩余的时间。

    下载安装

    1. # Debian 系的操作系统,如 Ubuntu
    2. sudo apt-get install pv
    3. # RedHat系的则这样:
    4. yum install pv

    语法

    1. pv(选项)(参数)
    2. pv [OPTION] [FILE]...

    选项

    1. -p, --progress show progress bar
    2. -t, --timer show elapsed time
    3. -e, --eta show estimated time of arrival (completion)
    4. -I, --fineta show absolute estimated time of arrival
    5. (completion)
    6. -r, --rate show data transfer rate counter
    7. -a, --average-rate show data transfer average rate counter
    8. -b, --bytes show number of bytes transferred
    9. -T, --buffer-percent show percentage of transfer buffer in use
    10. -A, --last-written NUM show NUM bytes last written
    11. -F, --format FORMAT set output format to FORMAT
    12. -n, --numeric 输出百分比
    13. -q, --quiet do not output any transfer information at all
    14. -W, --wait display nothing until first byte transferred
    15. -D, --delay-start SEC display nothing until SEC seconds have passed
    16. -s, --size SIZE set estimated data size to SIZE bytes
    17. -l, --line-mode count lines instead of bytes
    18. -0, --null lines are null-terminated
    19. -i, --interval SEC update every SEC seconds
    20. -w, --width WIDTH assume terminal is WIDTH characters wide
    21. -H, --height HEIGHT assume terminal is HEIGHT rows high
    22. -N, --name NAME prefix visual information with NAME
    23. -f, --force output even if standard error is not a terminal
    24. -c, --cursor use cursor positioning escape sequences
    25. -L, --rate-limit RATE limit transfer to RATE bytes per second
    26. -B, --buffer-size BYTES use a buffer size of BYTES
    27. -C, --no-splice never use splice(), always use read/write
    28. -E, --skip-errors skip read errors in input
    29. -S, --stop-at-size stop after --size bytes have been transferred
    30. -R, --remote PID update settings of process PID
    31. -P, --pidfile FILE save process ID in FILE
    32. -d, --watchfd PID[:FD] watch file FD opened by process PID
    33. -h, --help 显示帮助
    34. -V, --version 显示版本信息

    实例

    我们(在 linux 上使用命令行的用户)的大多数使用场景都会用到的命令是从一个 USB 驱动器拷贝电影文件到你的电脑。如果你使用 cp 来完成上面的任务,你会什么情况都不清楚,直到整个复制过程结束或者出错。

    1. # 复制文件会有进度
    2. linux [master●] % pv ~/Downloads/CentOS-7-x86_64-Minimal-1511.iso > ~/Desktop/CentOS-7-x86_64-Minimal-1511.iso
    3. # 下面输入信息
    4. 552MiB 0:00:02 [ 212MiB/s] [==================> ] 91% ETA 0:00:00
    5. # -L 可以让你修改 pv 命令的传输速率。
    6. # 使用 -L 选项来限制传输速率为2MB/s。
    7. pv -L 2m /media/himanshu/1AC2-A8E3/fNf.mkv > ./Desktop/fnf.mkv
    1. # 字符一个个匀速在命令行中显示出来
    2. echo "Tecmint[dot]com is a community of Linux Nerds and Geeks" | pv -qL 10
    3. # 压缩文件展示进度信息
    4. pv /media/himanshu/1AC2-A8E3/fnf.mkv | gzip > ./Desktop/fnf.log.gz
    5. # 用 dd 命令将 iso 写入磁盘,pv来实现进度条的显示
    6. sudo pv -cN source < /Users/kacperwang/Downloads/CentOS-7-x86_64-Everything-1511.iso | sudo dd of=/dev/disk2 bs=4m
    7. ## 显示下面进度
    8. source: 5.2GiB 5:11:41 [ 503KiB/s] [=====================> ] 71% ETA 2:01:56