Macのターミナルでタイマー作成(繰り返し機能も)


背景

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は音楽ファイルを再生してるだけなので、いい感じのを用意したら気分が上がると思います