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

исправить: мог поклясться, что это был option . Виноват.

2 ответа2

4

Вы можете использовать defaults по умолчанию, чтобы не только изменить эти значения, но и перечислить их.

defaults read -g показывает "глобальные" параметры, а по defaults read com.company.ProgramName показывает значения по умолчанию (то есть параметры конфигурации) для конкретной программы. В этом контексте com.company.ProgramName - идентификатор пакета программы, например, com.apple.TextEdit или com.culturedcode.Things Подробнее об этом.


Например, запустите по defaults read com.apple.Finder и вы найдете строку, которая говорит AppleShowAllFiles = FALSE или что-то подобное. Теперь будьте предприимчивы и запустите defaults write com.apple.Finder AppleShowAllFiles -boolean TRUE и перезапустите Finder, чтобы увидеть, что происходит.

Для получения дополнительной информации о том, как использовать defaults , введите man defaults для просмотра документации. Это может стать довольно сложным, и некоторые вещи, связанные со списками и словарями, сделать практически невозможно. Как только вы доберетесь до этого, найдите /usr/libexec/PlistBuddy - есть несколько примеров, как использовать его на этом сайте, просто используйте функцию поиска.


Узнайте идентификатор пакета конкретной программы:

Чтобы выяснить, что ваше приложение использует для com.vendor.yourapp, щелкните правой кнопкой мыши пакет приложения, выберите « Показать содержимое пакета», перейдите к « Содержанию», откройте Info.plist с помощью текстового редактора или, что лучше, редактора списка свойств, такого как « Редактор списка свойств» или Xcode 4 (оба являются частью инструментов разработчика Apple) и ищите CFBundleIdentifier или подобное.


Еще один инструмент, который вы можете использовать, это strings . Он отобразит все строки (т.е., возможно, полезные последовательности символов) в двоичном файле. Следует отметить , что это дает тонн ложных срабатываний, так как вызовы функций Objective-C, также показаны, а также регулярный выход , который отображается на пользовательском интерфейсе.


Secrets также предлагает базу данных скрытых настроек для OS X, отсортированных по приложениям. Они могут быть изменены с использованием defaults по умолчанию . Для вашего удобства вы также можете загрузить панель настроек с веб-сайта, которая позволяет вам изменять их в настройках системы.

1
#!/bin/sh

# find key names in ~/Library/Preferences/`osascript -e 'id of app "iTunes"'`.plist
defaults read com.apple.iTunes | ruby -e 'puts STDIN.read.scan(/^    \"?([a-zA-Z_.\-]+?)\"? /)' > keys.txt

# extract identifiers from a binary
# (the output is tens of thousands of lines even after grepping)
strings - /Applications/iTunes.app/Contents/MacOS/iTunes | egrep "^[a-zA-Z][a-zA-Z_.\-]{7,}$" | ruby -e 'puts STDIN.read.split("\n").uniq' > strings.txt

# the identifiers for preferences often appear near each other
for x in `cat /0/keys.txt`; do
    grep -C 10 "$x" strings.txt
done | ruby -e 'puts STDIN.read.split("\n").uniq' > strings2.txt

Другой метод, использующий отладчик GNU: arcticmac.home.comcast.net/~arcticmac/tutorials/gdbFindingPrefs.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .