使用默认值在Mac上从命令行修改Plist

时间:2012-12-06 09:15:33

标签: macos shell console plist property-list

是否有人知道如何使用默认值从命令行修改Plist文件? 目前URL types数组下有两个词典;我需要添加另一个。

enter image description here

我尝试的每个命令都要么替换整个字典,要么创建一个名为URL types的新数组,而不是编辑它。有关如何在默认设置(控制台Mac应用程序)和 PlistBuddy中完成此操作的任何想法?

4 个答案:

答案 0 :(得分:20)

XML属性列表可以直接在文本编辑器中查看,如上面Lauri的回答所示。

二进制属性列表(在许多Apple自己的发货应用程序中找到)需要首先转换为XML属性列表格式。

可以使用

plutil在任一方向上执行此操作。尽管属性列表已经过修改,但要小心,因此您希望首先制作属性列表的副本。

plutil -convert xml1 binary-property-list-to-convert.plist

并将其转换回二进制文件:

plutil -convert binary1 XML-property-list-to-convert.plist

答案 1 :(得分:16)

在文本编辑器中打开Info.plist以查看实际的标识符。

defaults write Absolute/Path/to/Info.plist CFBundleURLTypes -array-add '<dict>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>CFBundleURLName</key>
<string>Mac App Store URL</string>
<key>CFBundleURLSchemes</key>
<array>
<string>macappstore</string>
</array>
</dict>'

pbpaste | pl将XML转换为旧式格式。

defaults write Info.plist CFBundleURLTypes -array-add '{CFBundleTypeRole=Viewer; FBundleURLName="Mac App Store URL";CFBundleURLSchemes=(macappstore);}'

答案 2 :(得分:7)

答案 3 :(得分:6)

使用-array-add值类型:

defaults write /path/to/plist/file "URL Types" -array-add '{"URL Identifier" = "com.myapp.2"; "URL Schemes" = { "two"; }; }'