如何制作Mac终端弹出/警报? AppleScript的?

问题描述 投票:90回答:7

我希望能够让我的程序显示警报,通知,显示我的自定义文本。这是怎么做到的?此外,是否可以使用几个按钮设置变量?

与批次类似:echo msgbox""<a.vbs&a.vbs

macos popup terminal applescript alert
7个回答
186
投票

使用osascript。例如:

osascript -e 'tell app "Finder" to display dialog "Hello World"' 

用您想要的任何应用程序替换“Finder”。请注意,如果该应用程序是背景的,则对话框也将显示在后台。要始终显示在前台,请使用“系统事件”作为应用程序:

osascript -e 'tell app "System Events" to display dialog "Hello World"'

阅读更多关于Mac OS X Hints的信息。


58
投票

如果您使用的是具有Notification Center的任何Mac OS X版本,则可以使用terminal-notifier gem。首先安装它(你可能需要sudo):

gem install terminal-notifier

然后简单地说:

terminal-notifier -message "Hello, this is my message" -title "Message Title"

另见this OS X Daily post


50
投票

使用此命令从终端触发通知中心通知。

osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'

6
投票

如果答案为空,这会将焦点恢复到以前的应用程序并退出脚本。

a=$(osascript -e 'try
tell app "SystemUIServer"
set answer to text returned of (display dialog "" default answer "")
end
end
activate app (path to frontmost application as text)
answer' | tr '\r' ' ')
[[ -z "$a" ]] && exit

如果您告诉系统事件显示对话框,如果之前没有运行,则会有一个小延迟。

有关显示对话框的文档,请在AppleScript编辑器中打开标准添加词典或查看AppleScript Language Guide


2
投票

而我的15美分。 mac终端等的一个内线只是将MIN =设置为any和一条消息

MIN=15 && for i in $(seq $(($MIN*60)) -1 1); do echo "$i, "; sleep 1; done; echo -e "\n\nMac Finder should show a popup" afplay /System/Library/Sounds/Funk.aiff; osascript -e 'tell app "Finder" to display dialog "Look away. Rest your eyes"'

灵感结合更多命令的奖励示例;这将把一个mac放到备用睡眠状态的消息上:)然后需要sudo登录,一个乘法作为60 * 2两小时去了

sudo su
clear; echo "\n\nPreparing for a sleep when timers done \n"; MIN=60*2 && for i in $(seq $(($MIN*60)) -1 1); do printf "\r%02d:%02d:%02d" $((i/3600)) $(( (i/60)%60)) $((i%60)); sleep 1; done; echo "\n\n Time to sleep  zzZZ";  afplay /System/Library/Sounds/Funk.aiff; osascript -e 'tell app "Finder" to display dialog "Time to sleep zzZZ"'; shutdown -h +1 -s

1
投票

0
投票

我做了一个脚本来解决这个here。您不需要任何额外的软件。安装: brew install akashaggarwal7/tools/tsay 用法: sleep 5; tsay

随意贡献!

© www.soinside.com 2019 - 2024. All rights reserved.