在mac终端中安全修改.plist文件需分四步:一、用plutil -lint校验语法并-plutil -convert xml1转xml格式;二、用户偏好设置优先用defaults读写;三、任意plist可用plistbuddy直接增删改查;四、xml编辑后须plutil -convert binary1还原并再次-lint验证。

在Mac终端中安全、准确地修改.plist文件内容,需根据文件位置、权限类型和编辑深度选择对应工具,不能直接用vi或nano硬改二进制格式,否则会导致系统拒绝加载。
先确认plist文件类型和路径
执行file /path/to/file.plist查看实际编码格式——若显示“data”即为binary格式,【必须先转XML才能人工编辑】;若显示“XML”则可跳过转换步骤。
检查文件是否属于用户偏好设置域(如com.apple.xxx),这类文件统一存于~/Library/Preferences/,优先用defaults命令操作,避免手动定位出错。
方法一:用plutil做格式转换与语法校验
第一步:校验原始文件是否损坏——运行plutil -lint /path/to/file.plist,返回“OK”才可继续。
第二步:转成XML便于人工读写——执行plutil -convert xml1 /path/to/file.plist。这一步不可逆,但可随时用plutil -convert binary1恢复。
第三步:编辑完成后,务必再运行一次plutil -lint验证修改后语法,否则系统可能静默忽略整个文件。
方法二:用defaults修改用户偏好设置类plist
适用于~/Library/Preferences/com.apple.*.plist及第三方App注册的domain。
读取当前值:defaults read com.apple.Dock autohide
写入布尔值:defaults write com.apple.Dock autohide -bool true
写入字符串:defaults write com.apple.screencapture type -string "jpg"
【修改后必须重启对应进程,否则不生效】,例如Dock修改完需执行killall Dock。
方法三:用PlistBuddy精确编辑任意plist文件
PlistBuddy是唯一能直接操作binary plist且不破坏签名的原生工具,路径固定为/usr/libexec/PlistBuddy。
方法一:打印全部结构——/usr/libexec/PlistBuddy -c "print" /path/to/file.plist
方法二:新增字符串键值对——/usr/libexec/PlistBuddy -c "Add :MyCustomKey string 'hello'" /path/to/file.plist
方法三:修改已有键值——/usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName NewName" /Applications/App.app/Contents/Info.plist
注意:路径中含空格时,整个路径要用单引号包裹,否则命令会截断。
方法四:转XML后用文本编辑器人工修改
先用plutil -convert xml1转出XML格式,然后用open -e调用TextEdit打开,或用VS Code等支持XML高亮的编辑器。
编辑时注意保留<dict></dict>、<array></array>等闭合标签,删掉任一斜杠会导致plutil -lint报错。
保存后,立即执行plutil -convert binary1还原为系统默认格式,否则某些App启动时会拒绝加载该plist。











