whiptail jest fabrycznie zainstalowany na Ubuntu i wielu innych dystrybucjach i wyświetla elementy postępu na pełnym ekranie (ale nadal oparte na terminalu).
dialogjest nadzbiorem whiptail, więc ten przykład będzie działał równie dobrze z oboma. Zapewnia bardziej zaawansowane elementy interfejsu użytkownika, więc może się przydać, jeśli szukasz interakcji użytkownika, takiej jak selektory plików i formularze, ale ma tę wadę, że nie jest instalowany fabrycznie w wielu systemach.


for i in $(seq 1 100)
do
sleep 0.1
echo $i
done | whiptail --title 'Test script' --gauge 'Running...' 6 60 0
Zauważ, że wynik skryptu jest interpretowany jako procent, więc może być konieczne odpowiednie dostosowanie wyniku.
Whiptail i Dialog pozwalają również modyfikować tekst w czasie wykonywania za pomocą raczej tajemniczej składni:
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
pvpokazuje postęp pliku lub strumienia przesyłanego przez niego. Nie można go jednak (łatwo?) Wykorzystać do pokazania postępu niestandardowej operacji, takiej jak pętla. Jest zaprojektowany specjalnie dla strumieni.
$ head -c 1G < /dev/urandom | pv -s 1G > /dev/null
277MB 0:00:16 [17.4MB/s] [========> ] 27% ETA 0:00:43
pvPrzydaje się kilka przykładów ze świata rzeczywistego :
# 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
Nie znam żadnych poleceń, które dają paski postępu w jednym wierszu w stylu pvlub wget, ale istnieje wiele prostych skryptów Bash / Perl / sed, które dodadzą tę funkcjonalność, tak jak inni tutaj udostępnili.