実行したコマンドが終わったことを、 mac の通知で知らせる bash 関数を書いた。実は関数だけではできなかったので、 alias との組み合わせ。
$ heavycommand --bigoption ... # 終了時に終了ステータスとコマンド文字列が入った通知が出る: # 0 : "heavycommand --bigoption"
説明
長いことかかるコマンドが終わったことを、他の作業をしていても気付けるように mac の通知で知らせる。すぐに終わるコマンドでも同様に通知が出て嬉しい。
terminal-notifier
というツールがあり、タイトルとかメッセージとかを指定すると通知として出る。これに、実行したコマンド自体の文字列と、実行した結果の終了コードを渡す。
実行するコマンド自体の文字列を取るのが意外と難しくて、単純に関数の引数として取ったりすると、 alias とかが解決されていなくて、関数内で exec
とかしても実行できない場合がある。ので、 alias を使って、 $READLINE_LINE
を取る。これは bash の機能による変数のようで、プロンプトの後に打ち込んでいる最中の文字列がセットされる (reverse-search のカスタムに使ったりする)。これを参照すると、 alias や !$
のような bash の機能でのコマンド入力が、解決された状態で取れる。
nt
:$READLINE_LINE
でコマンド文字列を取り、関数_nt
に渡す_nt
: 渡された文字列を実行して、終了コードを取り、文字列と一緒に通知する
ntdosome
は、頻出長大コマンドの簡略 alias の例。環境変数は、 nt
の前でセットする。