如何在 OSX 中扫描应用程序选项

如何在 OSX 中扫描应用程序选项

defaults我偶尔会看到一些操作指南,它们允许您使用命令行更改 OSX 上某些应用程序的功能。我知道人们通过扫描应用程序来找到这些配置指令。这是怎么做到的?

修复:我发誓它是option。我的错。

答案1

defaults不仅可以使用它来更改这些值,还可以列出它们。

defaults read -g显示“全局”选项,同时defaults read com.company.ProgramName显示默认值com.company.ProgramName(即配置选项)用于特定程序。在此上下文中,捆绑标识符该程序的,例如com.apple.TextEditcom.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

相关内容