【问题标题】:modifying a Plist from command line on Mac using Defaults使用默认值从 Mac 上的命令行修改 Plist
【发布时间】:2012-11-24 06:55:27
【问题描述】:

有谁知道如何使用 defaults 从命令行修改 Plist 文件? 目前URL types数组下有两个字典;我需要添加另一个。

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

【问题讨论】:

标签: macos shell console plist property-list


【解决方案1】:

使用-array-add 值类型:

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

【讨论】:

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

在文本编辑器中打开 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);}'

【讨论】:

  • 男人!这让我很困惑。 XCode 将键的名称更改为您在上图中看到的值(在我的问题中)。所以这就是它添加新条目的原因。谢谢老兄。
  • 您还可以通过在项目导航器中右键单击 plist 并选择“打开为 > 源代码”来在 XCode 中显示 plist 的文本表示(比从外部打开文件要快得多...)
  • 提供给 plist 文件的路径必须是绝对路径,这一点非常重要。如果它是相对的,如本例所示,您最终将创建或修改 ~/Library/Preferences/Info.plist
  • Absolute paths 是 derFunk 提到的关键。
【解决方案3】:

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

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

plutil 可用于在任一方向执行此操作。不过要小心,因为属性列表已就地修改,因此您希望先复制属性列表。

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

并将其转换回二进制:

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

【讨论】:

    【解决方案4】:

    【讨论】:

    • 我使用了这个命令: /usr/libexec/PlistBuddy -c "set CFBundleURLTypes:CFBundleURLSchemes fb$FacebookAppID" 但它不起作用。我该怎么办
    猜你喜欢
    • 2014-10-12
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    相关资源
    最近更新 更多