1

我想DEFAULT_VALUE_PLACEHOLDER使用命令行工具更改以下 plist 中的值defaults

<?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; }; }'
4

1 回答 1

3

我认为没有任何方法可以做到这一点defaults(这并不完全丑陋)——你最好用 PlistBuddy 做这样的事情:

/usr/libexec/PlistBuddy -c "set :PreferenceSpecifiers:0:DefaultValue '$NEW_DEFAULT_VALUE'" "$PLIST_PATH"

请注意,与 不同的是defaults,PlistBuddy 希望您给它的文件名包含“.plist”;此外,(如上所示),数组索引从 0 开始。

于 2013-01-16T15:49:34.833 回答