whiptail viene preinstalado en Ubuntu y muchas otras distribuciones, y mostrará elementos de progreso en pantalla completa (pero aún basados en terminales).
dialoges un superconjunto de whiptail, por lo que este ejemplo funcionará igualmente bien con ambos. Proporciona elementos de interfaz de usuario más avanzados, por lo que puede ser útil si está buscando interacción del usuario, como selectores de archivos y formularios, pero tiene la desventaja de no venir preinstalado en muchos sistemas.


for i in $(seq 1 100)
do
sleep 0.1
echo $i
done | whiptail --title 'Test script' --gauge 'Running...' 6 60 0
Tenga en cuenta que la salida del script se interpreta como un porcentaje, por lo que puede que tenga que ajustar su salida en consecuencia.
Whiptail y Dialog también le permiten modificar el texto en tiempo de ejecución a través de una sintaxis bastante críptica:
phases=(
'Locating Jebediah Kerman...'
'Motivating Kerbals...'
'Treating Kessler Syndrome...'
'Recruiting Kerbals...'
)
for i in $(seq 1 100); do
sleep 0.1
if [ $i -eq 100 ]; then
echo -e "XXX\n100\nDone!\nXXX"
elif [ $(($i % 25)) -eq 0 ]; then
let "phase = $i / 25"
echo -e "XXX\n$i\n${phases[phase]}\nXXX"
else
echo $i
fi
done | whiptail --title 'Kerbal Space Program' --gauge "${phases[0]}" 6 60 0
pvmuestra el progreso de un archivo o secuencia que se canaliza a través de él. Sin embargo, no puede usarse (¿fácilmente?) Para mostrar el progreso de una operación personalizada, como un bucle. Está diseñado específicamente para transmisiones.
$ head -c 1G < /dev/urandom | pv -s 1G > /dev/null
277MB 0:00:16 [17.4MB/s] [========> ] 27% ETA 0:00:43
Algunos ejemplos del mundo real son pvútiles:
# progress while importing a DB dump
pv mybigfile.sql | mysql -uroot -p dbname
# importing straight from a remote server
ssh user@server 'cat mybigfile.sql.gz' | pv | gzip -cd | mysql -uroot -p dbname
# taking a snapshot of a btrfs partition
btrfs send /snapshots/$date | pv | btrfs receive /mnt/backup/root
No conozco ningún comando que proporcione barras de progreso de una línea en el estilo de pvo wget, pero hay muchos scripts simples de Bash / Perl / sed que agregarán esa funcionalidad, como otros han compartido aquí.