⏰
bashでタイマー作ってみた
macで指定時間後に音がなるタイマー使いたかったのですが、ブラウザ上のものだと音がならない事があったりした(ユーザアクションがないからjs実行できない?)ので、ターミナルでさくっと実行できないかと思い調べてみました。
実施環境
項目 | 詳細 |
---|---|
PC | MacBook Pro(14 インチ、2021)Apple M1 Pro |
OS | MacOS Ventura 13.4 |
できたもの
軽く調べてみたのですが、最終的にChatGPTに聞いたやつが一番優秀な気がした…それを少しいじったものがこちら。
# 関数定義部
countdown() {
local seconds=$1
while [ $seconds -gt 0 ]; do
echo -ne "残り時間: $seconds 秒\033[0K\r"
sleep 1
((seconds--))
done
echo "カウントダウン終了"
# 音を鳴らす
# Sounds内には他にもいくつか音がありました
afplay /System/Library/Sounds/Hero.aiff
}
# 実行部:カウントダウンの開始秒数を指定します
countdown 10 # 10秒のカウントダウン
-ne
オプション
オプション | 内容 |
---|---|
-n | 通常echoは必ず改行しますが、改行しないようにします。 |
-e |
\r などのエスケープシーケンスを解釈するようになります。 |
\033[0K\r
オプション | 内容 |
---|---|
\033 |
ANSIエスケープコードの始まりを表す(ESC を表す) |
[0K |
ESC[nK (nは数字)で行消去を表す。0の場合カーソルより後ろを消去 |
\r |
行の先頭に戻る |
カーソルより後ろを消去なら\033[0K
いらなくないか…と思ったんですが、実際削除しても動き変わりませんでした…ただ、調べた感じ複数サイトで必ずつけてたので、なにか理由があるのかもしれない…ちょっとわからないです、すみません。(環境でなにか変わる?)
保存
.bashrc
や.zshrc
に記述しておけばすぐに使えます。
nano ~/.bashrc
.bashrc(.zshrc)内に関数定義部分を追記。
countdown n
まとめ
mac標準の時計アプリ使えばそれで済んだ
Discussion