長い処理中に視覚的なフィードバックを提供するために、プログレスバーは非常に役立ちます。ユーザーにタスクの進捗状況を明確に示すことができます。Bashにはネイティブのプログレスバーサポートがありませんが、いくつかの外部ツールとライブラリが堅牢なソリューションを提供しています。このガイドでは、pv
コマンドの活用、dialog
コマンドの利用、ncurses
ライブラリの使用という3つの異なる方法について説明します。
目次
pv
を使用したプログレスバー
pv
(パイプビューア)コマンドはデータストリームの監視に優れており、ファイル転送や同様のデータ集約型の操作の進捗状況の可視化に最適です。そのシンプルさと有効性は大きな利点です。
インストール:
pv
は、ほとんどのLinuxディストリビューションのパッケージマネージャーで容易に入手できます。ディストリビューション固有のコマンドを使用してインストールします(例:Debian/Ubuntuではsudo apt-get install pv
、CentOS/RHELではsudo yum install pv
、Arch Linuxではsudo pacman -S pv
)。
使用方法:
基本的な構文は簡単です。
pv input_file > output_file
input_file
をソースファイルに、output_file
を目的の宛先に置き換えます。pv
は、転送レートと推定完了時間を示すプログレスバーを動的に表示します。
例:
プログレスバーを使用して大きなファイル(large_file.zip
)をコピーするには、次のコマンドを使用します。
pv large_file.zip > copied_large_file.zip
pv
の柔軟性はファイルコピー以外にも及びます。データストリームを生成するコマンドとシームレスに統合されます。たとえば、tarアーカイブの抽出を監視するには、次のコマンドを使用します。
tar -xvf large_archive.tar | pv > /dev/null
ここでは、/dev/null
によって抽出されたファイルは破棄され、進捗状況の監視のみに焦点を当てています。
dialog
を使用したプログレスバー
dialog
コマンドは、汎用性の高いプログレスバーを含む、より幅広いインタラクティブなダイアログボックスを提供します。pv
と比較してバーの外観をより詳細に制御でき、データストリームに限定されません。
インストール:
pv
と同様に、dialog
は通常、ディストリビューションのパッケージマネージャーから入手できます(例:sudo apt-get install dialog
、sudo yum install dialog
、sudo pacman -S dialog
)。
使用方法:
dialog
のプログレスバーは--gauge
オプションを使用します。タイトル、最大値(100%)、現在の値を指定します。スクリプトは現在の値を繰り返し更新します。
例:
このスクリプトはプロセスをシミュレートし、プログレスバーを表示します。
#!/bin/bash
for i in $(seq 1 100); do
dialog --gauge "処理中..." 10 60 $i
sleep 0.1
done
dialog --infobox "処理完了!" 10 30
このスクリプトは100回ループし、プログレスバーを増分します。sleep 0.1
はデモのために遅延を追加します。chmod +x your_script.sh
を使用してスクリプトを実行可能にします。
ncurses
を使用した高度なプログレスバー
最大限のカスタマイズと制御のために、ncurses
ライブラリは比類のない柔軟性を提供します。ncurses
は端末出力を直接操作するため、高度に調整されたプログレスバーを作成できます。ただし、このアプローチには、プログラミングとncurses
関数の深い理解が必要です。
インストール:
ncurses
は多くの場合、事前にインストールされています。インストールされていない場合は、ディストリビューションのパッケージマネージャーを使用してインストールします(例:sudo apt-get install libncurses5-dev
、sudo yum install ncurses-devel
、sudo pacman -S ncurses
)。
使用方法:
複雑さのため、完全なncurses
の例はこのガイドの範囲外です。このプロセスには、ncurses
の初期化、mvprintw
などの関数を使用したバーの描画、その反復的な更新、そして最後にncurses
のクリーンアップが含まれます。カーソルの位置を手動で管理します。C言語またはその他の言語に関する多くの詳細なncurses
チュートリアルがオンラインで提供されています。これらをBashに適合させるには、注意深い配慮が必要です。
この記事では、Bashプログレスバーを作成するための3つのアプローチを紹介しました。ニーズとスキルに最適な方法を選択してください。pv
は単純なタスクに最適です。dialog
はより多くの制御を提供します。ncurses
は究極のカスタマイズを提供します。