如何停止 OS X 编译/转换 .plist 文件

如何停止 OS X 编译/转换 .plist 文件

我目前正在设置几个 OS X 客户端和服务器,经常需要打开/编辑 .plist 文件。令人讨厌的是,OS X 将这些 plist 文件编译为二进制格式,大概是为了提高读取速度,以提高性能,这很好,但每次打开它们时我都需要将它们转换回 xml,这对我来说比微不足道的性能提升更重要。

因此我必须采取以下任一措施:

  1. 使用 Plist 编辑器 - 我不喜欢它,并且它需要安装 Xcode - 在客户端机器上并不总是可行的。
  2. 使用 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 文件并设置CFBundleIdentifiercom.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 为只读)。

相关内容