2014-02-02 4 views
4

Как я могу разобрать вывод команды OS X defaults read?Как я могу разобрать вывод `defaults read` на OS X?

, как представляется, выводит формат «старого» формата NeXTSTEP; вещи, которые выглядят как:

{ 
"Apple Global Domain" =  { 
    AppleAntiAliasingThreshold = 4; 
    AppleCollationOrder = root; 

я пытался писать вывод в файл и преобразования с plutil, но он задыхается:

> defaults read > defaults.txt 
> plutil -convert xml1 defaults.txt 
2014-02-02 21:29:14.856 plutil[56896:707] CFPropertyListCreateFromXMLData(): Old-style 
plist parser: missing semicolon in dictionary on line 10835. Parsing will be abandoned. 
Break on _CFPropertyListMissingSemicolon to debug. 
defaults.txt: Property List error: Unexpected character { at line 1/JSON error: No 
value for key in object around character 28. 

почему, спросите вы?

Я хотел бы сохранить значения по умолчанию в git, поэтому я могу сохранить запись как параметр изменения и diff после внесения изменений, но, похоже, сериализация в defaults read не является «стабильной строкой»: словари не сбрасывают их ключи в последовательном порядке, вызывая огромное количество шума. если я смогу разобрать defaults read, я смогу передать данные через последовательный последователь.

+0

Что вы читаете? – trojanfoe

+1

@trojanfoe вывод команды терминала 'defaults read' (я использую OS X 10.8 и 10.9). он сбрасывает ваши предпочтения, но в том, что выглядит как старый формат плеера NeXTSTEP, в отличие от чего-то вроде xml, который будет легко разобрать. я отредактирую вопрос, чтобы попытаться сделать это более ясным. – nrser

+0

Мне нужна такая же функциональность для синтаксического анализа вывода из «/ System/Library/CoreServices/pbs -dump_pboard» –

ответ

1

Вы удачливый парень, всего несколько дней назад кто-то выпустил синтаксический анализатор формата плеера NeXTSTEP на PyPi - nsplist.

+1

спасибо за предложение. я попробовал библиотеку 'nsplist', но это выводит на мой вывод из' defaults read' ... моя догадка в этот момент состоит в том, что команда форматирует его ответ таким образом, который похож на слой NeXTSTEP, но не полностью соответствует (следовательно, собственный «плутил» от Apple тоже не работает). – nrser

 Смежные вопросы

  • Нет связанных вопросов^_^