Contents

ターミナルで処理が終わった際に通知や音を鳴らす

ターミナル上で少し時間がかかる処理を行っている際、別のアプリを開いたり何か違うことをする場合があると思います。 そんな時に音や通知で処理が終わったことを知れると便利ですね。

音を鳴らす

ターミナルアプリ上から音を鳴らすには afplay というコマンドを使用できます。 また、beep音だけでいいというなら、 tput bel も有効です。

System音が既にいくつか用意されているので、以下のコマンドで参照しているディレクトリをみてみると面白いです。 Hero.aiff という音を鳴らすには以下のコマンドを叩きます。

afplay /System/Library/Sounds/Hero.aiff

また、 .zshrc などのプロファイルに以下のエイリアスを登録しておけば、bellコマンドを実行するだけで音が鳴ります。

alias bell='afplay /System/Library/Sounds/Hero.aiff'

通知を表示する

ターミナルアプリ上から通知を表示するには osascript というコマンドを使用できます。 以下のコマンドを実行すると、 Terminal というタイトルで、 Process is done!" というメッセージが表示されます。 osascript -e 'display notification "Process is done!" with title "Terminal"'

.zshrcにエイリアスを登録するのは文字列区切りのシングルクォートの関係で難しいため、 .zshrcに関数を記述してそれをエイリアスとします。 以下のエイリアスを登録すると、 notify-done コマンドを実行すると通知が届きます。

_notify-done() {
  osascript -e 'display notification "Process is done!" with title "Terminal"'
}
alias notify-done=_notify-done

コマンドが終わった際に音と通知を表示する

コマンドを && で繋ぐとコマンドを直列で実行できます。(処理Aが終わったら処理B) & で繋ぐと並列になります。(処理Aと処理Bを同時に実行)

echoコマンドの後に音と通知を表示するには以下のコマンドが使えます。

echo "Something text" && (notify-done & bell)