whiptail
Ubuntuや他の多くのディストリビューションにプリインストールされており、全画面(ただし端末ベース)の進行要素が表示されます。
dialog
はのスーパーセットでwhiptail
あるため、この例は両方で同等に機能します。より高度なUI要素を提供するため、ファイルピッカーやフォームなどのユーザーインタラクションを探している場合に便利かもしれませんが、多くのシステムにプリインストールされていないという欠点があります。
for i in $(seq 1 100)
do
sleep 0.1
echo $i
done | whiptail --title 'Test script' --gauge 'Running...' 6 60 0
スクリプト出力はパーセンテージとして解釈されるため、それに応じて出力を調整する必要がある場合があります。
Whiptail and Dialogでは、かなりわかりにくい構文を使用して、実行時にテキストを変更することもできます。
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
pv
パイプ処理されているファイルまたはストリームの進行状況を示します。ただし、ループなどのカスタム操作の進行状況を表示するために(簡単に?)使用することはできません。ストリーム専用に設計されています。
$ head -c 1G < /dev/urandom | pv -s 1G > /dev/null
277MB 0:00:16 [17.4MB/s] [========> ] 27% ETA 0:00:43
役に立つ現実の例pv
:
# 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
pv
またはのスタイルで1行のプログレスバーを表示するコマンドは知りませんが、wget
他の人がここで共有しているように、その機能を追加する単純なBash / Perl / sedスクリプトがたくさんあります。