получение информации от плутила - PullRequest
5 голосов
/ 08 января 2012

У меня проблема с указанием направления от плутиля.Я хочу проверить, содержит ли .plist ключ CFBundleShortVersionString.Я не думаю, что у plutil есть какая-либо опция для проверки, существует ли ключ, поэтому я подумал, что просто plutil -show file.plist >file.txt, но это просто не работает.: / Поэтому я попытался перенаправить файл plist из stdout в файл с параметром дампа plutil -dump file.plist >file.txt, но безуспешно.: / Я также попытался направить stdout в stderr, stderr и stdout в файл.Ничего не получалось.Как мне это сделать?

Ответы [ 5 ]

6 голосов
/ 22 февраля 2012

Если вам нужно проверить ваш .plist на наличие ключа CFBundleShortVersionString, лучше использовать PlistBuddy, например:

/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" 1.plist || echo "CFBundleShortVersionString doesn't exist"
5 голосов
/ 11 сентября 2017

Oneliner, который не зависит от дополнительной утилиты для установки:

plutil -extract CFBundleShortVersionString xml1 -o - ./Info.plist | sed -n "s/.*<string>\(.*\)<\/string>.*/\1/p"

1 голос
/ 29 августа 2017

plutil -extract CFBundleShortVersionString xml1 -o - App-Info.plist команда выводит содержимое CFBundleShortVersionString свойство

0 голосов
/ 02 мая 2012

Чтобы ответить на ваш вопрос, вы можете создать небольшой скрипт 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>

Я не вижу другого способа сделать вывод plutil на стандартный вывод.

0 голосов
/ 30 марта 2012
$ plutil -show StorePurchasesInfo.plist 2>&1 | grep cbk

возвращает все строки в листе с текстом «cbk» в них. По какой-то причине plutil отправляет свой вывод в stderr. Вышеприведенное перенаправляет stderr на stdout, поэтому его можно успешно передать по каналу grep (или перенаправить в файл, или как угодно).

...