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

iOS*_*com 23 macos shell console plist property-list

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

在此输入图像描述

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

ctp*_*ose 22

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

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

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

plutil -convert xml1 binary-property-list-to-convert.plist
Run Code Online (Sandbox Code Playgroud)

并将其转换回二进制:

plutil -convert binary1 XML-property-list-to-convert.plist
Run Code Online (Sandbox Code Playgroud)


Lri*_*Lri 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>'
Run Code Online (Sandbox Code Playgroud)

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

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

  • 提供给plist文件的路径必须是*absolute*one非常重要.如果它在这个例子中是相对的,你将最终创建或修改`〜/ Library/Preferences/Info.plist` (2认同)

Gor*_*son 6

使用-array-add值类型:

defaults write /path/to/plist/file "URL Types" -array-add '{"URL Identifier" = "com.myapp.2"; "URL Schemes" = { "two"; }; }'
Run Code Online (Sandbox Code Playgroud)

  • 我使用的是 macOS Catalina (10.15),似乎“默认值”不再适用于文件路径。在 man 中,它说:“警告:默认命令将在即将发布的主要版本中更改为仅在首选项域上操作。通用 plist 操作实用程序将被折叠到不同的命令行程序中。” (2认同)