Shell 任务完成时的 Growl 通知

Shell 任务完成时的 Growl 通知

(特定于 OSX)

我和许多其他人一样,经常发现自己在 shell 中启动一个需要一两分钟才能完成的进程(例如大型 svn 提交)。在此期间,我经常按 alt-tab 刷新 reddit/slashdot/wikipedia/whatever。如果能设置一个在 shell 进程结束时发出咆哮通知的功能就太好了。

在我理想的世界中,它会像这样工作:“如果某个进程刚刚从终端中打开的选项卡退出,则发出咆哮通知。”

还有其他人有类似的设置吗?

答案1

您可以安装发出咆哮通知去做这个。

$ ./some_program && growlnotify Title -m Message

当然,您需要在执行命令之前考虑到这一点。另一种选择(虽然我不知道如何实现)是为每个命令发出一个 Growl 通知,这会非常烦人。


为了简化您在使用案例中使用 growlnotify 的习惯,请编辑~/bash_profile并添加以下内容:

function long {
    $@
    /usr/local/bin/growlnotify Finished -m 'Done'
}

现在您可以简单地long your_command(类似于sudo)。Ctrl-A将光标置于行首,如果您(像我一样)总是先输入实际命令,然后需要添加前缀。

不幸的是,我的 bash-fu 不足以将命令添加到growlnotify消息中


根据@mankoff 对这个答案的评论:

您只需在命令运行时键入内容,它就会随后执行。我为自己创建了以下函数:

function gn {
    /usr/local/bin/growlnotify Finished -m "$@"
}

用于gn svn

答案2

您需要的是growlnotify用于触发咆哮通知的 CLI 程序。您可以将其用作:

./script.sh;; growlnotify -m "done"

它还有一些旋钮可供您使用,growlnotify -h用于获取更多信息

答案3

修改 Daniel Beck 的答案如果你做这个小小的改变它会变得非常好。

function long {
    command=$@
    $command
    /usr/local/bin/growlnotify Finished -m "$command completed."
}

然后当您运行“long svn up”时,您将看到消息“svn up 完成”。

如果您同时运行许多耗时的 shell 脚本,这非常好。

答案4

使用发出咆哮通知

ls && growlnotify -H localhost -m "message"

相关内容