Una de las formas más rapidas y faciles de dar un aspecto más profesional a las ejecuciones de tus scripts en Bash, es controlar el progreso de los diferentes procesos que puedan suceder en él. Hay diferentes maneras de añadirlos, todas muy sencillas y bastante bonitas.
¡Vamos a verlas!
Whiptail
Podemos utilizar whiptail de una manera sencilla. Cualquier valor porcentil que le pases, lo mostrará. Además puedes indicar el mensaje que quieres de dar. Por defecto ocupará toda la pantalla.
Si tienes un proceso y sabes cuando va a terminal (el valor maximo o total) puedes realizar una regla de 3 para ir mostrando el progreso.
Vamos a poner un ejemplo, haciendo un bucle con for en el que iremos incrementando el valor de $i, y haremos que espere un segundo. La variable total es el maximo, y también el tiempo que tardará.
Puedes encontrar mucha información para usar whiptail si usas man (man whiptail)
Este el script:
#!/bin/bash total=10 { for i in $(seq 1 $total); do let var1=$i*100 let var2=$var1/$total echo $var2 sleep 1 done } | whiptail --gauge "Testeando el script..." 6 50 0
Y el resultado por pantalla, así:
PV
pv se utiliza para proporcionar la capacidad de monitorear el progreso de una aplicación dada que carezca de la funcionalidad mencionada. Se puede utilizar colocando un operador de tubería (|) entre dos procesos.
Necesitas instalar pv:
sudo apt-get install pv
Y puedes ejecutarlo así, por ejemplo, para crear una barra de progreso mientras archivas un zip:
pv history.log | zip>$HOME/Documents/history.zip
Progress
Es una pequeña herramienta para monitorear el progreso de los comandos (cp, mv, dd, tar, etc.) en Linux.
No és el más bonito porque no muestra una barra como tal, pero nos puede servir.
Necesitaremos instalar progress:
sudo apt-get install progress
Y lo podemos usar detrás de un comando con un pipe:
dd if=/dev/zero of=test.img bs=1G count=1 cp test.img /tmp/ |progress -q
¿Sencillo verdad? Conoces otras maneras de hacerlo? ¡Compártelo en los comentarios!
0 comentarios