defaults 是 macOS 系统中一个非常强大的命令行工具,用于读取、写入和管理 macOS 的偏好设置(Preferences)。偏好设置是以 .plist 文件的形式存储在系统中的,defaults 命令可以方便地操作这些文件,而无需手动编辑它们。

1. 基本用途

defaults 命令主要用于:

  • 查看和修改应用程序的偏好设置。
  • 调整系统级别的配置选项。
  • 自动化配置任务,例如通过脚本批量修改设置。

偏好设置文件通常存储在以下路径:

  • 用户级别:~/Library/Preferences/
  • 系统级别:/Library/Preferences/

2. 常用语法

defaults 命令的基本语法如下:

defaults [操作] [域] [键] [值]

参数说明:

  • 操作:指定要执行的操作,例如 readwritedelete 等。
  • :指定目标偏好设置的域,通常是反向域名格式(如 com.apple.finder)。
  • :指定偏好设置中的键名。
  • :指定要写入或修改的值。

3. 常用操作

(1)查看偏好设置

使用 read 操作可以查看特定域或键的值。

  • 查看某个域的所有设置:

    defaults read <>

    示例:

    defaults read com.apple.finder
  • 查看某个键的具体值:

    defaults read <> <>

    示例:

    defaults read com.apple.finder AppleShowAllFiles

(2)写入或修改偏好设置

使用 write 操作可以添加或修改某个键的值。

  • 写入布尔值:

    defaults write <> <> -bool <true/false>

    示例:

    defaults write com.apple.finder AppleShowAllFiles -bool true
  • 写入字符串:

    defaults write <> <> -string "<值>"

    示例:

    defaults write com.apple.screencapture name -string "MyScreenshot"
  • 写入整数:

    defaults write <> <> -int <>

    示例:

    defaults write com.apple.dock tilesize -int 64

(3)删除偏好设置

使用 delete 操作可以删除某个键或整个域的设置。

  • 删除某个键:

    defaults delete <> <>

    示例:

    defaults delete com.apple.finder AppleShowAllFiles
  • 删除整个域:

    defaults delete <>

    示例:

    defaults delete com.apple.finder

(4)列出所有域

列出当前用户的偏好设置域:

defaults domains

4. 注意事项

  • 权限问题:某些系统级别的偏好设置可能需要管理员权限(使用 sudo)。
  • 重启生效:修改某些设置后,可能需要重启相关应用程序或系统才能生效。例如,修改 Finder 设置后可以使用以下命令重启 Finder:
    killall Finder
  • 备份数据:在修改系统设置之前,建议备份相关的 .plist 文件,以免出现意外问题。

5. 实际应用场景

(1)显示隐藏文件

启用 Finder 显示隐藏文件:

defaults write com.apple.finder AppleShowAllFiles -bool true
killall Finder

禁用:

defaults write com.apple.finder AppleShowAllFiles -bool false
killall Finder

(2)更改截图保存位置

将截图保存到桌面以外的目录:

defaults write com.apple.screencapture location ~/Documents/Screenshots
killall SystemUIServer

(3)调整 Dock 图标大小

将 Dock 图标大小调整为 36 像素:

defaults write com.apple.dock tilesize -int 36
killall Dock

6. 总结

defaults 命令是 macOS 中管理偏好设置的强大工具,适合高级用户和开发者用来定制系统行为或自动化配置任务。然而,由于它直接操作底层配置文件,因此在使用时需要谨慎,避免对系统造成不必要的影响。