命令完成后,有没有办法将终端带到前面?
Is there a way to bring terminal to front when command is finished?
有什么方法可以在命令完成时强制终端变为活动状态 window 运行?
如果 运行 冗长的命令或脚本在完成时以某种方式得到通知,这将非常有用。
或者,我可以在每次命令完成时通过 macOS 发送通知吗?
在 macOS 10.8+ 上,AppleScript 支持 display notification
命令显示通知(可选声音)。
这里有一个例子,使用sleep 3
来表示一个long-运行 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"'"'
}
注意:为了使其完全健壮,您必须确保可选参数 </code>、<code>
和 </code> 的内容不会破坏 AppleScript命令。</p>
<p>有了这个功能:</p>
<pre><code>sleep 3; notifyWhenDone
如果您还想在完成时 激活 Terminal.app
,请将以下选项附加到传递给 osascript
的参数中:
-e 'activate application "Terminal"'
.
另一件需要注意的事情:如果终端 window 或选项卡在后台发出哔哔声或响铃,它会弹起其 Dock 图标并用此类哔哔声的次数标记它或铃铛。当您切换到受影响的 window 或选项卡时,标志会被清除。
在 bash 中,您可以使用 echo ^V^G
(即 Control-V、Control-G)、echo -n $'\a'
或 printf "\a"
中的任何一个发出提示音。不知道 zsh.
有什么方法可以在命令完成时强制终端变为活动状态 window 运行?
如果 运行 冗长的命令或脚本在完成时以某种方式得到通知,这将非常有用。
或者,我可以在每次命令完成时通过 macOS 发送通知吗?
在 macOS 10.8+ 上,AppleScript 支持 display notification
命令显示通知(可选声音)。
这里有一个例子,使用sleep 3
来表示一个long-运行 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"'"'
}
注意:为了使其完全健壮,您必须确保可选参数 </code>、<code>
和 </code> 的内容不会破坏 AppleScript命令。</p>
<p>有了这个功能:</p>
<pre><code>sleep 3; notifyWhenDone
如果您还想在完成时 激活 Terminal.app
,请将以下选项附加到传递给 osascript
的参数中:
-e 'activate application "Terminal"'
.
另一件需要注意的事情:如果终端 window 或选项卡在后台发出哔哔声或响铃,它会弹起其 Dock 图标并用此类哔哔声的次数标记它或铃铛。当您切换到受影响的 window 或选项卡时,标志会被清除。
在 bash 中,您可以使用 echo ^V^G
(即 Control-V、Control-G)、echo -n $'\a'
或 printf "\a"
中的任何一个发出提示音。不知道 zsh.