【发布时间】:2015-07-13 01:07:39
【问题描述】:
通知中心通知是理想的,但咆哮、弹跳坞、声音等也可以(或者如果只能在 Terminal.app 中完成,我愿意切换回来)。 iTerm 中是否有一个选项可以打开通知,或者我应该在终端中的命令末尾键入什么?如果是后者,是否可以在进程开始后添加警报(例如,如果我意识到它需要的时间比我最初预期的要长,我不擅长猜测)。
【问题讨论】:
标签: macos terminal iterm iterm2
通知中心通知是理想的,但咆哮、弹跳坞、声音等也可以(或者如果只能在 Terminal.app 中完成,我愿意切换回来)。 iTerm 中是否有一个选项可以打开通知,或者我应该在终端中的命令末尾键入什么?如果是后者,是否可以在进程开始后添加警报(例如,如果我意识到它需要的时间比我最初预期的要长,我不擅长猜测)。
【问题讨论】:
标签: macos terminal iterm iterm2
快捷方式:⌥⌘ A 或:
Edit -> Marks and Annotations -> Alerts -> Alert on next mark
: iTerm 将密切关注您的终端(在右上角)。命令完成后会联系Notification Center。
命令已经启动,完成时间被低估了,我们不想取消命令或等待它完成。
(即长时间后brew update)
iTerm2 -> Install Shell Integration
请注意,在 iTerm2 重新启动之前,集成不会显示通知。
【讨论】:
您可以随时使用say 命令。
通常,当您在终端中运行较长的进程并想要更新时,您可以简单地使用此命令说出done 或error 或bazinga 之类的内容。
mvn clean install; say done
此命令构建java spring app,耗时较长,完成后会说出done。
【讨论】:
您可以在任何命令之后添加以下任何一项,命令和它之间使用分号:
afplay /System/Library/Sounds/Ping.aiff -v 2
osascript -e 'beep 3'
tput bel
或者,如果你喜欢通知中心
osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'
您还可以在您的个人资料中创建一个别名,称为notify,并将其添加到您的命令末尾。所以,在你的登录资料中
alias notify="tput bel"
然后
sleep 10; notify
或者,如果您启动命令并且它“挂起”,只需输入 notify 并点击 Enter,它会在命令结束时运行您的 notify 别名,例如
sleep 20
# wait 5 seconds before realising this will take 20 seconds
notify<Enter>
【讨论】:
osascript -e 'display notification "Task finished" with title "Terminal"' 我似乎收到此错误2015-05-04 12:34:23.227 osascript[30467:1130887] Error loading /Users/mmarotta/Library/ScriptingAdditions/List & Record Tools.osax/Contents/MacOS/List & Record Tools: dlopen(/Users/mmarotta/Library/ScriptingAdditions/List & Record Tools.osax/Contents/MacOS/List & Record Tools, 262): no suitable image found. Did find:
/Users/mmarotta/Library/ScriptingAdditions/List & Record Tools.osax/Contents/MacOS/List & Record Tools: no matching architecture in universal wrapper osascript: OpenScripting.framework - scripting addition "/Users/mmarotta/Library/ScriptingAdditions/List & Record Tools.osax" declares no loadable handlers.的第二部分
tput bel 很棒,因为它在通过例如连接到另一台机器时也可以工作。 ssh.
iTerm2 支持Growl 通知。您可以在每个配置文件设置中打开它。
在Preferences…->Profiles 中选择一个配置文件。
然后在Terminal 选项卡中有一个选项Enable Growl Notifications。
记得还要在Growl 首选项中启用iTerm 通知。
如果您想获得给定进程的通知,您可以尝试使用Triggers。您在配置文件设置的Advanced 选项卡中定义触发器。通过这种方式,您可以将 Growl 通知分配给流程的特定输出(正则表达式)。
例如,您可以这样做:
$ mycommand; echo "end-of-my-process"
并将触发器连接到“我的进程结束”消息。
更新
在iTerm2.com 上阅读有关触发器的更多信息。
【讨论】:
[download] 100% of 40.13MiB in 00:13,但它完成的每个文件都会重复此行。我会为“我的进程结束”字符串输入什么?当我的默认 shell 提示符 ~ > 再次出现时,我可以触发吗?
iTerm 发送新终端输出通知,终端输出结束。这适用于某些进程。我建议的所有流程的工作方式。 “我的进程结束”消息可以是任何唯一的字符串。以独特的方式使其不会被您的流程打印。可能是字面上的“我的流程结束”文本。您必须在触发器定义中输入完全相同的字符串并向其附加通知。我不知道它是否适用于 shell 提示符。你必须自己尝试一下。
echo "end-of-""my-process"。只有当进程完成时,它才会匹配“我的进程结束”文本。
有一个OSS工具叫noti。
您可以使用brew install noti 轻松安装它,然后只需在命令前加上noti 前缀即可开始使用它,例如noti sleep 3。
【讨论】:
您也可以使用terminal-notifier,它使用 mac os 系统通知。要通过 Home brew 安装它:
$ brew install terminal-notifier
然后,如果您想在工作/流程完成时显示通知,请使用类似的内容
$ <your job/process command> && echo 'Completed' | terminal-notifier -sound default
这个显示是这样的:
您还可以更改通知的声音和图标。更多信息在 github repo:https://github.com/julienXX/terminal-notifier
【讨论】:
安装 iTerm2 shell 集成
curl -L https://iterm2.com/shell_integration/install_shell_integration_and_utilities.sh | bash
执行您的命令并连接注意力应用,例如
./task && ~/.iterm2/it2attention once
一旦工作完成,它会导致 iTerm 应用反弹它的图标。
您还有其他注意选项:
$ .iterm2/it2attention -h
Usage:
it2attention start
Begin bouncing the dock icon if another app is active
it2attention stop
Stop bouncing the dock icon if another app is active
it2attention once
Bounce the dock icon once if another app is active
it2attention fireworks
Show an explosion animation at the cursor
【讨论】: