我需要一种方法来在终端触发蜂鸣时触发咆哮通知。
理想情况下,我希望有一种方法可以捕获终端输出(比如说从 SSH 服务器捕获终端输出),并有条件地使用 Growl 处理它。
有任何想法吗?
答案1
一个有趣的问题,但答案相当开放。你想捕捉哪种哔哔声?你想处理什么输出?错误?还是流程完成?
发出咆哮通知是用于发布 Growl 通知的命令行工具。它必须单独安装,可以在 Growl 磁盘映像的 Extras 文件夹中找到。
您可以使用unix trap 命令捕获脚本中的任何错误并使用 growlnotify 将输出发送到 growl。我不知道有什么方法可以捕获终端铃声,您必须捕获某些特定的 unix 信号。
要查看系统上有哪些信号,请kill -l
在终端中输入。上面链接的有关 unix trap 命令的文章列出了常见的 trap 信号。
如果你正在寻找一种方法来用咆哮来通知长时间运行的终端脚本的完成,这是有关 Mac OS X Hints 的解决方案。
如果您只想将所有终端输出重定向到 growl,可以修改 Mac OS X Hints 上的技术。将其放入您的 .profile、.bashrc 或 .zshrc 中。它会将您的命令输出重定向到 growl。
# Before a command execution
preexec() {
export PREEXEC_CMD="Command: $1"
$1 | growlnotify -n "Terminal" ${PREEXEC_CMD:-Some command}
}
我将把它留给读者作为练习,让读者添加逻辑以根据命令或任何参数有条件地进行重定向,因为我不知道您正在寻找什么“条件”。:)
答案2
你想要的可能是可能的,但我认为这个工具还不存在。作为开始自己开发它的地方,请查看弹跳期限(附带源代码)将蜂鸣声和铃声转换为码头反弹。似乎是您所寻求的确切行为,但输出略有不同。
答案3
使用 iTerm 作为您的终端模拟器,这是我所知道的唯一方法。它支持咆哮 :)
答案4
部分答案:从 Mac OS X Lion 10.7 开始,Terminal 在其 Dock 图标上显示一个标记,指示在非活动终端中写入的 BEL 数量。“非活动”表示终端窗口不是前端/活动窗口,或者终端不是多选项卡窗口中的选定选项卡。它还在选项卡中显示一个“铃铛”图标,以指示哪个终端发出了蜂鸣声(我建议即使您不使用多选项卡窗口也显示选项卡栏 - Lion Terminal 在那里显示了许多有用的新状态指示器)。如果 Terminal 不是前端应用程序,它在发出蜂鸣声时也会弹起其 Dock 图标。