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

问题描述

我正在尝试访问MAC OS上plist文件中的特定属性,但是该属性名称中有一个空格,我无法访问它。

这是我尝试的请求,但它返回了我所有的SpacesdisplayConfiguration

$defaults read com.apple.spaces SpacesdisplayConfiguration Space\ Properties

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

解决方法

不可能在比根级别更深的级别上read特定属性

,

如果您喜欢做丑陋的事情,您可以做这样的丑陋的事情:

defaults read com.apple.spaces > /tmp/$$.plist
/usr/libexec/PlistBuddy -c 'print :SpacesDisplayConfiguration:Space\ Properties' /tmp/$$.plist

尽管这可能不那么难看:

/usr/libexec/PlistBuddy -c 'print SpacesDisplayConfiguration:Space\ Properties' $HOME/Library/Preferences/com.apple.spaces.plist

以下尝试无效,并且如果有人知道为什么可以对我执行ping操作-我认为这与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)
,

我只是使用 catgrep 来解决的。不那么优雅,但简单实用:

cat path/to/file.plist | grep -A 1 <key>

输出示例:

    <key>slideScanBlurThreshold</key>
    <real>0.0</real>
,

如果您可以下载工具,Scout 可以读取键中带有空格的嵌套值。

scout read -i $HOME/Library/Preferences/com.apple.spaces.plist -f plist \
"SpacesDisplayConfiguration.Space Properties"