ryg

Команда plutil в Mac OS X

Большинству пользователей Mac OS X никогда не потребуется редактировать файлы настроек программ. Но иногда это бывает необходимо. Хотя непосредственное редактирование данных файлов не совсем правильно и для этого лучше использовать команду Терминала defaults write. Тем более система кэширования в последних версий операционной системы может достаточно долго сохранять в памяти копию старого файла и для применения изменений внесенных в файл .plist может потребоваться перезагрузка вашего компьютера. Поэтому команда defaults write автоматически обновляющая кэш данного файла настроек будет предпочтительнее. Однако после использования данной команды необходим перезапуск программы настройки, которой вы изменили.
 
Как найти файлы настроек?
 
В основном они хранятся в папке 
/Users/Имя Пользователя/Library/Preferences/
или короткая запись
 
~/Library/Preferences/
Так как имя фала plist не всегда совпадает с именем приложения можно сделать поиск по имени приложения командой в терминале:
mdfind -name $(osascript -e 'id of app "Имя приложения"').plist -onlyin ~/Library
 
Сами .plist файлы представляют собой xml файлы и могут быть отредактированы любым текстовым редактором, но удобнее будет использовать встроенный редактор в xCode или PlistEdit PRO.
 
Существует бинарный формат списка свойств .plist. Они не используют формат XML, но, как правило, данные файлы взаимозаменяемы и могут быть конвертированы из одного формата в другой с помощью утилиты plutil.
 

Синтаксис:

plutil [command_option] [other_options] file

Описание:

Утилита plutil используется для проверки синтаксиса файлов настроек (property list files) в Mac OS X или для конвертации параметров из одного формата файлов в другой. Использование вместо имени файла дефиса "-" означает ввод данных из стандартного ввода.

plist файлы организовывают данные используя основние базовые типы: CFString, CFNumber, CFBoolean, CFDate, CFData, CFArray, and CFDictionary. В файле свойств используюутся следующие теги 
  • <plist>                 -тег означающий тачало списка свойств.
  • <string>                 класс   данных CFString        
  • <real> или  <integer>    CFNumber        
  • <date>                   CFDate          
  • <true/> или <false/>     CFBoolean      
  • <data>                   CFData         
  • <array>                  CFArray         
  • <dict>                   CFDictionary   
Первый параметр задает действие, которое необходимо выполнить утилите
-help Показать информацию об использовании команды plutil и завершить работу.
-lint Проверить имена в файле настроек (plist) на синтаксические ошибки. Этот параметр будет использован по умолчанию, если в команде не использовать другие опции.
-convert fmt Преобразовать указанный файл file в заданный формат fmt и записать его. Если в исходном файле есть синтаксические ошибки, преобразования не произойдет и статус завершения команды будет равен 1.
Параметр fmt может принимать одно из следующих значений:
 xml1 для версии 1, binary1 для бинарного файла plist или json для формата списков JSON
 
Дополнительные параметры other_options:
-- Указывает, что все последующие параметры имена файлов
-s В случае успешного завершения утилиты ничего не сообщать
-r Добавить пробелы и отступы для более удобного чтения данных (только для файлов настроек формата JSON).
-o path

Задать путь для сохранения результатов при конвертации файлов (командный параметр -convert). Данный параметр рекомендуется использовать, когда конвертируются одиночные файлы. Если указать вместо пути дефис "-", результат преобразования будет выведен в стандартный вывод.

-e extension Чтобы конвертируемые файлы не были перезаписаны преобразованной версией, используется данный параметр, позволяющий задать новое расширение для преобразованных файлов.
 
Возвращаемый статус:
 
В случае успешного завершения возвращается 0 и 1 в случае ошибки
 

Примеры: 

Конвертировать файл file name в формат plist версии 1 и вывести его на экран:
plutil -convert xml1 -o - file name
Показать в удобном для человека виде информацию о компьютере:
plutil -p ~/Library/Preferences/com.apple.SystemProfiler.plist
Впервые команда plutil появилась в Mac OS X 10.2 и не подчиняется никаким стандартам, кроме своих собственных.

Связанные команды:

defaults -Команда позволяет читать, записывать, удалять пользовательские настройки по умолчанию с помощью командной строки терминала.
systemsetup - Управление системными настройками в Mac OS X

Полезные улучшения OS X с помощью команды defaults write
Весь список команд terminal Mac OS X