Изменение Plist из командной строки на Mac с использованием значений по умолчанию
Кто-нибудь знает, как изменить файл Plist из командной строки, используя defaults?
В настоящее время существует два словаря под массивом URL types
; Мне нужно добавить еще один.
![enter image description here]()
Каждая попытка, которую я попробовал, либо заменила весь словарь, либо создала новый массив под названием URL types
вместо его редактирования. Любые идеи о том, как это можно сделать по умолчанию (консольное приложение для Mac), а не PlistBuddy?
Ответы
Ответ 1
Откройте Info.plist в текстовом редакторе, чтобы увидеть фактические идентификаторы.
defaults write Absolute/Path/to/Info.plist CFBundleURLTypes -array-add '<dict>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>CFBundleURLName</key>
<string>Mac App Store URL</string>
<key>CFBundleURLSchemes</key>
<array>
<string>macappstore</string>
</array>
</dict>'
pbpaste | pl
pbpaste | pl
преобразует XML в формат старого стиля.
defaults write Info.plist CFBundleURLTypes -array-add '{CFBundleTypeRole=Viewer; FBundleURLName="Mac App Store URL";CFBundleURLSchemes=(macappstore);}'
Ответ 2
Списки свойств XML можно просматривать в текстовом редакторе непосредственно, как предлагает ответ Лаури.
Списки бинарных свойств (обнаруженные во многих приложениях Apple для доставки) необходимо сначала преобразовать в формат списка свойств XML.
plutil можно использовать для этого в любом направлении. Будьте осторожны, хотя, поскольку список свойств изменен на месте, поэтому сначала вы хотите сделать копию списка свойств.
plutil -convert xml1 binary-property-list-to-convert.plist
И чтобы преобразовать его обратно в двоичный:
plutil -convert binary1 XML-property-list-to-convert.plist
Ответ 3
OSX имеет PlistBuddy, что делает его намного проще.
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man8/PlistBuddy.8.html
Смотрите также: https://github.com/kevinSuttle/OSXDefaults/blob/master/REFERENCE.md
Ответ 4
Используйте тип значения -array-add
:
defaults write /path/to/plist/file "URL Types" -array-add '{"URL Identifier" = "com.myapp.2"; "URL Schemes" = { "two"; }; }'