我想使用命令行工具defaults
更改以下列表中DEFAULT_VALUE_PLACEHOLDER
的值
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreferenceSpecifiers</key>
<array>
<dict>
<key>DefaultValue</key>
<string>DEFAULT_VALUE_PLACEHOLDER</string>
<key>Type</key>
<string>PSTitleValueSpecifier</string>
<key>Title</key>
<string>Version</string>
<key>Key</key>
<string>prefs_item_version_title</string>
</dict>
</array>
<key>StringsTable</key>
<string>Root</string>
</dict>
</plist>
我意识到一个简单的查找和替换就可以完成它(例如sed),但是,我想要一个更健壮的方法来完成它。
我想是这样的,但是语法的文档不够好。
defaults write $PLIST_PATH 'PreferenceSpecifiers { 1 = { DefaultValue = $NEW_DETAULT_VALUE; }; }'
我不认为有任何方法可以做到这一点与defaults
(这不是完全丑陋)-你最好做这样的事情与PlistBuddy代替:
/usr/libexec/PlistBuddy -c "set :PreferenceSpecifiers:0:DefaultValue '$NEW_DEFAULT_VALUE'" "$PLIST_PATH"
注意,不像defaults
, PlistBuddy期望你给它的文件名包含".plist";此外,(如上所示),数组索引从0开始。