Cómo mostrar una barra de progreso al descomprimir un archivo

Recientemente, encontré una herramienta muy útil que permite mostrar el progreso al extraer un archivo comprimido en la terminal: pv. pv monitorea el flujo de datos a través de un pipe, así que para descomprimir un archivo mediante tar necesitamos enviarle el archivo usando un pipe:

$ pv file.tgz | tar xzf - -C target_directory

Este comando mostrará el tiempo transcurrido, porcentaje completado y una barra de progreso con un tiempo estimado de finalización, algo como esto:

1.16MB 0:00:20 [6.06MB/s] [==================>               ] 55%  ETA 0:00:37

Si quieren más información sobre pv y algunos ejemplos, visiten este enlace: A Unix Utility You Should Know About: Pipe Viewer.

 

Una barra de progreso más atractiva usando dialog



El comando pv me ha sido muy útil, pero después quería poder mostrar el progreso de la extracción del archivo utilizando dialog. Este es un script de ejemplo que muestra una barra de progreso usando dialog:

#!/bin/bash
 
(
for i in {0..100..10}
do
	echo $i
	sleep 1
done
) | dialog --gauge "Progreso" 10 40

Y este es el comando para mostrar el progreso de extracción de un archivo usando pv y dialog::

$ (pv -n archivo.tgz | tar xzf - -C directorio ) \
2>&1 | dialog --gauge "Extrayendo archivo..." 6 50

El parámetro -n hace que pv muestre a la salida solamente porcentajes, los cuales enviamos mediante un pipe como entrada a dialog. Da como resultado algo como esto:
Extraction progress dialog
El uso de pv con dialog me ha resultado muy útil en algunos scripts que se usan a menudo en el trabajo, ahora se ven más “profesionales” 😉 :).

2 comentarios en “Cómo mostrar una barra de progreso al descomprimir un archivo”

  1. Muchas gracias, estaba buscando justo eso para mostrar el progreso de descomprimir unas imágenes tar de particiones y el personal no pensara que se había quedado “frito” 😀

Leave a Reply