如何在终端中读取 PLIST 文件中的特定值

hug*_*gx9 5 macos shell plist

我正在尝试访问plistMAC 操作系统上文件中的特定属性,但该属性的名称中有空格,我无法访问它。

这是我尝试的请求,但它返回了我全部SpacesDisplayConfiguration

$defaults read com.apple.spaces SpacesDisplayConfiguration Space\ Properties
Run Code Online (Sandbox Code Playgroud)

我认为这只是一个语法错误,但我找不到问题所在。

Mar*_*ell 5

如果你喜欢做丑陋的事情,你可以做一些非常丑陋的事情,如下所示:

defaults read com.apple.spaces > /tmp/$$.plist
/usr/libexec/PlistBuddy -c 'print :SpacesDisplayConfiguration:Space\ Properties' /tmp/$$.plist
Run Code Online (Sandbox Code Playgroud)

虽然这可能稍微不那么难看:

/usr/libexec/PlistBuddy -c 'print SpacesDisplayConfiguration:Space\ Properties' $HOME/Library/Preferences/com.apple.spaces.plist
Run Code Online (Sandbox Code Playgroud)

以下尝试不起作用,如果有人知道为什么他们可以告诉我 - 我认为这与bash不可寻找的进程替换有关。

defaults read com.apple.spaces | /usr/libexec/PlistBuddy -c 'print :SpacesDisplayConfiguration:Space\ Properties' /dev/stdin

defaults read com.apple.spaces | /usr/libexec/PlistBuddy -c 'print :SpacesDisplayConfiguration:Space\ Properties' -

/usr/libexec/PlistBuddy -c "print" <(defaults read com.apple.spaces)
Run Code Online (Sandbox Code Playgroud)