Respostas:
Isenção de responsabilidade: sou o autor de ~/.osx
uma coleção de defaults write
configurações . Estas são as técnicas que eu uso para encontrar configurações. Deixe-me saber se existe um método melhor / mais fácil que não mencionei aqui!
Para a maioria das configurações não ocultas, é assim que você pode encontrar as chaves de preferência corretas no Terminal.app:
defaults read > a
# Change the setting
defaults read > b
diff a b
Para configurações ocultas, fica mais complicado. Você pode usar o strings
utilitário de linha de comando em qualquer executável binário e ver se algum texto resultante se parece com uma chave de preferência. Por exemplo:
strings /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder
Aqui está outro exemplo que examinará todos os .framework
arquivos /System/Library/Frameworks/
e filtrará um pouco a saída:
strings /System/Library/Frameworks/*.framework/Versions/Current/* /System/Library/Frameworks/*/Frameworks/*/Versions/Current/* 2> /dev/null | grep -E '^[a-zA-Z0-9_.-]{10,80}$' | sort | uniq
Há também uma ferramenta chamada GDB que pode ser usada para encontrar preferências ocultas.
defaults read;
funciona bem aqui.
Outro comando de strings:
for f in $(mdfind kMDItemContentType==public.unix-executable -onlyin /System/Library/); do strings $f 2> /dev/null | grep -E '^[[:alnum:]_.-]{10,80}$' | grep ^Apple | sort -u | sed "s/^/${f##*/} /g"; done
sudo opensnoop -n cfprefsd
mostra quais listas de propriedades são modificadas. Você pode usar o fseventer para exibir outras alterações do sistema de arquivos em tempo real.
O padrão tem um subcomando find:
$ defaults find nsquitalw
Found 1 keys in domain 'Apple Global Domain': {
NSQuitAlwaysKeepsWindows = 1;
}
Os arquivos de cabeçalho geralmente contêm definições para chaves de preferência:
grep PreferenceKey -r ~/Code/Source/WebKit/ | grep '\.h:'
O que assumi da sua pergunta é que você deseja explorar ajustes / configurações de um aplicativo. Você pode ler as preferências de um aplicativo com este comando trivial
defaults read NSGlobalDomain
ou
defaults read com.google.Chrome
para ler as preferências graváveis do Chrome nos comandos de gravação padrão que você solicitou.