web-dev-qa-db-ja.com

端末プログラムの実行が終了したときに警告しますか?

Xubuntu 15.04を実行していますが、この質問にはすべてのUbuntuフレーバーに対する一般的な解決策があるかもしれません。

私は通常、ターミナルウィンドウで長時間の計算を実行したままにします。これには数分から数時間、または数日かかる場合があります。ターミナルがコマンドの実行を終了したときに何らかの形でアラートを受け取ることができればいいですね。これは、最小化された端末にのみ必要です。

このようなものを設定する方法はありますか?理想的には、ターミナルウィンドウが点滅するか、通知が表示される場合があります。

23
becko

いくつかの方法があり、両方とも&&(論理AND)演算子(最後のコマンドが成功したときにのみ実行されます)を使用します。コマンドが成功したか失敗したかに関係なく通知を実行する場合は、;の代わりにセミコロン&&を使用します。

  1. グラフィカル

    myscript.sh && notify-send 'DONE'
    
  2. オーディオ:

    myscript.sh && aplay /usr/share/sounds/speech-dispatcher/test.wav
    

    ここで使用したものの代わりに、任意のオーディオファイルを使用できます。

  3. 両方:

     myscript.sh && aplay /usr/share/sounds/speech-dispatcher/test.wav && notify-send 'DONE !'
    
30

zenity を使用して、ポップアップを表示できます。

シェルコマンドの後に、追加します

&& zenity --info --text "STRING"
12
Bacon

Libnotifyのnotify-sendを通知に使用することをお勧めします。これを行うために、次のスクリプトを作成しました。

#!/bin/bash
$1 && \
notify-send -u critical -i info 'Command execution finished' "The command '$1' terminated successfully" || \
notify-send -u critical 'Command execution failed' "The command '$1' exited with errors"

上記のスクリプトを、たとえばnexecchmod +x nexecを使用して実行可能にし、シェルのPATH変数(たとえば、/usr/local/bin/)にプログラムを移動します。

nexec 'long-time-command some arguments'

例えば。

nexec 'Sudo apt-get update && apt-get dist-upgrade'

libnotifyは(少なくとも私のシステムではそうです、これは異なるデスクトップ間で異なる可能性があると思います)手動で(たとえばクリックすることで)却下されるまで「クリティカル」とマークされた通知を表示します。コードから取得できるように、コマンドがゼロ以外の結果を返す場合、別の通知を受け取ります。

4
s3lph

ndistract-me を聞いたことがありますか?それはあなたのニーズとそのコードに合っているようです github

パッケージはUbuntuの公式リポジトリにあると思うので、十分なはずです

Sudo apt-get install undistract-me

次に、変更を有効にし、簡単な方法でテストできるようにするために、使用している端末を閉じて再度開く必要があります。

sleep 11

アクティブなウィンドウを忘れずに変更してください。変更しないと、通知が表示されません。

4
MaxChinni