我遇到了来自plutil的方向信息。我想检查.plist是否包含密钥CFBundleShortVersionString。我不认为plutil有任何选项可以测试一个密钥是否存在所以我认为我只会plutil -show file.plist >file.txt
但是这只是简单的不起作用。 :/所以我尝试使用转储选项plutil -dump file.plist >file.txt
将plist文件从stdout导向文件,但没有运气。 :/我也尝试将stdout指向stderr和stderr以及stdout来归档。没有任何效果。有谁知道怎么做?
答案 0 :(得分:6)
如果您需要测试.plist中是否存在CFBundleShortVersionString
密钥,最好像这样使用PlistBuddy
:
/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" 1.plist || echo "CFBundleShortVersionString doesn't exist"
答案 1 :(得分:5)
Oneliner不依赖于额外的实用程序来安装:
plutil -extract CFBundleShortVersionString xml1 -o - ./Info.plist | sed -n "s/.*<string>\(.*\)<\/string>.*/\1/p"
答案 2 :(得分:0)
$ plutil -show StorePurchasesInfo.plist 2>&1 | grep cbk
返回plist中包含文本'cbk'的所有行。由于某种原因,plutil
将其输出发送到stderr。上面将stderr重定向到stdout,然后可以成功地将其传送到grep
(或重定向到文件,或任何你想要的)。
答案 3 :(得分:0)
要回答你的问题,你可以创建一个包含以下内容的小bash脚本:
#!/bin/bash
cp $1 /tmp/$$.tmp
plutil -convert xml1 /tmp/$$.tmp
cat /tmp/$$.tmp
rm /tmp/$$.tmp
如果您调用bash脚本pldump,请使用chmod +x pldump
使其可执行。把它放在路径的某个地方,然后像这样使用它:
tlh-m0290:Preferences paul.downs$ ./pldump com.example.plist
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>station.data.downloaded</key>
<true/>
</dict>
</plist>
我看不到将标题输出到stdout的其他方法。
答案 4 :(得分:0)
plutil -extract CFBundleShortVersionString xml1 -o - App-Info.plist
命令打印出CFBundleShortVersionString
属性