macOS 系统中,文件的默认打开方式通常通过图形界面设置。然而,对于需要批量管理或精确控制的用户而言,使用命令行工具 duti 是一个高效的选择。原项目由 Andrew Mortensen 创建,发布于 2008 年,现已开源至 GitHub 并持续可用。

什么是 duti?

duti (Do Utility)是一个开源的命令行工具,专门用于配置 macOS 系统中文件类型与应用程序之间的关联。通过 duti,你可以设置特定文件类型、URL 协议等的默认打开方式。

安装 duti

首先确保已安装 Homebrew,如果没有可以先运行:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

然后使用以下命令安装 duti:

brew install duti

使用duti设置默认应用程序

获取应用程序的 Bundle Identifier

在设置默认应用前,需要知道目标应用的 Bundle Identifier。可使用以下命令获取:

mdls -name kMDItemCFBundleIdentifier -r /Applications/应用程序名称.app

例如:

mdls -name kMDItemCFBundleIdentifier -r /Applications/Sublime\ Text.app

输出示例:

com.sublimetext.3

获取文件类型的 UTI

UTI(Uniform Type Identifier)用于标识文件类型。使用以下命令可获取:

mdls -name kMDItemContentType -r 文件路径

例如:

mdls -name kMDItemContentType -r example.md

输出示例:

net.daringfireball.markdown

使用 duti 设置默认应用程序

设置命令格式如下:

duti -s <BundleID> <UTI或扩展名> all

示例:将 .md 文件默认设置为 Sublime Text 打开:

duti -s com.sublimetext.3 net.daringfireball.markdown all

示例:将 .txt 文件默认使用 Sublime Text 打开:

duti -s com.sublimetext.3 .txt all

批量设置默认应用程序

可以创建配置文件批量设置,示例如下:

创建设置文件(如 ~/.duti):

com.sublimetext.3 public.plain-text all com.sublimetext.3 public.python-script all com.sublimetext.3 net.daringfireball.markdown all

加载配置:

duti ~/.duti

其他功能示例

  • 设置 HTML 默认由 Safari 打开:
duti -s com.apple.Safari public.html all
  • 使用 echo 管道设置 Word 文档默认打开方式:
echo 'com.apple.TextEdit   com.microsoft.word.doc all' | duti
  • 设置 Finder 为默认 FTP 处理器:
duti -s com.apple.Finder ftp
  • 查询某文件扩展的默认应用:
duti -x jpg