Jak odkryć więcej domyślnych poprawek zapisu w OS X?

13

Chciałbym zapoznać się z nowymi poprawkami, które można wykonać za pomocą polecenia „defaults write” w OS X (ML).

Co mogę zrobić, aby samemu je znaleźć, niż szukać w Internecie znanych poprawek?

Tom S.
źródło

Odpowiedzi:

20

Oświadczenie: Jestem autorem ~/.osxzbioru defaults writeustawień . To są techniki, których używam do znajdowania ustawień. Daj mi znać, jeśli istnieje lepsza / łatwiejsza metoda, o której tu nie wspomniałem!


W przypadku większości nie ukrytych ustawień w ten sposób można znaleźć poprawne klucze preferencji w Terminal.app:

defaults read > a
# Change the setting
defaults read > b
diff a b

W przypadku ukrytych ustawień robi się trudniej. Możesz użyć stringsnarzędzia wiersza polecenia na dowolnym binarnym pliku wykonywalnym i sprawdzić, czy tekst wynikowy wygląda jak klucz preferencji. Na przykład:

strings /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder

Oto kolejny przykład, który przejrzy wszystkie .frameworkpliki /System/Library/Frameworks/i nieco odfiltruje dane wyjściowe:

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

Istnieje również narzędzie o nazwie GDB, za pomocą którego można znaleźć ukryte preferencje.

Mathias Bynens
źródło
1
Dziękuję bardzo i nie mogę uwierzyć, że mi odpowiadasz! Dawno temu wiedziałem o twojej miłej liście na github. Dziękuje bardzo! Spróbuję teraz.
Tom S
2
@Lri FWIW, wykonałem czystą instalację Mountain Lion w zeszłym tygodniu i defaults read;działa dobrze tutaj.
Mathias Bynens
0

Kolejne polecenie łańcuchów:

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 cfprefsdpokazuje, które listy właściwości są modyfikowane. Możesz użyć fseventer do wyświetlania innych zmian w systemie plików w czasie rzeczywistym.

defaults ma komendę find:

$ defaults find nsquitalw
Found 1 keys in domain 'Apple Global Domain': {
    NSQuitAlwaysKeepsWindows = 1;
}

Pliki nagłówkowe często zawierają definicje kluczy preferencji:

grep PreferenceKey -r ~/Code/Source/WebKit/ | grep '\.h:'
Lri
źródło
-1

Z twojego pytania wywnioskowałem, że chcesz poznać poprawki / ustawienia aplikacji. Za pomocą tego trywialnego polecenia możesz odczytać preferencje aplikacji

defaults read NSGlobalDomain

lub

defaults read com.google.Chrome aby odczytać preferencje zapisu chrome z domyślnego polecenia zapisu, o które prosiłeś.

Mr.Shan0
źródło