Списки свойств по существу представляют собой XML-файлы с расширением .plist. Вот как их редактировать с помощью командной строки в приложении macOS Terminal.

XML — это открытый формат данных, который приобрел популярность в середине 1990-х годов, когда Интернет впервые стал коммерциализирован. Это текстовый формат, в котором для хранения данных используются пары ключ/значение. Ключи предоставляют метки данных, а значения хранят данные, относящиеся к каждому ключу.

Типы данных в XML включают логические значения (истина/ложь), числа, даты, строки (текст), массивы, словари и простые данные. Словарь — это просто объединенная таблица значений со своим собственным набором ключей — по одному для каждого элемента данных.

Комбинируя и внедряя эти типы данных в XML-файл, вы можете хранить разнообразные вложенные данные практически для чего угодно. Хотя XML обычно хранится в виде обычного текста, он также стал одним из стандартов обмена информационными данными через Интернет, хотя сегодня его в основном заменяет JSON (нотация объектов Javascript), который в чем-то похож.

XML на платформах Apple

Когда в 2000 году вышла первая версия Mac OS X, Apple ясно дала понять, что использует XML в качестве формата файлов для большей части операционной системы Mac. Apple использует собственный формат файлов, называемый списками свойств (.plist), который представляет собой простой XML с некоторой пользовательской информацией заголовка Apple XML в верхней части каждого файла.

Возможно, вы видели файлы .plist в папках настроек macOS в /Library/Preferences или ~/Library/Preferences. Это простые XML-файлы, содержащие списки XML-данных, которые могут быть прочитаны приложениями или самой macOS для хранения настроек.

Например, файл настроек macOS Finder находится в папке «Настройки» и называется com.apple.Finder.plist. В большинстве файлов настроек .plist используется такая форма обратной записи DNS: второй компонент имени файла идентифицирует компанию, производящую программное обеспечение, затем имя приложения, а затем расширение .plist.

Вы можете открыть файл .plist в приложении Apple TextEdit, чтобы прочитать его как необработанный текст, или открыть его в среде разработки Apple, Xcode или в большинстве других приложений для редактирования простого текста.

Xcode имеет специальную функцию форматирования, которая отображает файл .plist в виде редактора таблиц, в котором каждый тип данных находится в строке, содержащей тип данных и его ключ. Нажав всплывающее меню рядом с каждым элементом таблицы, вы можете изменить его тип на любой известный формат.

Данные .plist общего, неизвестного или непрозрачного типов обрабатываются как большой двоичный объект данных — или, в случае программирования платформы Apple, как тип данных Data (в Swift) или NSData в Objective-C.

Приложения также объединяют файлы .plist внутри macOS, iOS, iPadOS и watchOS как для описания приложений, так и для хранения контента. Например, файл Info.plist описывает каждое приложение и его возможности для операционной системы.

В операционных системах Apple имеются системные API для преобразования и сериализации XML и .plists в другие форматы данных и из них.

Редактирование списков свойств

Как уже упоминалось, вы можете редактировать файлы .plist напрямую, открыв их в текстовом редакторе или в Xcode.

Например, если вы откроете файл .plist в TextEdit, вы увидите неформатированный XML с тегами. Чтобы изменить данные файла .plist в текстовом редакторе, вам необходимо понимать теги XML и то, как они работают. Теги XML очень похожи на теги HTML.

В Xcode вы можете просто открыть файл .plist или добавить его в окно проекта Xcode, а затем щелкнуть его один раз в Навигаторе проекта слева. Это отобразит содержимое .plist на панели справа:

Окно Xcode, отображающее файл plist с информацией о версии.

Редактирование файла .plist в Apple Xcode.

В приведенном выше окне показан файл version.plist для приложения Apple Chess: каждая строка представляет собой один элемент данных, ключи для каждого элемента перечислены в левом столбце, каждый тип данных показан в центральном столбце, а значение каждого ключа в столбце на право.

Чтобы изменить данные файла .plist в Xcode, либо щелкните один раз данные одной строки, либо нажмите клавишу и введите новую информацию, либо щелкните небольшое всплывающее меню в центральном столбце строки, чтобы изменить ее тип. Во всплывающем меню перечислены только известные и допустимые типы данных .plist.

После того как вы внесли все необходимые изменения, просто выберите Файл->Сохранить файл .plist (или нажмите Command-S на клавиатуре).

Одним из огромных преимуществ XML является то, что вы можете редактировать файлы на любой платформе, сохранять их, а затем копировать между компьютерами без необходимости их преобразования. Локализация программного обеспечения часто выполняется таким образом: строки текста сохраняются в файлах .strings для перевода между языками. Строковые файлы также содержат стандартный XML с использованием пар ключ/значение.

Файлы InfoPlist.strings, включенные в приложения, содержат локализованные версии строк, найденных в описательной информации для идентификации приложения. Это текст, который появляется, например, когда вы выполняете команду «Файл» -> «Получить информацию» о приложении в Finder.

Совсем недавно файл version.plist, включенный в каждое приложение, может содержать информацию о версии приложения, хранящуюся в формате XML с использованием ключей Apple, таких как CFBundleVersion и CFBundleShortVersionString .

В документации для разработчиков Apple есть раздел, посвященный спискам информационных свойств.

Префикс «CF» в ключах .plist Apple представляет Core Foundation — API на основе C, используемый для управления базовыми типами данных и .plists на платформах Apple.

Строковые файлы в разработке платформы Apple

В разработке Apple строки часто сохраняются в файле .strings или таблице строк для локализации. Разработчики могут передать свои строковые файлы для локализации переводческим компаниям, чтобы им не приходилось выполнять перевод.

