从 plist 文件中获取信息

Vin*_*oud 2 osx bash

我需要我的脚本来从 macOS 获取信息。该信息位于一个plist文件~/Library/Preferences/com.apple.SystemProfiler.plist

二进制内容如下。

bplist00?_NSWindow Frame SystemProfileYCPU Names_344 284 751 520 0 0 1440 877 ?]HV2J-en-GB_GB_4MacBook Pro (13-inch, 2017, Two Thunderbolt 3 ports) ,6VYg

我只想将此处以粗体和斜体显示的文本文件放入括号之间。我尝试了在互联网上找到的不同方法,但没有运气。

Chr*_*her 7

一个plist文件格式是二进制XML,纯文本XML,甚至是纯文本JSON之一。plist问题中发布的文件是二进制 XML 格式。

从二进制文件生成纯文本的一种方法如下。

plutil -convert xml1 com.apple.SystemProfiler.plist
Run Code Online (Sandbox Code Playgroud)

要将文件转换回二进制文件,请plutil按如下方式使用。

plutil -convert binary1 com.apple.SystemProfiler.plist
Run Code Online (Sandbox Code Playgroud)

这将有助于为问题生成更好的纯文本格式。


假设“HV2J-en-GB_GB_4”是正确的键,那么可以通过PlistBuddy如下方式获取所需的值。请注意,无论在哪里遇到空格,单引号都可以封装文本。

/usr/libexec/PlistBuddy -c "print :'CPU Names':HV2J-en-GB_GB_4" com.apple.SystemProfiler.plist
Run Code Online (Sandbox Code Playgroud)

对于 BASH 脚本,可以使用命令替换将此值放入变量中。

model=$(/usr/libexec/PlistBuddy -c "print :'CPU Names':HV2J-en-GB_GB_4" com.apple.SystemProfiler.plist)
Run Code Online (Sandbox Code Playgroud)

之后,该值在变量 中可用$model