Linux Shell Scripting

Bash プログレスバー:強力な3つの方法

Spread the love

長い処理中に視覚的なフィードバックを提供するために、プログレスバーは非常に役立ちます。ユーザーにタスクの進捗状況を明確に示すことができます。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 dialogsudo yum install dialogsudo 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-devsudo yum install ncurses-develsudo pacman -S ncurses)。

使用方法:

複雑さのため、完全なncursesの例はこのガイドの範囲外です。このプロセスには、ncursesの初期化、mvprintwなどの関数を使用したバーの描画、その反復的な更新、そして最後にncursesのクリーンアップが含まれます。カーソルの位置を手動で管理します。C言語またはその他の言語に関する多くの詳細なncursesチュートリアルがオンラインで提供されています。これらをBashに適合させるには、注意深い配慮が必要です。

この記事では、Bashプログレスバーを作成するための3つのアプローチを紹介しました。ニーズとスキルに最適な方法を選択してください。pvは単純なタスクに最適です。dialogはより多くの制御を提供します。ncursesは究極のカスタマイズを提供します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です