whiptail viene preinstallato su Ubuntu e su molte altre distribuzioni e mostrerà elementi di progresso a schermo intero (ma ancora basati su terminali).
dialogè un superset di whiptail, quindi questo esempio funzionerà ugualmente bene con entrambi. Fornisce elementi dell'interfaccia utente più avanzati, quindi può tornare utile se stai cercando l'interazione dell'utente come selettori di file e moduli, ma ha lo svantaggio di non essere preinstallato su molti sistemi.


for i in $(seq 1 100)
do
sleep 0.1
echo $i
done | whiptail --title 'Test script' --gauge 'Running...' 6 60 0
Si noti che l'output dello script viene interpretato come percentuale, quindi potrebbe essere necessario modificare l'output di conseguenza.
Whiptail e Dialog consentono anche di modificare il testo in fase di esecuzione tramite una sintassi piuttosto criptica:
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
pvmostra l'avanzamento di un file o flusso che viene reindirizzato attraverso di esso. Non può tuttavia essere (facilmente?) Utilizzato per mostrare l'avanzamento di un'operazione personalizzata come un loop. È progettato specificamente per i flussi.
$ head -c 1G < /dev/urandom | pv -s 1G > /dev/null
277MB 0:00:16 [17.4MB/s] [========> ] 27% ETA 0:00:43
Alcuni esempi del mondo reale in cui pvè utile:
# 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
Non conosco alcun comando che fornisca barre di avanzamento di una riga nello stile di pvo wget, ma ci sono molti semplici script Bash / Perl / sed che aggiungeranno tale funzionalità, come altri hanno condiviso qui.