Я пытаюсь максимально автоматизировать процесс настройки нового ноутбука. Есть определенные изменения, которые я всегда вношу вручную на новом Mac, например, включение масштабирования экрана с помощью модификатора Ctrl
и настройка сочетаний клавиш для сопоставления ⌘⌥ ← с «Выбрать предыдущую вкладку» во всех приложениях. Я уверен, что есть preferences.write
эквивалент для этого, но, черт возьми, я понятия не имею, как определить, что это такое. Могу ли я каким-то образом отслеживать или «различать» свои предпочтения после внесения изменений вручную?
Apple теперь хранит наиболее важные настройки в базе данных, поэтому лучше всего игнорировать файлы plist в файловой системе и сосредоточиться на выводе тех defaults read com.apple.whatever
вещей, которые вы меняете. К сожалению, не существует хорошего Розеттского камня, в котором говорилось бы, что если вы находитесь в предпочтении X, ищите изменения в этих семи доменах предпочтений. Где Apple хранит iCloud или информацию о безопасности, не сопоставляется с каждым визуальным значком в системных настройках, поэтому вам нужно будет создать более одного, defaults read
чтобы зафиксировать все состояние большинства панелей настроек, поскольку большинство панелей записываются более чем в один домен настроек.
В качестве альтернативы вы можете просто использовать MDM и профили конфигурации и сценарии для внесения всех изменений, чтобы вы просто передавали изменения на все машины из своего инструмента управления и полностью пропускали весь процесс обратного проектирования.
В прошлом MCX был путем к управлению корпоративными конфигурациями, и это эквивалентно вашему желанию просмотреть файлы .plist, в которых изначально хранились эти настройки на заре OS X, но текущая система профилей конфигурации, изменений в сценариях и перехватчиков MDM оставил MCX и .plist в пыльных углах, которые не были обновлены для новой центральной базы данных для хранения пользовательских и системных значений по умолчанию.
Если вы знаете файл, который изменяется, вы можете сравнить вывод до/после в терминале, чтобы найти точное имя настройки. Например:
/usr/libexec/PlistBuddy -c Print ~/Library/Preferences/.GlobalPreferences.plist > /tmp/before.txt
И, diff /tmp/before.txt /tmp/after.txt
чтобы увидеть элементы, которые меняются. Но будьте осторожны, потому что, скорее всего, изменяемый параметр будет скрыт в иерархической структуре.
Если вы еще не знаете файл, который изменяется, вы можете отслеживать папку Library/Preferences с помощью, ls -lFat
чтобы увидеть самые последние измененные файлы в списке первыми, и вы, вероятно, сможете определить, какой файл вас интересует, оттуда.
Лучший способ, который я нашел, это
opensnoop
(программа, включенная в macOS, которая показывает, какие файлы открыты)Preferences
папке осуществляется доступdefaults read file.plist
ни на что подозрительное.
Рускес