仕込み
.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 でもこの方法で"ベル"を鳴らせる
- ビルド開始から結果がでるまで時間が数十秒以上かかるプロジェクトを扱う場合におすすめのらいふはっく
- もっと長くかかるプロジェクトの場合は"ベル"よりもある程度の長さの音楽やメール送信を噛ませてスマフォのバイブレーターで受けるとか応用するといいと思います