Shell 任務完成的咆哮通知

Shell 任務完成的咆哮通知

(特定於 OSX)

我和許多其他人一樣,經常發現自己在 shell 中啟動一個需要一兩分鐘才能完成的進程(例如,一個大的 svn 提交)。在那段時間裡,我經常使用 alt-tab 並刷新 reddit/slashdot/wikipedia/whatever。如果能夠設定一些在 shell 進程結束時發出咆哮通知的東西,那就太好了。

在我的理想世界中,它會像這樣工作:“如果進程剛剛從終端中打開的選項卡退出,則發布咆哮通知。”

還有人有類似的設定嗎?

答案1

您可以安裝咆哮通知去做這個。

$ ./some_program && growlnotify Title -m Message

當然,在執行命令之前您需要考慮這一點。另一個選擇(雖然我不知道如何實現這一點)是對每個命令發出咆哮通知,這會非常煩人。


為了簡化您的用例的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

修改丹尼爾貝克的答案,如果你做這個輕微的改變,它會變得非常好。

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

然後,當您執行“long svn up”時,您將看到訊息“svn upcompleted”。

如果您同時執行許多耗時的 shell 腳本,那就太好了。

答案4

使用咆哮通知

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

相關內容