Mostrar barra de progreso en Linux con pv y tuberías

En el artículo hoy veremos como mostrar una barra de progreso en la terminal de GNU Linux, mediante el comando pv y el uso de tuberías (en inglés pipes)

De esta manera nos podemos cerciorar del tiempo transcurrido en la copia de un fichero, o el tiempo que queda en la descarga de un archivo.

Barra de progreso en GNU Linux con pv

Antes de ver su instalación veamos en que consiste. El programa pv muestra el progreso de los datos a través de una tubería, dando información del tiempo transcurrido, porcentaje completado (con la barra de progreso), tasa de rendimiento y total de datos transferidos.

Para utilizar la herramienta debemos insertarla en una tubería entre dos procesos, con las opciones apropiadas. Su entrada estándar (stdin) pasará a través de la salida estándar (stdout), y así la barra de progreso en el error estándar (stderr)  Sí bastante teórica la cosa, así que vamos a ver su funcionamiento.

Instalación en GNU Linux de pv

La manera de instalar el programa es bien sencilla, ya que se encuentra en la mayoría de distribuciones. Veamos ejemplos de la instalación:

Instalación de pv en Debian, Ubuntu, LinuxMint y similares

  1. sudo apt update
  2. sudo apt install pv

Instalación en RHEL, Centos y Scientific Linux

  1. sudo yum update
  2. sudo yum install pv

Instalación en Fedora

  1. sudo dnf install pv

En SUSE y OpenSuse

  1. sudo zypper update
  2. sudo zypper install pv

Su instalación en Arch y derivadas

  1. sudo pacman -S pv

Además también la podemos instalar en sistemas UNIX, como FreeBSD

  1. cd /usr/ports/sysutils/pv/
  2. make install clean
  3. #O bien mediante el paquete binario
  4. pkg_add -r pv

Ahora, para trabajar con el herramienta, veamos algunos ejemplos.

Uso de pv en GNU/Linux y sistemas UNIX

Sus usos habituales son los siguientes:

  1. pv fichero
  2. pv opciones fichero
  3. pv fichero > fichero.out
  4. pv opciones | commando > fichero.out
  5. comando1 | pv | comando2

Copiamos información a un fichero en otra ubicación:

  1. pv ufw.log* > /home/davidochobits/registros-cortafuegos.log

Tal y como se muestra en la imagen:

Muestra funcionamiento pv

Podemos ver la barra de progreso al comprimir datos hacia un fichero.

  1. pv /var/log/syslog | zip > syslog.zip

Vemos el resultado en la imagen:

Un parámetro interesante es «-L«, que limita el máximo de transferencia de datos. Veamos el ejemplo de la copia de un fichero grande ISO a otra ubicación:

  1. pv -L 1m debian-9.6.0-amd64-netinst.iso > Descargas/debian.is

Aquí tenéis la imagen del ejemplo:

Para comprobar su versión:

  1. pv --version

Y esto es todo. Si revisáis su página de man, podéis exprimir al máximo sus posibilidades.

Nos vamos leyendo.