Если вы заглянете внутрь пакета (папки) приложения, вы можете увидеть несколько файлов .strings, хранящихся в языковых папках, каждая из которых заканчивается на «.lproj» и имеет двухсимвольный префикс по стандарту ISO для названия страны. Дублируя и изменяя содержимое каждой версии строковых файлов, разработчики могут добавлять новые языки в интерфейсы приложений, не зная этих языков.

macOS и iOS достаточно умны, чтобы загрузить правильный файл или таблицу локализованных строк для текущего языка, используемого на устройстве Apple.

Используя отдельные строки и файлы .plist, пользовательский интерфейс приложения можно изменить во время выполнения или позже — без необходимости компилировать текст в двоичный код приложения. Это известно как динамическая загрузка.

Вот почему вы можете изменить язык системы в настройках на устройстве Apple, и то же приложение обновит текст пользовательского интерфейса для выбранного нового языка. В старых операционных системах поставщикам приходилось поставлять отдельные языковые версии приложения для каждой страны или языка.

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

Вы можете узнать больше о форматах .plist и типах CF в Терминале, набрав

Вы можете узнать больше о форматах .plist и типах CF в Терминале, набрав «man plist».

Редактирование списков свойств в Терминале

macOS включает приложение (UNIX) Терминал (оболочка), которое позволяет вам вводить команды в командной строке для выполнения действий. Одним из наиболее эффективных способов использования Терминала является пакетная обработка и написание сценариев для автоматизации процессов.

Многие команды терминала включают флаг -r (рекурсивный), указывающий команде продолжать обработку всех файлов, которые она находит в данной папке, независимо от того, насколько глубоко вложены эти файлы.

Вы можете использовать Терминал как для ручной, так и для автоматической обработки файлов .plist и .strings для более быстрого редактирования.

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

В этой статье мы не будем рассматривать автоматизацию сценариев оболочки, но есть много хороших книг и онлайн-руководств по написанию сценариев оболочки для пакетной обработки.

OS X раньше продавалась в коробках

OS X раньше продавалась в коробках

Редактирование списка свойств в Терминале вручную

Чтобы отредактировать файл .plist в Терминале, используйте встроенную команду по умолчанию. defaults позволяет редактировать и просматривать файлы .plist, а также устанавливать системные настройки для файлов .plist известной операционной системы, используя имена.

Для полного использования команд по умолчанию в типе терминала:

man по умолчанию и нажмите Return на клавиатуре.

Чтобы выйти из системы man в Терминале, нажмите Control-Z.

Основным вариантом по умолчанию для изменения значения в существующем файле .plist является параметр записи, за которым следуют новые данные для записи.

Как упоминается на странице руководства, новые данные должны быть в определенном формате (обычно другой .plist или словарь) и должны содержать записываемые ключи и значения. Формат этих данных должен быть точным, иначе команда может завершиться неудачей или данные файла могут быть повреждены.

Например, на странице руководства показано изменение массива в .plist с именем «Цвет по умолчанию» на новое значение (255,0,0). Для этого вы должны использовать команду:

по умолчанию напишите com.companyname.appname «Цвет по умолчанию» ‘(255, 0, 0)’

Где «имя приложения» — это имя приложения для компании «имя компании».

Вы также можете перезаписать существующие значения в .plist другим .plist. Например:

defaults write com.companyname.appname ‘{ «Цвет по умолчанию» = (255, 0, 0); «Шрифт по умолчанию» = Helvetica; }’;

В этом примере новые данные .plist заключены в фигурные скобки и содержат две пары ключ/значение: «Цвет по умолчанию» и «Шрифт по умолчанию».

Будьте осторожны при записи в существующие файлы настроек, поскольку если вы повредите данные в файле .plist, используемом macOS, ваш Mac может перестать работать правильно.

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

Вы можете распечатать список всех доменов на вашем Mac, используя опцию доменов:

Вы можете узнать больше о форматах .plist в Терминале, набрав

Вы можете узнать больше о форматах .plist в Терминале, набрав «man plist».

Редактирование файла списка свойств за пределами домена настроек

Чтобы отредактировать любой произвольный файл .plist, расположенный в любом доступном для записи месте в файловой системе, используйте опцию filepath. Это позволяет вам редактировать .plist так же, как вы это делали выше для файлов настроек, но для любого файла .plist по любому заданному пути. путь к файлу также работает с командой чтения.

значения по умолчанию читаются ~/Library/Containers/com.apple.TextEdit/Data/Library/Preferences/com.apple.TextEdit.plist

считывает файл настроек приложения TextEdit, расположенный в папке библиотеки пользователя.

Но опция filepath работает для любого файла .plist, а не только для файлов настроек или файлов, принадлежащих приложениям.

Написав и объединив команды по умолчанию в автоматизированный файл сценария, вы увидите, насколько легко и без особых усилий можно будет пакетно обрабатывать файлы .plist.

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

Команда defaults также имеет параметры для добавления или замены определенных типов данных в файле .plist.

Система настроек по умолчанию использовалась в macOS, Mac OS X и iOS на протяжении десятилетий и фактически была одной из оригинальных технологий, используемых в NeXTStep — предшественнике большинства современных операционных систем Apple.

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

В Руководстве пользователя терминала Apple есть небольшой раздел, в котором описывается, как использовать систему по умолчанию для редактирования файлов и настроек .plist.

Если вы используете компьютер с Windows, обратите внимание на действительно классные инструменты редактирования XML, созданные Altova.

Оставить комментарий