2016-11-26 89 views
2

命令運行完成後,是否可以強制終端成爲活動窗口?命令完成後有沒有辦法讓終端前面?

運行冗長的命令或腳本時,這將是非常有用的以某種方式通知,當他們完成。

或者,可以通過我的MacOS每次發送通知的命令完成?

回答

3

在MacOS 10.8+,AppleScript的支持(具有聲音可選地)顯示通知的display notification命令。

下面是一個例子,使用sleep 3代表長時間運行shell命令:

sleep 3; osascript -e 'display notification "Done!" with title "Long-running shell command" sound name "Hero"' 

你可以在一個shell函數包裝這個功能,並把它添加到您的~/.zshrc文件:

notifyWhenDone() { 
    local msg=${1:-'Done!'} title=${2:-'Long-running shell command'} sound=${3:-'Hero'} 
    osascript -e 'display notification "'"$msg"'" with title "'"$title"'" sound name "'"$sound"'"' 
} 

注意:要使其完全健壯,您必須確保可選參數$1,$2$3的內容不會中斷AppleScript命令。

有了這個功能:

sleep 3; notifyWhenDone 

如果你也想激活完成Terminal.app,附加以下選項傳遞給osascript的參數:
-e 'activate application "Terminal"'

+1

感謝您的迅速回復! 編輯使它完美。 – tehp

2

另一件需要注意的事情是:如果有東西在背景中發出嗶嗶聲或在終端窗口或標籤上敲響鈴聲,它會反彈它的Dock圖標並用這些嗶嗶聲或鈴聲的數量加以標記。切換到受影響的窗口或選項卡時,徽章將被清除。

在bash中,您可以使用echo ^V^G(即Control-V,Control-G),echo -n $'\a'printf "\a"中的任意一個發出嘟嘟聲。不知道zsh。

+0

謝謝!很高興知道:) – tehp

+0

確實很高興知道; 'printf'\ a''符合POSIX標準,適用於所有主要類POSIX的shell,包括'zsh'。 – mklement0

相關問題