# 掌控 macOS 文件默认打开方式（一）

> 本文公开全文。

原文：https://utgd.net/article/21007

“打开方式不对”，已经从一句系统提示语升级为网络meme（迷因），用于调侃各种不恰当的处理方式。

而“打开方式不对”这个问题本身，其实还未被解决：同一种格式（拓展名）的文件在不同情景下可能需要更换打开方式，例如，同样是 Markdown 文件，一般用编辑器开启，但部分 Markdown 文件系参考文档，则更适合用 Marked 2 等预览工具开启——可惜，macOS 仅提供单个文件和所有文件两种选择范围，忽视了情景之切换。

虽说即便打开方式错了，也不过是关掉软件、重新开一次的功夫，但这种摩擦日积月累，在潜移默化中仍然会干扰工作。对于喜用纯文本的我而言，任务管理、笔记、文稿、参考文档咸用 Markdown 格式存储，每次都要手动选择打开方式，不满就在这个萨拉热窝爆发了。

如果你乐意，当然也可以逐个打开目标文件，在其属性窗口中修改打开方式，但此方法显然太繁琐。调整文件打开方式，料想应有几个自动化层级，而本系列文章，也循此线路：

- 脚本化阶段：通过脚本修改文件的默认打开方式，绕开限制过多的图形界面；

- 批量化理阶段：批量调整文件打开方式，同时不对其他文件产生任何影响；

- 文件自动化阶段：自动为目标文件夹内的文件设置打开方式，以求工作流程较为稳定后，可以免去部分人工操作。

以上三个阶段，恰好对对应了常见操作自动化的生命周期，也涉及到 AppleScript、Shortcuts、Automator、LaunchBar 和 Keyboard Maestro 等常见自动化工具，遂以掌控 macOS 文件默认打开方式为线，引出相关自动化探索的整套故事。

## 找到调整 macOS 文件打开方式的脚本

我在 UNTAG 的会员栏目中曾短暂提及，自动化主要有两个方向，要么依托真正的脚本（Script）、直接下命令，要么假借 GUI Scripting 模拟键鼠操作。之所以难以绕开脚本，盖多数自动化工具都支持运行脚本，且各个品种的脚本之间往往可以相互调用，打通一个，就总有办法移植到自己惯用的工具中。

而谈及修改文件默认打开方式时，各路玩家几乎穷尽了各种方法，有人模拟点击画面，有人取道系统配置文件，甚至有人挖出文件背后那长长的一串 Hash 值……只可惜，恐怕放出前述任何一个方案的代码（比如下图那样的），大概都会吓跑绝大多数读者，让人叹息：我还是乖乖手动点击吧！

我并未涉入上述方案过多，但已感到阻力重重。万幸，有过两本文件管理（信息管理）杂文集子的写作经验，我已经养成了凡事求诸元数据的习惯，我基本确定，打开方式是文件的元数据（属性）之一，既然如此，则应当可以从相对简明的 AppleScript 入手，而无需过问晦涩的数据或语法。

## 读懂 AppleScript 词典

开始前，需注意，最近几代的 macOS 权限控制严格，即便您使用系统自带的自动化工具，凡举涉及控制其他软件，基本都要先在系统隐私设置的“App Management”栏中为其开启自动化权限。

设置妥当后，可转入传统的自动化讨论。思考方式在于，文件本身有些抽象，但如果考虑日常处理文件的环境——Finder 或 System Events（系统事件），则有迹可循。相对于折腾配置文件或直捣 Hash 值，AppleScript 更贴近人类的思维方式，其语法也近乎于英语，基本上就是告诉某个软件或其他进程你想做什么——只要这些命令存在于它们的 AppleScript 词典中。实际尝试后，我发现 System Events 的词典条目下包含了文件的“default application”这一属性，从词典释义上看，这应当就是许多玩家遍寻不得的打开方式。

不妨验证一下。任意取一个文件，效仿上述词条的语法写一段获取文件 default application 属性的 AppleScript 代码，我发现内容与 Finder 文件信息中所显示的一致。这是一个好兆头。

```
tell application "System Events" to get default application of alias "目标文件的路径"
```

随后，我尝试在图形界面下修改了测试文件的打开方式，前述代码返回的属性值也随之改变；反过来，当我用 AppleScript 设置文件的 default application 属性时，Finder 图形界面中所示的内容也萧规曹随。

```
tell application "System Events" to set default application of alias "目标文件的路径" to alias "用以打开文件的软件的路径"
```

这些经验已经足够让我相信，AppleScript 足以修改任意文件的打开方式。

## 小结

本文从 AppleScript 入手，介绍如何调用 AppleScript 脚本修改文件的默认打开方式，从而避开低效的图形界面。这一小步可能效果不明显，但接下来关于批量修改和全自动操作的文章，将推倒文件操作中诸多藩篱，让人闭着眼睛或双击或回车打开文件，总能跳到合适的软件，仿佛和电脑心意相通。

诚然，要想到 AppleScript，得先意识到最终要修改的是文件元数据（属性）；而要修改文件属性，则要先想到 AppleScript 是最合适——有时是唯一——的方法。在思绪尚处混沌状态时，想到 AppleScript 和想到修改文件属性，简直就是先有鸡还是先有蛋的问题。自动化玩家总是处于这种尴尬的境地中，但真正的乐趣，也恰恰来自解决这些“知道就是知道，不知道想破脑袋也不知道”的问题。

---

[前往标准阅读页](https://utgd.net/article/21007?audience=web)
