defaults
我偶爾會看到一些說明,允許您在命令列中使用 OSX 來更改某些應用程式的功能。我知道人們透過掃描應用程式找到這些配置指令。這是怎麼做到的?
修復:可以發誓是的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,右鍵單擊應用程式包,選擇顯示包裝內容, 導航內容, 打開資訊表使用文字編輯器,或更好的屬性清單編輯器,例如屬性清單編輯器或者Xcode 4(都是蘋果開發者工具的一部分)並尋找CF包標識符或類似的。
您可以使用的另一個工具是strings
.它將顯示二進位檔案中的所有字串(即可能有用的字元序列)。請注意,這會產生噸誤報,因為也顯示 Objective-C 函數調用,以及 UI 上顯示的常規輸出。
秘密還提供了 OS X 隱藏設定的資料庫,按應用程式排序。這些可以透過使用來更改defaults
。為了您的方便,您還可以從網站下載首選項窗格,它允許您透過系統首選項更改這些設定。
答案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