Linux Shell Scripting

Barras de Progreso en Bash: Tres Métodos Poderosos

Spread the love

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

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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *