可用open -b加Bundle ID精准启动App,如open -b com.tencent.xin唤起微信;支持-n新开实例、-w等待窗口就绪,且不受应用名汉化或重命名影响。

想在Mac终端里不点图标、不翻启动台,直接用应用的名字(比如“微信”或“石墨文档”)就把它唤出来?关键不是记路径,而是用系统认得的唯一身份——Bundle ID来精准调用。
先查出目标App的Bundle ID
Bundle ID是每个macOS应用的身份证,格式类似com.tencent.xin或com.apple.TextEdit。查不到它,-a参数就无从下手。
方法一:用osascript命令快速获取(推荐)
在终端输入:osascript -e 'id of app "微信",回车后立刻返回com.tencent.xin。【注意:引号里的名字必须和程序坞/启动台中显示的完全一致,大小写敏感,不能多空格】
方法二:用mdls命令从.app包里读取
执行:mdls -name kMDItemCFBundleIdentifier -r /Applications/WeChat.app,适用于你已经知道安装路径的情况。
方法三:手动打开Info.plist查看
右键WeChat.app → 显示包内容 → 进入Contents文件夹 → 用文本编辑器打开Info.plist → 搜索CFBundleIdentifier,它的值就是Bundle ID。
用open -b按Bundle ID启动应用
这是最稳定、最底层的启动方式,绕过名称匹配逻辑,直接命中系统注册表中的App记录,哪怕应用名被汉化或重命名也不影响。
第一步:在终端输入open -b com.tencent.xin,回车即可拉起微信主进程。
第二步:如果该App已运行,open -b默认会把它唤至前台;若想强制新开一个独立实例(如同时登录两个微信),必须加-n参数:open -n -b com.tencent.xin。
第三步:启动后若需等待App完成初始化(例如自动化脚本中要等窗口渲染完毕),可追加-w参数:open -w -b com.apple.TextEdit。这会让终端卡住直到Text编辑器主窗口就绪才返回提示符。
常见问题速查
启动失败提示“No application knows how to open URL”?说明Bundle ID输错了,或该App未正确注册到Launch Services——可尝试先双击打开一次原应用,再运行open -b命令。
想启动的是开发版或测试版App(比如WeChat2.app)?只要它的Info.plist里CFBundleIdentifier已改成唯一值(如com.tencent.xin2),就完全可以用open -b com.tencent.xin2调用,和正式版互不干扰。
Bundle ID含特殊字符(如.、-)?不需要转义,直接写进命令就行,open -b com.example.my-app是合法的。

















