ryg

defaults команда терминала mac OS X

Синтаксис:

defaults [-currentHost | -host hostname] read [domain [key]]
defaults [-currentHost | -host hostname] read-type domain key
defaults [-currentHost | -host hostname] write domain { 'plist' | key 'value' }
defaults [-currentHost | -host hostname] rename domain old_key new_key
defaults [-currentHost | -host hostname] delete [domain [key]]
defaults [-currentHost | -host hostname] { domains | find word | help }

Описание:

Команда обеспечивает доступ к пользовательским настройкам в Mac OS X. Команда позволяет читать, записывать, удалять пользовательские настройки по умолчанию с помощью командной строки терминала. Приложения Mac OS X и другие программы используют системные настройки по умолчанию для записи пользовательских предпочтений и другой информации и которые должны быть использованы при запуске программы (например шрифт по умолчанию в новом документе или место расположения информационной панели). Многие из этих параметров доступны из панели настроек самой программы, но некоторые (такие как расположение информационной панели) доступны только через команду defaults.

Команда defauls  write вносит изменения в файлы .plist и ранее было возможно непосредственно редактировать файлы настроек приложений с расширением plist непосредственно в папке Library/Preferences. И после перезапуска программы эти изменения начинали действовать, однако в в версии Mac OS X 10.9 Mavericks произошли серьезные изменения в системе кэширования и теперь в случае непосредственного изменения файлов необходимо ждать обновления кэшированных файлов, либо  завершать сеанс пользователя. При изменении настроек с помощью defaults write достаточно перезапустить приложение. 

Замечание: некоторые приложения используют доступ к этим настройкам не только во время запуска, но и в процессе работы, поэтому не стоит редактировать параметры приложения во время его работы. Приложение может зафиксировать изменение и переписать его старым значением.

 Пользовательские настройки принадлежат domain, а он обычно соотносится с конкретным приложением. Каждый домен (domain) содержит словарь ключей и значений которые соотносятся со значениями по умолчанию, например "Default Font" = "Helvetica". Ключи (key ) всегда имеют тип "строка", а значения могут быть комплексными типами данных, включающих в себя массивы, строки, словари и двоичные данные. Эти структурные данные сохраняются в XML файлах свойств.

Несмотря на то, что все приложения, системные сервисы и другие программы имеют свои домены (domain) они имеют общий доступ к домену с именем NSGlobalDomain. Если домен приложения по умолчанию не определен, то приложение будет пытаться использовать настройки по умолчанию из домена NSGlobalDomain.

Доступны следующие команды:

read Вывести Все настройки по умолчанию, для всех domains в окно стандартного вывода
read domain Вывести пользовательские настройки по умолчанию, для указанного domain в окно стандартного вывода
read domayn key Вывести значение по умолчанию для заданного домена domain и ключа key
read-type domain key Вывести тип данных (plist) указанного ключа (key) для заданного домена domain
write domain key 'value' Записать значение (value) для указанного ключа key в указанный домен domain. Значение должно соответствовать листу свойств и закрыто одиночными апострофами. Например:
defaults write com.project.appname "Default Color" '(255, 255, 255)'

Записать значение в Default Color массив состоящий из строки 255,255,255

write domain 'plist' Перезаписать информацию в domain, которое имеет вид plist. Plist должен быть списком свойств заданных в словаре и должен быть закрыт одиночными кавычками. Например команда:
defaults write com.companyname.appname '{ "Default Color" = (255, 0, 0);  "Default Font" = Helvetica; }';
Стирает ВСЕ предыдущие настройки для com.companyname.appname и записывает два значения указанные в команде.
delete domain Удаляет все настройки по умолчанию для domain
delete domain 'key' Удаляет все настройки ключа (key) для domain
domains Выводит список все доступных domains
find word Ищет указанное слово (word) и выводит список найденного. Поиск идет по именам доменов, ключам и значениям.
help Вывести на экран все возможные параметры команды

Параметры:

Определение доменов (domains)

domain

Если флаг не определен domain должен иметь форму com.companyname.appname, например:
defaults read com.apple.TextEdit
-app application При использовании флага -app достаточно указать имя программы:
defaults read -app TextEdit
 filepath  Domain также может быть определен путем к файлу настроек plist, при этом расширение файла '.plist' опускается.
defaults read ~/Library/Preferences/com.apple.TextEdit
Следующая команда записывает значение 'bar' в ключ 'foo' в plist файл с именем TestFile.plist на рабочем столе пользователя. Если такого файле не существует, то он будет создан и ключ со значением будут созданы. Если такой файл с ключом существуют, то значение будет перезаписано.
defaults write ~/Desktop/TestFile foo bar	
Предупреждение: В ближайших версиях команда defaults , будет изменена.
-g | -globalDomain | NSGlobalDomain Определяет глобальный домен -g и -globalDomain синонимы NSGlobalDomain

Типы значений ключа

Если флаг определяющий тип ключа не указан в команде, то умолчанию используется тип 'string'. Для большей надежности рекомендуется явно указывать тип ключа одного из следующих типов:

-string Тип данных определяется как строка
-data Сообщает, что значение ключа имеет тип данных raw (бинарный без каких-либо преобразований). Может быть указан в шестнадцатеричном коде
-int[eger] Значение заданного ключа имеет тип целое число.
-float Значение заданного ключа имеет тип число с плавающей точкой.
-bool[ean] Значение заданного ключа имеет тип булево. Допустимые значения:  TRUE, FALSE,YES или NO
-date Значение заданного ключа имеет тип дата.
-array Значение заданного ключа имеет тип массив значений. Например:
defaults write somedomain preferenceKey -array element1 element2 element3
Определение массива перезаписывает его значения, если он есть. Если его нет, то он будет создан.
-array-add Добавляет значения к существующему массиву. Если массива с таким ключом нет он будет создан
-dict Позволяет пользователю создать словарь в базе данных настроек по умолчанию для программы. Ключи и их значения в этом случае указываются последовательно.
defaults write somedomain preferenceKey -dict key1 value1 key2 value2
Если словарь существует, то он будет перезаписан. Если его нет он будут создан
-dict-add Позволяет добавить в словарь новые ключи и значения. Если словаря нет он будет создан.

Описание параметра host

-currentHost Ограничивает действия по настройкам. Установки происходят только для текущего пользователя
-host hostname Ограничивает действия по настройкам. Установки происходят только для hostname

Близкие команды:

ptutil- используется для проверки синтаксиса файлов настроек прикладных программ (property list files).
alias - назначить псевдоним команды
 

Весь список команд terminal Mac OS X