命令完成后,有没有办法将终端带到前面?

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.