从plutil获取信息

时间:2012-01-08 14:35:13

标签: ios bash shell

我遇到了来自plutil的方向信息。我想检查.plist是否包含密钥CFBundleShortVersionString。我不认为plutil有任何选项可以测试一个密钥是否存在所以我认为我只会plutil -show file.plist >file.txt但是这只是简单的不起作用。 :/所以我尝试使用转储选项plutil -dump file.plist >file.txt将plist文件从stdout导向文件,但没有运气。 :/我也尝试将stdout指向stderr和stderr以及stdout来归档。没有任何效果。有谁知道怎么做?

5 个答案:

答案 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属性

的内容