著者:関 勝寿
公開日:2024年8月7日
キーワード: oneliner mac

ある時間にネット会議が始まる、という場合に、他のことで集中していると忘れてしまうため、たとえばスマホでアラームを設定することがある。そのような場合に、コマンドラインから特定の時間に音声で通知するように設定する方法をまとめる。

特定の時間に音声通知

Mac で何かをしゃべらせるためのコマンドはsayである。Windows で同等のことをするにはスクリプトを作成する方法がある。この記事では Mac のsayコマンドを使う前提で書く。

特定の時刻にコマンドを実行するにはatコマンドを使う。たとえば、16:00 に会議が始まることから、その5分前に「会議が始まるよ」としゃべらせるには、

say 会議が始まるよ | at 15:55

とする。明日の15:55にしゃべらせるには

say 会議が始まるよ | at 15:55 tomorrow

3日後の15:55にしゃべらせるには、現在時刻が15:55よりも前の場合は

say 会議が始まるよ | at 15:55 +3 days

として、現在時刻が15:55よりも後の場合には、

say 会議が始まるよ | at 15:55 +2 days

とする。つまり、at 15:55では「次の15:55」になるため、+n days とすることにより、「次の15:55からn日後の15:55」が指定される。特定の日付を指定するには、たとえば8月10日の15:55であれば

say 会議が始まるよ | at 15:55 August 10

とする。

atコマンドでスケジュールされたジョブを確認するには

atq

とすると、ジョブ番号と実行予定時刻が一覧される。その中から特定のジョブをキャンセルするには、

atrm <ジョブ番号>

とする。

毎週決まった時間に音声通知

1回きりの場合は at コマンドが便利であるが、毎週同じ時刻に繰り返すような場合にはcrontabを使うのが良い。crontab の書式は

分 時 日 月 曜日 コマンド

であり、それぞれのフィールドには次のような値を指定する。

  • 分 (0 - 59)
  • 時 (0 - 23)
  • 日 (1 - 31)
  • 月 (1 - 12)
  • 曜日 (0 - 7) (0または7は日曜日、あるいは sun, mon など)

ワイルドカードの*を使って任意の値を指定することができる。また、特定の間隔で実行したい場合には*/<間隔>という形式も使える。たとえば、毎週火曜日の11:45に「授業だよ」としゃべらせるには

45 11 * * tue say 授業だよ

とする。crontab を編集するためには

crontab -e

とする。デフォルトのエディタ(vi など)で編集できる。crontab というテキストファイルを作成して、それを読み込ませるには

crontab crontab

とする。crontab を表示するには

crontab -l

とする。crontab を削除するには

crontab -r

とする。