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.你的应用,右键单击应用程序包,选择显示包装内容, 导航内容, 打开信息列表使用文本编辑器,或者更好的是使用属性列表编辑器,例如属性列表编辑器或者Xcode 4(均为 Apple 开发者工具的一部分)并查找CFBundleIdentifier或类似的东西。
您可以使用的另一个工具是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