Macのターミナルで時間がかかるコマンドが終了したら通知する

2019年4月24日

iTerm2

Mac で時間がかかるコマンドを実行し、コマンドが終了したら通知する方法を紹介します。コマンドを実行している間に他の作業をしていて、コマンドが終わっているかどうか何度も見に行くのが面倒だったので、通知してくれるようにしました。

目次

  1. julienXX/terminal-notifier をインストール
  2. marzocchi/zsh-notify
  3. zplug をインストール
  4. zplug で marzocchi/zsh-notify をインストール
  5. 動作確認

julienXX/terminal-notifier をインストール

ターミナルから通知を送ることができるツール julienXX/terminal-notifier をインストールします。

brew コマンドで入れられます。

$ brew install terminal-notifier

使い方はコマンドの後ろにパイプで terminal-notifier を渡すだけ。

$ echo 'Piped Message Data!' | terminal-notifier

marzocchi/zsh-notify

上記の方法でもコマンド終了時に通知を送ることはできますが、毎回パイプで渡すのは面倒です。zsh の marzocchi/zsh-notify プラグインを使うことでパイプを省略することができます。
インストール方法を見ると、プラグインマネージャーを使ったインストール方法が紹介されています。私はこれまで zsh のプラグインマネージャーを使っていなかったので、これを機に導入してみることに。

zsh のプラグインマネージャーを調べると、いくつか候補が。

antigen が定番っぽく GitHub のスターの数が一番多いですが、より改良が施されたとされる zplug を使ってみます。zplug は作者が日本人のようです。

zplug をインストール

インストール方法は zplug/zplug: A next-generation plugin manager for zsh を参考にします。

brew で入れられます。

$ brew install zplug

zplug で marzocchi/zsh-notify をインストール

.zshrc に以下のように書きます。

export ZPLUG_HOME=/usr/local/opt/zplug
source $ZPLUG_HOME/init.zsh
zplug "marzocchi/zsh-notify"
if ! zplug check --verbose; then
  printf 'Install? [y/N]: '
  if read -q; then
    echo; zplug install
  fi
fi

ターミナルを再起動すると zsh-notify をインストールするかを尋ねられます。y を選択すると、zsh-notify のインストールが始まります。私の環境では /usr/local/opt/zplug/repos/marzocchi/zsh-notify にインストールされました。

動作確認

ターミナルを起動し、sleep コマンドで動作確認してみます。しばらくして通知が送られてくれば成功です。

$ sleep 35

30 秒が長いと感じる方は、.zshrc に以下のように追記することでカスタマイズできます。詳しくはドキュメントをご確認ください。

zstyle ':notify:*' command-complete-timeout 15

次の記事では、zsh をいい感じに設定してくれる prezto をインストールする方法を紹介します。

iTerm2
zplug で prezto をインストールする

zsh の設定をいい感じにしてくれるツール prezto を zplug で管理する方法を紹介します。 前回の記事で z ...

続きを見る

-技術ブログ
-