Bashでコンソールプログレスバー

1-2.繰り返し
BRADIO-Flyers【TVアニメ「デス・パレード」OP曲】(OFFICIAL VIDEO)

アニメ『デス・パレード』(2015)
動画はBRADIOが歌うこのアニメのOPです。かっこいいんですよBRADIO。BRADIOの「Golden Liar」(2013)からハマって、後でアニメのこのOPもBRADIOの曲だと知り、永遠聞くようになりました。BRADIOはどの曲も本当に最高でファンキーなので聞いてみてください。
さてこのアニメですが、クイーンデキムというバーで、自分が亡くなった事を忘れている人たちが命を賭けてゲームをします。
異世界物アニメがブームにある中、設定が斬新だなあと思ったのが、魂の裁定っていうのが、天国と地獄ではないところ。
もっと残酷なのかもしれません。
魂が再生するか消滅するか、の裁定なんです。
再生が天国に当たるのか、地獄に当たるのかは感じ方は人それぞれでしょう。バーへやって来る人たちは、ゲームを終える頃には皆記憶を取り戻して感動が訪れます。

今回はバーを表示します。バーはバーでもプログレスバーですが。
引数に0〜20を指定することで、プログレスバー(*と_の組み合わせ)が表示できる関数仕様とします。関数名はpbにしました。progress barの略です。

takk~$ pb(){
> for i in `seq $1`;do echo -n '*';done
> for i in `seq $1 19`;do echo -n '_';done
}

では使ってみましょう。作成したpb関数は改行をしないので、改行するためのechoコマンドも合わせて実行します。

takk~$ pb 0;echo
____________________
takk~$ pb 5;echo
*****_______________
takk~$ pb 10;echo
**********__________
takk~$ pb 19;echo
*******************_
takk~$ pb 20;echo
********************
takk~$ 

これを連続して呼び出すと動いてるように見えます。1秒毎にpbを呼び出してみます。

takk~$ for i in `seq 20`;do clear;pb $i;sleep 1;done

progress-test

エスケープシーケンスを使って、表示位置を変更して、色もつけるとプログレスバーらしくなります。

takk~$for i in `seq 20`;do clear;echo -ne '\x1b[7;20H';pb $i | sed 's/\*/\x1b[44m \x1b[49m/g;s/_/\x1b[43m \x1b[49m/g';sleep 1;done

progress-color

コメント

タイトルとURLをコピーしました