私が働いているところには、実行に時間がかかるコマンドがあります
コマンドの実行が終わったときに通知してくれるコマンド/ユーティリティはありますか?ポップアップウィンドウやちょっとした音でも良いのではないでしょうか
91 Utkarsh Sinha 2011-10-11
一般的には、コマンドを実行する前にこのことがわかっていれば、コマンドを起動するだけでOKです
command; command-after &
これは、前のコマンドが終了した後に(終了コードに関係なく)command-after
を実行します。&
はバックグラウンドで起動します
成功・失敗の出口を気にする場合は、それぞれ使用します
command && command-after-only-if-success &
command || command-after-only-if-fail &
コマンドが既に起動している場合は、ジョブコントロールを使用してコマンドを一時停止し、fg
を通知と一緒にチェインしてフォアグラウンドに戻すことができます
command
# enter Ctrl-z
fg ; command-after
さて・・・・この後に何をしたいかは、あなたの環境によります
どのシステムでも、“ターミナルベルを鳴らす “ことができます何が実際に動作するかは、あなたの正確なシステムによりますが (BSD vs. GNU Linux など)、
tput bel
でできるはずです。しかし、tput bel
でできるはずです。詳しくは “ring bell” で検索してみてくださいMac OS Xでは、AppleScriptを使ってFinderダイアログをポップアップさせることができました
osascript -e 'tell Application "Finder" to display dialog "Job finished" '
何か言ってもらえばいいのに
say "Job finished"
もしくはマウンテンライオンの通知システムを利用するとか
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"
Desktop Notifications Specification, such as Ubuntu and GNOME, there’s a notification system that you can trigger with
notify-send
(libnotify
の一部) を実装したデスクトップ環境でnotify-send "Job finished!"
KDEでは、例えば
kdialog
を使用していますkdialog --passivepopup 'Job finished'
128 slhck 2011-10-11
unix ライクなシステムでは、可聴ベルを鳴らすことができます
echo -e "\a"
21 trinth 2012-10-10
MacOS X用のシンプルなツールを作ってみました。https://github.com/vikfroberg/brb
Installation
$ npm install -g brb
Instructions
$ sleep 3; brb
8 Viktor Fröberg 2014-06-08
サウンド通知を取得するには、spd-say "Some text"
を使用することができます。例です
some-command; spd-say "Yo"
UPDATE
スピーチディスパッチャがプリインストールされていない場合は、経由してインストールすることができます
sudo apt-get install speech-dispatcher
6 milkovsky 2015-12-15
まさにこの目的のために ntfy
を書きました。これはクロスプラットフォームで、長い間実行されているコマンドが終了したときに自動的に通知を送ることができます
Pythonのpip
をお持ちの方(ほとんどのLinuxディストロやMacOSに搭載されています)は、インストールして自動通知を有効にする方法をご紹介します
$ sudo pip install ntfy
$ echo 'eval "$(ntfy shell-integration)"' >> ~/.bashrc
$ # restart your shell
http://ntfy.rtfd.io でチェックしてみてください
それに加えて、それも可能です
- 端末が前景にあるときに自動通知を抑制します (X11, iTerm2 & Terminal.app がサポートされており、デフォルトで有効になっています)
- クラウド型の通知(Pushover、Pushbullet、XMPP)を送信します
- を使用して、プロセス終了時に通知を送信します(前述の自動サポートではありません)
- 手動で通知を送信します (スクリプトでの使用に適しています)
5 Daniel Schep 2016-05-19
Cygwinのデスクトップ通知にnotifuを使い始めたばかりです。Windows用のコマンドライン通知アプリです
Example:
ls -l && /c/notifu-1.6/notifu64 /m "This is a simple Notifu message."
4 Ashutosh Jindal 2013-09-13
Linuxの場合は、通知用のコマンドを毎回入力しなくても自動的に行うことができるという気の利いた仕掛けがあります
最初に autokey をインストールします。これは、異なるキーストロークに対するアクションを定義するのに役立ちます
sudo apt-get install autokey-gtk
ここで、autokeyに新しいフレーズを定義し、ホットキーをAlt+Enterに割り当てます。このフレーズを追加します
; notify-send "Job finished!" &
#
1行目以降の改行が重要なので注意してください
また、ウィンドウフィルタを追加します。私はguakeとターミナルを使っています。他にも使っているターミナルがあれば何でも含めてください
.*(guake)|(Terminal).*
You’re done!!
これで、コマンドの通知を取得する必要があるときはいつでも、Enter/Return の代わりに Alt+Enter を使って実行できるようになりました
ソースは以下の通りです。http://dotpad.blogspot.in/2014/12/notification-when-command-finished.html
3 shivams 2014-12-27
他の回答ではすでに終了した仕事の通知を受け取る方法のほとんどをカバーしていますが、以下のような形式で質問されたので、私の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 :-("
そのため、コマンドが正しい終了コードを返してくれれば、最初のプッシュが実行されます。エラーが発生した場合は、2回目のプッシュが実行されます
Ofcは、Pushoverでユーザーを作成し、https://pushover.net/から通知を送信するアプリを登録する必要があります
お役に立てれば幸いです
3 Thatkookooguy 2015-06-23
対話型シェルとして csh や tcsh を使用している場合は、notify
コマンドを使用することができます
% long-running-command &
[1] 14431
% notify %1
%
(later, when the command finishes)
[1] Done long-running-command
bashでもset -b
やset -o notify
で同様の効果を得ることができます
これは、メッセージを印刷するだけなので、おそらくあなたの要件を満たしていないでしょう
1 Keith Thompson 2011-10-11
awk’ があるシステムでは試してみてください
awk 'BEGIN{ print "\a" }'
は、私のために働いてくれた唯一の人でした
1 Krzysztof 2015-09-04
npm
を使用している場合は、ノード通知器 がクロスプラットフォームのソリューションを提供します
notify -t "Agent Coulson" --icon https://raw.githubusercontent.com/mikaelbr/node-notifier/master/example/coulson.jpg -m "Well, that's new. "
Preview
- Linux KDE
- Windows
- Mac OS
- Growl
1 Édouard Lopez 2016-01-08
何年も前にこのスレッドに気づいていればよかった。私の解決策は基本的には 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 エスケープシーケンスです。メッセージが実行されたウィンドウのタイトルバーに表示されます
1 Edward Falk 2016-07-22
それで、これはかなり遅くなりましたが、私はこれを行うためのシステムを使い始めました。私はbashスクリプトを持っていて、それに後から渡されたコマンドが何であれ実行するようにしています
#!/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
1 SoWhat 2017-02-20
もう一つの可能性としては、alert
, Works on Linuxを使用することです
>any-command; alert
画像のように通知をしてくれます。アラートの通知
0 DTharun 2017-11-25
処理が終了するとAndroid携帯に通知が届くアプリを作ってみました
インストールして、コマンドの最後に;notifier.sh
を追加します
例えば、自分のコマンドがmake install
だった場合、自分のコマンドを作成します
make install; notifier.sh
0 Jolt151 2019-01-30
Zshを使用している場合は、zsh notifyが便利です
0 Azatik1000 2020-08-12