私が働いている場所は、実行に時間がかかるコマンドがあります。
コマンドの実行が終了したときに通知するために使用できるコマンド/ユーティリティはありますか?それはポップアップウィンドウか多分少し音かもしれません。
一般に、コマンドを実行する前にを知っている場合は、次のコマンドで開始できます。
command; command-after &
これにより、command-after
after が実行されます(終了コードに関係なく)前のコマンドが終了しました。 &
はバックグラウンドで開始します。
成功または失敗の終了を気にする場合は、それぞれ以下を使用します。
command && command-after-only-if-success &
command || command-after-only-if-fail &
コマンドが already を開始した場合、ジョブ制御を使用してコマンドを一時停止し、fg
を通知と連鎖させてフォアグラウンドに戻すことができます。
command
# enter Ctrl-z
fg ; command-after
さて…これから何をしたいのかは、環境によって異なります。
任意のシステムでは、 "ベル"を端末ベル で鳴らすことができます。実際に動作するシステム(BSDとGNU Linuxなど)によって異なりますが、tput bel
で対応する必要があります。しかし、今のところ確実にテストできませんでした。詳細については、「ベルを鳴らす」を検索してください。
Mac OS Xでは、AppleScriptを使用してFinderダイアログをポップアップできます。
osascript -e 'tell Application "Finder" to display dialog "Job finished" '
あなたはあなたに何かを言わせることができます:
say "Job finished"
または、Mountain Lionの通知システムを使用できます。
Sudo gem install terminal-notifier # <= only need to do this once
terminal-notifier -message "Job finished!" -title "Info"
GNOME、 zenity
では、コマンドラインから呼び出されるGTKダイアログボックスを表示できます。 。このStack Overflowの質問も参照してください: linux のbashスクリプトからのメッセージボックスの表示。お気に入りのパッケージマネージャーからインストールできます。
zenity --info --text="Job finished"
一部のディストリビューションには、 xmessage
が含まれる場合があります。特にGTK環境では、 gxmessage
があります。
Desktop Notifications Specification を実装するデスクトップ環境では、UbuntuおよびGNOME、 notify-send
(libnotify
の一部)でトリガーできる通知システムがあります。
notify-send "Job finished!"
KDEはkdialog
を使用します。例:
kdialog --passivepopup 'Job finished'
UNIX風のシステムでは、可聴ベルを鳴らすことができます。
echo -e "\a"
私はMacOS X用に、これを正確に行う簡単なツールを作成しました。 https://github.com/vikfroberg/brb
インストール
$ npm install -g brb
説明書
$ sleep 3; brb
適切な通知を受け取るには、spd-say "Some text"
を使用できます。例:
some-command; spd-say "Yo"
Cygwinからのデスクトップ通知に notifu を使い始めました。 Windows用のコマンドライン通知アプリです。
例:
ls -l && /c/notifu-1.6/notifu64 /m "This is a simple Notifu message."
私は正確にこの目的のためにntfy
を書きました。これはcross-platformであり、長時間実行されるコマンドが終了したときに自動的にに通知を送信できます。
あなたがPythonのpip
(ほとんどのLinuxディストリビューションとMacOSがそれを持っている)を持っているなら、ここにそれをインストールして自動通知を有効にする方法があります:
$ Sudo pip install ntfy
$ echo 'eval "$(ntfy Shell-integration)"' >> ~/.bashrc
$ # restart your Shell
http://ntfy.rtfd.io でチェックしてください。
それに加えて、それはまたすることができます:
Linuxでは、毎回通知用のコマンドを入力しなくても自動的にこれを実行するための巧妙なトリックがあります。
最初にautokeyをインストールしてください。これは、異なるキーストロークに対するアクションを定義するのに役立ちます。
Sudo apt-get install autokey-gtk
それでは、autokeyで新しいフレーズを定義して、ホットキーをAlt + Enterとして割り当てます。このフレーズを追加:
; notify-send "Job finished!" &
#
最初の行の後の新しい行は重要です。
また、ウィンドウフィルタを追加してください。私はguakeとterminalを使います。他に使用している端末をすべて含めます。
.*(guake)|(Terminal).*
これで終わりです!
これで、コマンドの通知を受け取る必要があるたびに、Enter/ReturnではなくAlt + Enterを使用してコマンドを実行できます。
出典: http://dotpad.blogspot.in/2014/12/notification-when-command-finished.html
他の回答では、完成した仕事に関する通知を受け取る方法のほとんどがすでにカバーされていますが、あなたが以下のフォーマットであなたの質問をしたので私は2セントを与えたいと思います。
私が働いている場所は、実行に時間がかかるコマンドがあります。
私は同じ問題を抱えています。時には何かが15分間実行することができます。
私の.bashrcには以下の機能があります。
# Push a notification to your phone. can be handy if you're running a
# build and you want to be notified when it's finished.
Push() {
curl -s -F "token=PUSHOVER_TOKEN" \
-F "user=PUSHOVER_USER" \
-F "title=terminal" \
-F "message=$1" https://api.pushover.net/1/messages.json > /dev/null 2>&1
}
これは私の電話に通知をプッシュするためにPushoverアプリを使用します。こうすれば私は昼食に行くか、または会議に入ることができ、まだ私が去る前に私のコンピュータで始めた仕事の通知を受けることができる。
私はそれを次のように使います。
command_to_run && Push "yes! command finished successfully!" || Push "awww man! something failed :-("
そのため、コマンドが正しい終了コードを返した場合、最初のPushが実行されます。エラーが発生した場合、2番目のものが実行されます。
プッシュオーバーでユーザーを作成し、通知を送信するアプリを登録する必要があります https://pushover.net/
これが助けになることを願っています!
それでこれはかなり遅くなります、しかし私はこれをするためにシステムを使い始めました:私は後でそれに渡されるどんなコマンドでも実行するbashスクリプトを持っています
http://somesh.io/2017/02/19/get-notified-when-long-commands-are-done-executing-on-ubuntu/
#!/bin/bash
# file location : /usr/bin/n
set +e
# $@ executes whatever command is typed after the filename
$@
notify-send "Task Completed"
それから私は単にnを前に付ける
n bundle install
n npm install
対話型シェルとしてcshまたはtcshを使用している場合は、notify
コマンドを使用できます。
% long-running-command &
[1] 14431
% notify %1
%
(later, when the command finishes)
[1] Done long-running-command
set -b
またはset -o notify
を使ってbashで同様の効果を得ることができます。
メッセージが表示されるだけなので、これはおそらくあなたの要求を満たしていません。私はそれがウィンドウをポップアップしたりベルを鳴らすように設定できるとは思わない。
何年も前にこのスレッドに気付いたことを願います。私の解決策はslhckのものと基本的に同じでしたが、私はスクリプトを書きました。私はいつも使っています。共有するにはここに投稿してください。
#!/bin/bash
msg='all done'
quiet=false
if [ "$1" = '-q' ]; then quiet=true; shift; fi
if [ $# -gt 0 ]; then msg="$*"; fi
echo -ne "\x1b]0;$msg\a"
if [ -x /usr/bin/zenity ]; then
unset WINDOWID
exec zenity --info --text="$msg"
Elif [ -x /usr/bin/xmessage ]; then
exec xmessage -nearmouse "$msg"
Elif [ -x /usr/bin/osascript ]; then
if ! $quiet; then say "done" &; fi
osascript -e "tell application \"System Events\" to display dialog \"$msg\""
else
echo $msg
fi
ちょっとした説明:文字列"\x1b]0;$msg\a"
は、メッセージが実行されたウィンドウのタイトルバーにメッセージを入れるためのANSIエスケープシーケンスです。メッセージがどのウィンドウから来たのかを確認できると便利なことがあります。
'awk'があるシステムで試してください
awk 'BEGIN{ print "\a" }'
私のために働く唯一の人でした。
npm
を使用している場合、 ノード通知 はクロスプラットフォームソリューションを提供します。
notify -t "Agent Coulson" --icon https://raw.githubusercontent.com/mikaelbr/node-notifier/master/example/coulson.jpg -m "Well, that's new. "
私はあなたがあなたのコンピュータにつながれる必要がないようにプロセスが終わるときあなたのAndroid携帯電話に通知を送るアプリを作りました。
インストールしてから、コマンドの末尾に;notifier.sh
を追加します。
例えば、あなたのコマンドがmake install
であれば、あなたはあなたのコマンドを作るでしょう:
make install; notifier.sh