⏰
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