15

ソース コンパイルや brew upgrade などの時間がかかるコマンドを実行するときは、通常、実行中のコマンドをずっと監視するのではなく、Web 検索などの他のことを行います。

コマンドが完了したら通知を受け取る方法はありますか?

brew upgrade | afplay /System/Library/Sounds/Submarine.aiff -v 10

上記のように Mac で afplay を試してみましたが、問題は a) パイプが原因で stdout が表示されない、b) 「brew upgrade」が終了するまで待つのではなく、コマンドの実行が開始された直後にサウンドが再生されることです。

何か提案はありますか?

4

8 に答える 8

23

brew upgrade && say brew upgrade done

コマンドを活用しsayてカスタム音声通知を取得する

一般的な例:

YOUR_COMMAND && say YOUR_COMMAND done

于 2016-11-22T18:13:20.143 に答える
12

ありがとうマーク。あなたは私に素晴らしいアイデアをくれました。

&&, || 気づいていない シェルの論理演算子も意味します。「&& afplay ..」は、「brew upgrade」がほとんどの場合に発生する 0 を返す場合にのみ機能するようです。afplay ..' は、'brew upgrade' がエラーを意味する 1 (またはゼロ以外の任意の値) を返した場合にのみ機能します。セミコロン「;」を使用することにしました そのため、作業が完了した後に「brew upgrade」が返されても、afplay はアラーム音を鳴らすことができます。

brew upgrade ; afplay /System/Library/Sounds/Submarine.aiff -v 10

編集: 高度な通知ツールを利用する .profile (または .bashrc) で次のコードを使用しますterminal-notifier

function brew { caffeinate -s brew $@; terminal-notifier -title 'Homebrew' -subtitle 'Finished' -message brew' '$1' '$2' '$3 -sound 'recv_mail' -contentImage '/Download/Any/Icon/beer_icon.png';}

ご注意ください:

  1. bash 構文では、左中かっこ '{' のに空白が必要です。
  2. caffeinateBrewが長時間動作している間にMacがスリープモードに陥るのを防ぐために使用されます。「caffeinate -s」を削除する場合は、関数名も変更する必要があります。
  3. brew で terminal-notifier をインストールできます。- contentImage はもちろんオプションです。
于 2013-11-12T01:04:54.303 に答える