1. ホーム
  2. bash

[解決済み] シェルスクリプトにプログレスバーを追加するには?

2022-03-20 04:35:49

質問

bash などの *NIX のシェルでスクリプトを書く場合、数秒以上かかるコマンドを実行中に、プログレスバーが必要です。

例えば、大きなファイルのコピー、大きなtarファイルのオープンなど。

シェルスクリプトにプログレスバーを付けるには、どのような方法がありますか?

どのように解決するのですか?

行を上書きすることで実装できます。 使用方法 \r を書かずに行頭へ戻る場合は \n を端末に送信します。

書く \n をクリックすると、行が進みます。

使用方法 echo -ne にします。

  1. 印刷しない \n
  2. のようなエスケープシーケンスを認識するために \r .

以下はデモです。

echo -ne '#####                     (33%)\r'
sleep 1
echo -ne '#############             (66%)\r'
sleep 1
echo -ne '#######################   (100%)\r'
echo -ne '\n'

下のコメントでpukさんは、長い行で始めてから短い行を書きたい場合、この "fails" について触れています。この場合、長い行の長さを上書きする必要があります(例えば、スペースで)。