读写 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
killall 重启,必要时注销再登录。defaults read 或 export 就 write/delete,改错键后无法恢复原值;delete 域 会删除该域所有自定义键,影响尤其大,只想恢复一项时指定键名。defaults write 域 键 1 可能存成字符串;明确加 -int 1、-bool true、-string 1。cfprefsd 会缓存偏好,直接编辑文件可能被覆盖;用 defaults 命令或应用自身设置界面。~/Library/Preferences;找不到时查容器目录,别在错误的 plist 上反复改。defaults read 甚至显示被管理值;先确认设备管理策略。osascript — 用脚本配合偏好修改后的界面操作。launchctl — 让配置在登录或开机时自动应用。screencapture — 截图路径和格式也存放在偏好域。security — 钥匙串与偏好中的凭据边界。reg、注册表指南 — 对照 Windows 的配置存储。合上页面,先回答,再展开对照。
com.apple.finder 的偏好后为什么没有立刻生效?怎样让它生效?~/Library/Preferences 下的 plist 文件?killall Finder 重启,或注销后重新登录。defaults export 域 备份.plist;恢复用 defaults import 域 备份.plist,再重启对应应用。cfprefsd 会缓存并在之后回写偏好,直接改文件可能被覆盖或与缓存不一致;应使用 defaults 或应用设置界面。
小程序版
微信扫码,随时查命令