![如何停止 OS X 编译/转换 .plist 文件](https://linux22.com/image/553711/%E5%A6%82%E4%BD%95%E5%81%9C%E6%AD%A2%20OS%20X%20%E7%BC%96%E8%AF%91%2F%E8%BD%AC%E6%8D%A2%20.plist%20%E6%96%87%E4%BB%B6.png)
我目前正在设置几个 OS X 客户端和服务器,经常需要打开/编辑 .plist 文件。令人讨厌的是,OS X 将这些 plist 文件编译为二进制格式,大概是为了提高读取速度,以提高性能,这很好,但每次打开它们时我都需要将它们转换回 xml,这对我来说比微不足道的性能提升更重要。
因此我必须采取以下任一措施:
- 使用 Plist 编辑器 - 我不喜欢它,并且它需要安装 Xcode - 在客户端机器上并不总是可行的。
- 使用 plutil: 转换它们
plutil -convert xml1 file.plist
- 这是一个 PITA。
有没有办法阻止 OS X 将好的 XML plist 转换为 Devils 的二进制格式?
答案1
我认为属性列表文件的格式完全由创建/更新文件的程序决定。Cocoa 属性列表序列化方法和核心基金会都采用格式选项,让程序指定“XML”或“二进制”;没有像“使用一些外部指定的默认值”这样的值。程序可以基于一些集中设置自行设置默认值,但我不知道有任何这样的设置(当然它可能只是没有记录;关键是它仍然仅限于采用这种“手动默认”惯例的应用程序)。
PlistBuddy是一个灵活且大多可编写脚本的属性列表编辑器(例如默认值只能访问/修改属性列表“顶层”的值,但是PlistBuddy可以访问/修改任意深度的值)。它在 10.5 及更高版本中可用/usr/libexec/PlistBuddy
。它未与 10.4 上的系统捆绑在一起,但您通常可以在以下位置找到它/Library/Receipts/*/Contents/Resources/PlistBuddy
(例如/Library/Receipts/iTunesX.pkg/Contents/Resources/PlistBuddy
)。
例如
检查属性列表文件
PlistBuddy -c print /path/to/some/plist/file
清除(或创建)plist 文件并设置
CFBundleIdentifier
为com.apple.plistbuddy
PlistBuddy -c 'clear dict' \ -c 'add :CFBundleIdentifier string' \ -c 'set :CFBundleIdentifier com.apple.plistbuddy' \ /path/to/some/plist/file
您还可以使用osascript运行命令系统事件“Property List Suite”。从 shell 命令行运行肯定不太方便,但对于更自动化的检查和修改(即通过脚本完成)来说还是不错的。此套件中的命令在 10.5 及更高版本上提供写入访问权限(10.4 为只读)。