背景
Macでタイマー使おうと思ったら標準で無く、App Storeにある海外製の無料のを入れるのも..と思いシェルスクリプトで作成
ちなみに今回1回で終わりでなく、ループして一定の時間で繰り返し教えてほしかった
完成図
最低限でざっと作ってこんな感じ
ざっくり時間が分かれば十分で、指定時間が過ぎると標準サウンドのGlassを2回鳴らすようにしました
コマンドとコード
適当な場所にスクリプトを置いて、下記で実行(※9分ごとに音を鳴らす例)
オプションで「-l」をつけるとループで実行します(getoptsの仕様なのか、オプションを「9」の後につけるとダメでした)
sh min_timer.sh -l 9
min_timer.sh
# !bin/bash
## オプション(ループ指定)解析
loop='FALSE'
while getopts l OPT
do
case $OPT in
'l' ) loop='TRUE' ;;
esac
done
shift $(($OPTIND - 1))
## タイマー指定時間
minutes=$1
while :
do
clear
## 開始時間と終了時間を表示
echo "***** `date +%H:%M` -> `date -v+${minutes}M +%H:%M`\n"
for i in `seq 1 ${minutes}`
do
## 残り時間を表示(毎分)
num=$(($minutes - $i + 1))
echo "残り${num}分"
sleep 60
done
## アラーム(下記の場所に他の標準サウンドもありました)※-vオプションで音量調整できます
afplay /System/Library/Sounds/Glass.aiff
afplay /System/Library/Sounds/Glass.aiff
## ループor終了
if [ "${loop}" = 'FALSE' ];then
exit 0
fi
done
最後に
今回ちょっと所用でざっと作りましたが、ひと手間加えたらポモドーロテクニックとかでも使えるかもと思いました(25分と5分で繰り返すようにするとか)
また、afplayは音楽ファイルを再生してるだけなので、いい感じのを用意したら気分が上がると思います