我需要我的脚本来从 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
我只想将此处以粗体和斜体显示的文本文件放入括号之间。我尝试了在互联网上找到的不同方法,但没有运气。
一个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。