Bashでプログレスバーを作成する
スクリプトの実行中に固定の時間を待つ必要がある場合、ユーザーにしばらく待つように通知するためにプログレスバーを作成する方が良いです。プログレスバーは、シンプルなBashスクリプトや「cv」や「dialog」などのいくつかの組み込みLinuxコマンドを使用して作成できます。Bashスクリプトを使用してプログレスバーを作成する方法は、このチュートリアルで示されます。
Bashでプログレスバーを作成する異なる例
このチュートリアルのこの部分では、Bashで進捗バーを実装する異なる方法が示されています。
例1: コマンドなしでシンプルなプログレスバーを実装する
以下のスクリプトを使用してプログレスバーを表示するBashファイルを作成します。プログレスバーは「#」文字と「sleep」コマンドを使用して表示されます。進捗バーを表示するために「printf」コマンドがここで使用されます。プログレスバーは4つの部分に分かれています。25%は1秒後に表示されます。50%は3秒後に表示されます。75%は2秒後に表示されます。100%は1秒後に表示されます。
#!/bin/bash
printf "\nWait to complete the task...\n\n"
#Wait for 1 second
sleep 1
#Print the first part of the progress bar
printf "[##### ] 25%% completed.\r"
#Wait for 3 seconds
sleep 3
#Print the second part of the progress bar
printf "[########## ] 50%% completed.\r"
#Wait for 2 seconds
sleep 2
#Print the third part of the progress bar
printf "[############### ] 75%% completed.\r"
#Wait for 1 second
sleep 1
#Print the last of the progress bar
printf "[####################] 100%% completed.\r"
printf "\n\nTask completed.\n\n"スクリプトを実行してから1秒後に次の出力が表示されます:
スクリプトを実行してから7秒後に次の出力が表示されます:
例2: 「Pv」コマンドを使ってプログレスバーを実装する
「pv」コマンドの完全な形式は「パイプビューア」です。これは、パイプを通過するデータの進行状況を監視し、データのサイズに基づいて進行状況バーを表示するために使用されます。このコマンドはデフォルトでシステムにインストールされていません。この例のスクリプトを練習する前に、「pv」コマンドをインストールするために以下のコマンドを実行してください:
sudo apt install pv大きなサイズのファイルを一つの場所から別の場所にコピーするために選択する必要があります。次のスクリプトを使用して、現在の場所から「/home/fahmida/temp/」の場所に「test.txt」ファイルをコピーするBashファイルを作成してください。「pv」コマンドはここで進捗バーを表示するために使用されます。進捗バーは「test.txt」ファイルのサイズに基づいて表示されます。
#!/bin/bash
echo "Copying file from one location to another location."
#Wait for 2 seconds
sleep 2
#Copy the file to the destination
cat test.txt | pv -s $(stat -c%s test.txt) > /home/fahmida/temp/test.txt
echo "File has been copied."スクリプトの実行が完了した後、次の出力が表示されます:
例3: 「ダイアログ」コマンドを使ったプログレスバーの実装
Bashでプログレスバーを実装するもう一つの方法は、「dialog」コマンドを使用することです。このコマンドは、ターミナルに見栄えの良いプログレスバーを表示するために使用できます。このプログレスバーを使用して、さまざまな種類のウィジェットを表示できます。このコマンドで表示されるプログレスバーのタスクは、Bashスクリプトによって制御できます。このプログレスバーは、システムにデフォルトでインストールされていません。システムにこのプログレスバーをインストールするには、次のコマンドを実行してください:
sudo apt install dialog次のスクリプトを使用して進捗バーを表示するBashファイルを作成します。このスクリプトでは「dialog」コマンドを使用し、「/etc/passwd」ファイルを「/home/fahmida/tempdir」位置にコピーするタスクが進捗バーで表示されます。進捗バーは5つの部分に分かれており、各部分は2秒ごとに表示されます。「dialog」コマンドの-titleオプションを使用して進捗バーのタイトルを表示します。「dialog」コマンドの-gaugeオプションを使用して、高さ10行、幅100文字の進捗バーを表示します。「タスクの完了を待っています」というメッセージが進捗バーの上に表示されます。
#!/bin/bash
#Initialize the counter
current_pos=0
(
#Define an infinite loop
for((;;))
do
cat <<EOF
delimiter
$current_pos
#Show the current counter value
cp /etc/passwd to /home/fahmida/tempdir ( $current_pos%):
delimiter
EOF
#Increment the counter by 20
(( current_pos+=20 ))
#Terminate from the loop when the counter value is more than 100
[ $current_pos -gt 100 ] && break
#Wait for 2 seconds after each increment
sleep 2
done
) | dialog --title "Copying file..." --gauge "Waiting to complete the task" 10 100 0スクリプトを実行してから6秒後に次の出力が表示されます:
スクリプトを実行してから10秒後に次の出力が表示されます:
結論
このチュートリアルでは、Bashスクリプトを使用して進捗バーを開発するさまざまな方法が示されており、Bashユーザーがプログラムで進捗バーを使用できるように支援します。




