LoginSignup
1

More than 5 years have passed since last update.

ninja コマンドなどのビルド完了時に"ベル"を鳴らすなど任意の通知を受けとるらいふはっく

Posted at

仕込み

.zshrc や .bashrc などに以下のように仕込みを入れる(例は ninja に仕込み):

function ninja()
{
  env ninja $@
  R=$?
  echo -e '\a'
  return R
}

これで ninja hoge などすると結果の成否によらず"ベル"が鳴り、ビルド処理が終わった通知を簡単に受けられます。

解説

  • シェルに関数 ninja を定義するとパスのコマンドよりも優先される
  • ninja $@ はシェル関数に渡されたコマンドライン引数をそのまま ninja に渡している
  • ninja だけシェル関数内に書いたら再帰するので env ninja している
    • env の代わりに /usr/bin/ninja などしてもよい
  • R=@? で直前のコマンドの実行結果を変数 R として保存しておく
  • echo -e '\a' で "ベル" が鳴る(端末エミュレーターが対応していれば)
    • もちろん ogg123 notify.ogg& でも aplay notify.wav& でも構わない、対応できるなら
  • return R で本来の ninja の結果を関数の結果として返す
    • これをやらないと echo -e '\a'ogg123 notify.ogg& の成否が直前のコマンドの結果として返る事になり、ninja hoge && bin/hoge などが狂う事になる

だそく

  • 各種 linux 環境のほか、 msys2 + mingw-w64 の mintty でもこの方法で"ベル"を鳴らせる
  • ビルド開始から結果がでるまで時間が数十秒以上かかるプロジェクトを扱う場合におすすめのらいふはっく
    • もっと長くかかるプロジェクトの場合は"ベル"よりもある程度の長さの音楽やメール送信を噛ませてスマフォのバイブレーターで受けるとか応用するといいと思います

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1