系统学习 macOS 学习路径:从 BSD 文件命令到系统、网络与开发维护

defaults

读写 macOS 应用的偏好设置(domain 与键),常用于脚本化配置。

补充说明

macOS 偏好按 domain 组织,例如 com.apple.dock、com.apple.finder;-g 或 NSGlobalDomain 表示全局域。defaults read 域 [键] 读取,write 写入,delete 删除,read-type 查看类型,export/import 整域备份与恢复。写入时要带类型标志,如 -bool、-int、-string、-array、-dict,否则字符串和数字可能存错类型。

边界:defaults 改的是用户偏好,不保证应用立即生效。多数应用启动时读取一次,必须退出重开;Dock、Finder 这类常驻进程要 killall 重启。沙盒应用的实际 plist 在 ~/Library/Containers/<bundle-id>/Data/Library/Preferences/,受 MDM 管理的键会覆盖本地写入。

常用示例

# 1. 先读再改;把整个域导出成 plist 作为备份
% defaults read com.apple.dock
% defaults export com.apple.dock ~/Desktop/dock-backup.plist

# 2. 显示 Finder 隐藏文件,然后重启 Finder 让设置生效
% defaults write com.apple.finder AppleShowAllFiles -bool true
% killall Finder

# 3. 查看某个键的实际类型,避免把整数写成字符串
% defaults read-type com.apple.dock tilesize

# 4. 删除自定义键,恢复应用默认行为
% defaults delete com.apple.dock autohide
% killall Dock

# 5. 读取全局域:深色模式存在时返回 Dark,浅色模式通常报键不存在
% defaults read -g AppleInterfaceStyle

# 6. 需要时从备份恢复整个域
% defaults import com.apple.dock ~/Desktop/dock-backup.plist
% killall Dock

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. 修改 com.apple.finder 的偏好后为什么没有立刻生效?怎样让它生效?
  2. 修改前如何备份一个域?恢复时用什么命令?
  3. 为什么不能直接编辑 ~/Library/Preferences 下的 plist 文件?
答案
  1. Finder 只在启动时读取偏好;用 killall Finder 重启,或注销后重新登录。
  2. 用 defaults export 域 备份.plist;恢复用 defaults import 域 备份.plist,再重启对应应用。
  3. cfprefsd 会缓存并在之后回写偏好,直接改文件可能被覆盖或与缓存不一致;应使用 defaults 或应用设置界面。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令