- Published on
Bashで進捗・ロード中のアニメーション
- Authors
- Name
- Shou Arisaka / 有坂翔
LinuxコマンドラインのBashで、進捗・ロード中画面などに使えそうなアニメーションの実装をする方法についてのメモです。
"now loading..."みたいな、動く文字列っていうのは、どうやってBashで表現したら良いのでしょうか。
こんな感じ。
chars="/\\"
while :; do
for (( i=0; i<${#chars}; i++ )); do
echo -en "running... ${chars:$i:1}" "\r"
sleep 1
# Do something you like
. "/mnt/c/pg/detect_changes/detect_changes_in_a_directory_contacam.sh"
done
done
running... / と running...
の動きを一秒おきに繰り返して、ちゃんと動いてるよーってことを教えてくれつつ、コマンドラインは1行だけで動いてるので、途中でほかのメッセージが入ってきても読みやすいです。
また、こういうやり方もあります。
echo -ne '##### (33%)\r'
sleep 1
echo -ne '############# (66%)\r'
sleep 1
echo -ne '####################### (100%)\r'
echo -ne '\n'
こちらは、whileループを回してる間に恒久的にアニメーションを続ける先述のやり方と違って、 1から100まで進捗の度合いが決まっている場合に使用できます。
なので、ループの中で使うって言うより、スクリプトの合間合間に使う感じでしょうか。