Las barras de progreso son invaluables para proporcionar retroalimentación visual durante procesos largos, ofreciendo a los usuarios una indicación clara del progreso de la tarea. Si bien Bash carece de soporte nativo para barras de progreso, varias herramientas y bibliotecas externas ofrecen soluciones robustas. Esta guía explora tres métodos distintos: aprovechar el comando pv
, utilizar el comando dialog
y emplear la biblioteca ncurses
.
Tabla de contenido
- Usando
pv
para barras de progreso - Empleando
dialog
para barras de progreso - Aprovechando
ncurses
para barras de progreso avanzadas
Usando pv
para barras de progreso
El comando pv
(visualizador de tuberías) sobresale en la monitorización de flujos de datos, lo que lo hace ideal para visualizar el progreso en transferencias de archivos u operaciones similares con uso intensivo de datos. Su simplicidad y eficacia son ventajas significativas.
Instalación:
pv
está fácilmente disponible a través de la mayoría de los administradores de paquetes de distribución de Linux. Instálelo usando el comando específico de su distribución (por ejemplo, sudo apt-get install pv
en Debian/Ubuntu, sudo yum install pv
en CentOS/RHEL, sudo pacman -S pv
en Arch Linux).
Uso:
La sintaxis fundamental es sencilla:
pv archivo_entrada > archivo_salida
Reemplace archivo_entrada
con su archivo de origen y archivo_salida
con el destino deseado. pv
mostrará dinámicamente una barra de progreso que indica la velocidad de transferencia y el tiempo estimado de finalización.
Ejemplo:
Para copiar un archivo grande (large_file.zip
) con una barra de progreso:
pv large_file.zip > copied_large_file.zip
La flexibilidad de pv
se extiende más allá de la copia de archivos. Se integra perfectamente con comandos que generan flujos de datos. Por ejemplo, para monitorizar la extracción de un archivo tar:
tar -xvf large_archive.tar | pv > /dev/null
Aquí, /dev/null
descarta los archivos extraídos, centrándose únicamente en la monitorización del progreso.
Empleando dialog
para barras de progreso
El comando dialog
ofrece una gama más amplia de cuadros de diálogo interactivos, incluyendo una versátil barra de progreso. Proporciona más control sobre la apariencia de la barra en comparación con pv
y no se limita a los flujos de datos.
Instalación:
Al igual que pv
, dialog
suele estar disponible a través del administrador de paquetes de su distribución (por ejemplo, sudo apt-get install dialog
, sudo yum install dialog
, sudo pacman -S dialog
).
Uso:
La barra de progreso de dialog
utiliza la opción --gauge
. Se especifica el título, el valor máximo (100%) y el valor actual. El script actualiza iterativamente el valor actual.
Ejemplo:
Este script simula un proceso y muestra una barra de progreso:
#!/bin/bash
for i in $(seq 1 100); do
dialog --gauge "Procesando..." 10 60 $i
sleep 0.1
done
dialog --infobox "¡Proceso completado!" 10 30
El script itera 100 veces, incrementando la barra de progreso. sleep 0.1
añade un retraso para la demostración. Haga que el script sea ejecutable usando chmod +x your_script.sh
.
Aprovechando ncurses
para barras de progreso avanzadas
Para una máxima personalización y control, la biblioteca ncurses
proporciona una flexibilidad incomparable. ncurses
manipula directamente la salida de la terminal, permitiendo barras de progreso altamente personalizadas. Sin embargo, este enfoque exige una comprensión más profunda de la programación y las funciones de ncurses
.
Instalación:
ncurses
suele estar preinstalado. Si no es así, instálelo usando el administrador de paquetes de su distribución (por ejemplo, sudo apt-get install libncurses5-dev
, sudo yum install ncurses-devel
, sudo pacman -S ncurses
).
Uso:
Un ejemplo completo de ncurses
está más allá del alcance de esta guía debido a su complejidad. El proceso implica inicializar ncurses
, dibujar la barra usando funciones como mvprintw
, actualizarla iterativamente y finalmente limpiar ncurses
. Se gestiona manualmente la posición del cursor. Numerosos recursos en línea ofrecen tutoriales detallados de ncurses
en C u otros lenguajes; adaptarlos a Bash requiere una atención cuidadosa.
Este artículo presentó tres enfoques para crear barras de progreso en Bash. Elija el método que mejor se adapte a sus necesidades y habilidades. pv
es ideal para tareas simples; dialog
ofrece más control; y ncurses
proporciona la máxima personalización.