コマンドラインを使用して OSX 上の一部のアプリケーションの機能を変更できるハウツーを時々見かけますdefaults
。アプリケーションをスキャンしてこれらの構成ディレクティブを見つける人がいることは知っています。それはどのように行うのですか?
修正: そうだと確信していたのですがoption
。私のミスです。
答え1
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アプリケーションバンドルを右クリックし、パッケージ内容を表示、 案内するコンテンツ、 開ける情報.plistテキストエディタ、または以下のようなプロパティリストエディタを使用する。プロパティ リスト エディターまたはエックスコード4(どちらもAppleの開発者ツールの一部です)そしてCFBundle識別子または類似のもの。
使用できるもう1つのツールは ですstrings
。これはバイナリファイル内のすべての文字列(つまり、おそらく有用な文字列)を表示します。これは次の結果をもたらすことに注意してください。トンUI に表示される通常の出力だけでなく、Objective-C 関数呼び出しも表示されるため、誤検知の可能性が高くなります。
秘密また、アプリケーション別にソートされた OS X の隠し設定のデータベースも提供しています。これらは を使用して変更できますdefaults
。便宜上、Web サイトから環境設定パネルをダウンロードして、システム環境設定でこれらを変更することもできます。
答え2
#!/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