如何在MacOS的Google Chrome中通过自定义URL打开Terminal.app执行命令
在Mac上通过自定义URL触发Terminal执行指定命令的实现方案
这完全可行,以下是具体实现步骤:
1. 创建Automator快速操作(Quick Action)
- 打开「Automator」应用,选择创建「快速操作」
- 在左侧动作库中搜索并添加「运行AppleScript」动作
- 将默认的AppleScript代码替换为以下内容,按需替换
doSomeMagic为你的实际命令:
on run {input, parameters} set theURL to input as string -- 提取URL中://后的参数部分(比如terminal://test里的test) set cmdArg to text after "://" of theURL -- 拼接完整执行命令 set fullCmd to "doSomeMagic " & cmdArg -- 调用Terminal执行命令 tell application "Terminal" activate do script fullCmd in front window end tell return input end run
- 保存这个快速操作,命名为「TerminalCustomURLHandler」(名称可自定义)
2. 注册自定义URL Scheme
- 打开「系统设置」→「隐私与安全性」→「扩展」→「快速操作」,确保刚才创建的「TerminalCustomURLHandler」已勾选启用
- 用plist文件完成URL Scheme注册:
- 打开「文本编辑」,新建文件并粘贴以下内容,注意替换
CFBundleIdentifier为你的专属标识(比如com.yourname.terminalhandler),CFBundleURLSchemes里的terminal就是自定义的URL前缀:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleIdentifier</key> <string>com.yourname.terminalhandler</string> <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>Terminal Custom URL Handler</string> <key>CFBundleURLSchemes</key> <array> <string>terminal</string> </array> </dict> </array> </dict> </plist>- 将文件保存为
TerminalURLHandler.plist,保存路径选择「~/Library/LaunchAgents/」(若LaunchAgents文件夹不存在,手动创建即可) - 打开Terminal,执行命令加载该plist:
launchctl load ~/Library/LaunchAgents/TerminalURLHandler.plist - 打开「文本编辑」,新建文件并粘贴以下内容,注意替换
3. 测试自定义URL
- 在Safari或任何可输入URL的场景中,输入
terminal://test并回车 - 系统会弹出确认框,选择「允许」后,Terminal会被激活并自动执行
doSomeMagic test命令
注意事项
- 若命令需要管理员权限,可将AppleScript中的
fullCmd改为"sudo doSomeMagic " & cmdArg,执行时会要求输入密码 - 确保
doSomeMagic命令在Terminal的PATH范围内,否则需写入完整路径(比如/usr/local/bin/doSomeMagic) - 后续修改plist文件后,需先执行
launchctl unload ~/Library/LaunchAgents/TerminalURLHandler.plist,再重新加载生效
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

