applescript 可直接驱动 macos 终端新建窗口、切换标签页、加载预设描述文件并顺序执行命令;需通过 terminal 的 applescript 词典接口(如 do script、create window)操作,且描述文件名须与偏好设置中完全一致。

AppleScript 能直接驱动 macOS 终端新建窗口、切换标签页、加载预设描述文件,并在其中顺序执行命令,无需人工干预。关键不是靠 shell 拼接,而是调用 Terminal 自带的 AppleScript 词典接口,比如 do script、create window、set current settings。
确认终端支持脚本化并查看可用命令
Terminal 是原生可脚本化应用。验证方法:打开“访达”,进入 /应用程序/实用工具,将“终端”图标拖到“脚本编辑器”图标上。若弹出词典窗口,说明接口就绪,里面列有核心命令和对象定义(如 window、tab、settings set)。
- 每个新窗口默认带一个 tab;可用 do script 在指定 tab 中运行命令
- 描述文件(Profile)决定字体、颜色、快捷键等行为,必须提前在“终端 > 偏好设置 > 描述文件”中创建好,且脚本中引用的名称须完全一致(区分大小写)
- 脚本中不能直接使用中文路径或含空格路径,建议用 quoted form of 包裹,或先用 do shell script 处理路径
批量新建带配置的终端窗口与标签页
以下脚本会新建一个窗口,再添加三个标签页,分别设置不同描述文件并运行对应命令:
Apple Silicon AI — 在 Mac Studio、Mac Mini、MacBook Pro 和 Mac Pro 上运行大语言模型(LLM)、图像生成、语音转文字及嵌入(embeddings)。将您的 Apple Silicon 设备…
- 第一个 tab:使用 “Pro” 描述文件,进入项目目录并清屏:cd ~/project && clear
- 第二个 tab:使用 “Basic” 描述文件,实时跟踪系统日志:tail -f /var/log/system.log
- 第三个 tab:使用 “Homebrew” 描述文件,进入部署目录并执行同步脚本:cd ~/deploy && ./sync.sh
脚本中需用 tell application "Terminal" 显式控制,并通过 set custom title 为每个 tab 设置易识别标题,方便后续定位。
从命令行或自动化流程中调用脚本
写好的 AppleScript 不必只在脚本编辑器里运行,还可灵活集成:
- 保存为 .scpt(编译格式)或 .applescript(纯文本),用 osascript MyTask.scpt 直接执行
- 内联单行命令也支持,例如:osascript -e 'tell app "Terminal" to do script "ls -la"'
- 嵌入 Automator 工作流程:添加“运行 AppleScript”操作,把整段逻辑粘贴进去,保存为快速操作或菜单栏脚本
- 配合 launchd 实现定时触发,比如每早9点自动拉起开发环境终端组
常见问题与避坑提示
实际使用中容易卡住的地方集中在三类:
- 描述文件名不匹配:脚本里写的名称必须和“终端偏好设置”中“描述文件”列表里的标题一字不差(包括空格和标点)
- 窗口/标签索引错位:新建窗口后 tab 编号从 1 开始,但若已有其他窗口开着,window 1 可能不是你刚建的那个——建议先 activate 再操作,或用 create window 后立即操作其首个 tab
- 命令未等待完成就继续:AppleScript 默认不阻塞,do script 发出即返回。如需串行等待(比如等 rsync 结束再发通知),得改用 do shell script + delay 或监听进程状态










