如何在 PlistBuddy 中输入数据

Posted

技术标签:

【中文标题】如何在 PlistBuddy 中输入数据【英文标题】:How do you enter data in PlistBuddy 【发布时间】:2020-05-29 06:43:24 【问题描述】:

我正在尝试使用 PlistBuddy 更改数据值,但无法弄清楚。

/usr/libexec/PlistBuddy -c "Set :Kernel:Emulate:Cpuid1Mask AAAAAAAAAAAAAAACAAAAAA==" ~/Desktop/test.plist

当我查看文件时,我没有写入我想要的数据,而是得到:QUFBQUFBQUFBQUFBQUFBQ0FBQUFBQT09

我玩过 hex、dec、bin 以及我能想到的所有东西,但它始终无法正确写入。 我一直在到处搜索,没有任何东西可以解释如何做到这一点。一切都在输入字符串,没有任何东西告诉如何输入数据,或者它的格式。

我需要将该值从 AAAAAAAAAAAAAAAACAAAAAA== 来回更改为 AAAAAAAAAAAAAAAAAAAAAA===

我尝试打印它以查看输出,所以我可以看到格式,但它在终端中是空白的。

有人知道怎么做吗?

【问题讨论】:

我什至不知道这是否可以做到。我已经尝试了几天,没有人能弄清楚。 PlistBuddy 是否有使用十六进制的语法?如果我打印它,它不会显示在终端中,因为它们是不可见的字符,所以没有任何方法可以在命令行中输入它们。如果有另一个内置命令可以做到这一点,请告诉我。我只需要操纵那个值。 我可以用字符串正确地把它放进去,那么有没有办法把它作为字符串放入,然后将字符串标签更改为数据标签? 【参考方案1】:

PlistBuddy 可以在base64 的帮助下完成。首先将传入的 Base64 流解码为二进制数据。

base64 -D <<< AAAAAAAAAAAAAAACAAAAAA== > /tmp/tmp.bin

然后使用PlistBuddyImport命令。

/usr/libexec/PlistBuddy -c "Import :Kernel:Emulate:Cpuid1Mask /tmp/tmp.bin" ~/Desktop/test.plist

如果不再需要,请删除您的二进制数据。

rm /tmp/tmp.bin

PS:我经常使用它来更改 OpenCore 中的数据值。

【讨论】:

【参考方案2】:

我想通了。 默认值和 PlistBuddy 都无法做到这一点。 plutil 工作正常,不会损坏数据字符串。

【讨论】:

好久没来了,我想我会分享我找到的解决方案。正如我上面所说,“defaults”和“PlistBuddy”都做不到。要么是错误,要么是疏忽。奇怪的是他们可以读取字符串,而不能写入。我最终使用了“plutil”: plutil -replace Kernel.Emulate.Cpuid1Mask -data "AAAAAAAAAAAAAAAAAAAAAA==" /config.plist

以上是关于如何在 PlistBuddy 中输入数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PlistBuddy 将多个条目添加到 plist 字典

如何使用 PlistBuddy 将数组添加到 Plist?

如何使用命令替换来使用 PlistBuddy

Windows 上的 PlistBuddy

Xcode - 无法在脚本中使用 PlistBuddy 修改 plist

使用 PlistBuddy 处理 hdiutil 输出