背景
crontab在linux上常用来构造定期任务。mac系统使用osascript脚本可以启动对话弹窗。两者结合可以做一个mac系统的定期弹窗的小功能,会强制弹窗到当前桌面。以此作为一个非常重要的事情都可以添加到这里。
用法
编辑当前用户的crontab文件:
crontab -e
添加以下行到crontab文件中:
30 9 * * 1 /usr/bin/osascript -e 'display dialog "开会!"'
说明:
30 9 * * 1:在每周一(1)的早上9点30分(9点30分即9*60+30)执行下面的命令。
/usr/bin/osascript:这是macOS的AppleScript命令行工具。
-e ‘display dialog “开会!”’:这是AppleScript代码,用于显示一个包含文本"开会!"的对话框。
crontab用法简介
crontab -e #编辑
crontab -l #列出添加的所有cmd
crontab文件中的每行代表一个定时任务,格式:
minute hour day-of-month month day-of-week command
minute - 任务执行的分钟数,范围是0到59。
hour - 任务执行的小时数,范围是0到23。
day-of-month - 任务执行的月份中的日期,范围是1到31。
month - 任务执行的月份,范围是1到12(1代表1月,12代表12月)。
day-of-week - 任务执行的星期几,范围是0到7,其中0和7都代表星期天。
command - 要执行的命令。
例如,你之前提到的行:
30 9 * * 1 /usr/bin/osascript -e ‘display dialog “开会!”’
其含义如下:
30 - 任务在每小时的第30分钟执行。
9 - 任务在早上9点执行。
-
- 任务在每个月的每一天执行。
-
- 任务在每年的每一个月执行。
1 - 任务在每周的星期一执行。
/usr/bin/osascript -e ‘display dialog “开会!”’ - 这是要执行的命令,使用AppleScript显示一个对话框。
crontab文件中的每行可以包含多个时间字段,单个数字、范围、列表或特殊字符。例如:
- 任务在每年的每一个月执行。
- 表示每个时间单位。
- 表示一个范围,如1-5表示1到5。
, 表示列表,如1,3,5表示1、3和5。
/ 表示每多少个时间单位执行一次,如0/30表示每30分钟执行一次。
osscript各种弹窗简介
osascript 是 macOS 的命令行工具,用于执行 AppleScript 脚本。各种弹窗:
- 标准对话框 (display dialog)
display dialog "这是一个消息。"
- 带有输入字段的对话框 (display dialog with default answer):
display dialog "请输入您的姓名:" default answer ""
- 带有取消按钮的对话框 (display dialog with buttons):
display dialog "您确定要继续吗?" buttons {"继续", "取消"}
- 带有图标的对话框 (display dialog with with icon):
display dialog "警告!" with icon caution
- 多按钮对话框 (display dialog with default button and cancel button):
display dialog "您确定要删除吗?" buttons {"删除", "取消"} default button "删除" cancel button "取消"
- 设置对话框类型 (display dialog with as): 显示不同类型的对话框,如信息、警告等。
display dialog "这是一个信息对话框。" as information text
- 获取用户输入 (text returned of): 从对话框中获取用户输入的文本。
set userInput to text returned of (display dialog "请输入您的姓名:" default answer "")
- 处理按钮点击 (button returned of): 获取用户点击的按钮。
if button returned of (display dialog "您确定要继续吗?" buttons {"继续", "取消"}) is "继续" then
display dialog "您选择了继续。"
end if
- 显示进度条 (display progress bar): 显示一个带有进度条的对话框。
set theProgress to display progress bar "正在处理..." with label "请稍候"
delay 5 -- 模拟一个长时间的任务
complete progress bar theProgress
实操
打开编辑页面:
添加任务:
执行效果:
点击 好 之后 关闭
后记
灵活运用Mac笔记本的osscript功能与crontab可以构建出一些有意思且实用的功能。