実行の進行状況を表示し、完了したら行を置き換える機能を作成します。

実行の進行状況を表示し、完了したら行を置き換える機能を作成します。

インストール手順がまだ進行中であることを示したいと思います。だから、毎秒現在の行に点を追加します。

各インストールフェーズにこの進捗機能を追加できるように、その機能を作成できますか?

#!/bin/bash
echo "Step 1: Apt-get update"
while :;do echo -n .;sleep 1;done &
trap "kill $!" EXIT
sudo apt-get update 2>&1 >/dev/null
kill $! && trap " " EXIT

echo "Step 2: Apt-get upgrade"
sudo apt-get upgrade -y 2>&1 >/dev/null
# Also show progress

進行が完了したら、現在の行を次に変更したいと思います。

Step 1: Apt-get update finished

その後、次のステップが実行されます。

ベストアンサー1

すべての進行状況情報を同じ行に保持できる場合は、\r次の方法を使用できます。

#!/bin/bash

echo -n "Step 1: Apt-get update"
while :;do echo -n .;sleep 1;done &
trap "kill $!" EXIT
sudo apt-get update 2>&1 >/dev/null
kill $! && trap " " EXIT
echo -e "\rStep 1: Apt-get update finished"

これにより、「ステップ1...」と同じ行にピリオドが表示され、その行は「完了」メッセージに置き換えられます。すべての点を含めるために、「完了」の後に引用符の中にスペースを追加できます。また、ポイント数を計算して改行を防ぐこともできます(出力と比較して数字を追跡して$COLUMNS)。

apt-getログ出力を完全に削除するよりもファイルに書き込むことをお勧めします。特に、このupgrade場合に発生する可能性のあるエラーを解決するには、出力が必要です。

apt代わりに使用する方が簡単な方法ですapt-get。素晴らしい進行状況バーを表示し、完了したらきれいに削除します。

おすすめ記事