在Mac下直接打开和修改Plist文件
在Mac下直接打开和修改Plist文件
plist是Mac种非常普遍的一种文件格式,类似xml,通过键值对的方式来进行一些配置。而PlistBuddy则是Mac自带的专门解析plist的小工具,Buddy为好朋友,伙伴的意思。从名字不难看出PlistBuddy对plist文件的友好支持。
最早接触到plist文件还是我刚上高中的时候,那时候iOS设备的越狱还很盛行,可以让你直接接触到iOS App的内容,也就给了你修改软件的机会。当时和表弟一起在完全不同代码的情况下瞎改,根据英文意思猜功能。但效果也很不错,把当时刚刚开始臃肿起来的QQ删掉了很多功能(其实只是屏蔽掉了,眼不见为净的那种)。然后发现很多单机游戏的数据也都储存在plist文件中,还没有加密。所以也获取了很多本来要花时间下去才能获得的游戏资源。什么,你说IAP?当时没有几个游戏有IAP。。。
当时使用的在iOS上的编辑器,早就想不起名字了,说不定是自带的。但是昨天,我因为想修改一下字典库的信息,再次接触到了plist文件。发现用预览可以直接看到里面的内容,但是用文本编辑器或者sublime text却无法打开。在晚上搜了一下,可能是二进制文件的关系。
那就看看有什么软件可以打开它。在网上搜了一圈,找到了几个软件,例如 Plist Editor,这个确实可以直接可视化编辑plist文件,但是要25元。本来想买了,后来一想,我就改这么一两个文件,以后也用不到了,却要我花25元来买它,还要空出25MB的硬盘来装他,实在不合算(才不是我有软件的洁癖呢。。。)。
所以想能不能有其他的方法。于是就在Google上找到了这个 PlistBuddy 。貌似可能听说这个Plist Buddy并不是系统自带的,但是Apple的很多软件都会带有Plist Buddy。由于PlistBuddy并不在Mac默认的Path里,所以我们得通过绝对路径来引用这个工具。我们先来看一下帮助:
/usr/libexec/PlistBuddy --help
如果没问题的话,下面给几个实际应用:
新建:
新建一个plist文件:
/usr/libexec/PlistBuddy Info.plist
$ Command: save
$ Command: exit
你可以在你的用户文件夹下找到创建的Info.plist 这个plist文件可以被sublime text打开,但是其他应用的plist不一定可以。所以我们假设这个plist无法用sublime text打开,继续用PlistBuddy操作。 新建的plist内容如下:
添加:
添加普通字段:
/usr/libexec/PlistBuddy -c 'Add :Version string 1.0' Info.plist
此时内容如下:
添加数组字段,分两步:
注意:key之间用 :
隔开,且不能有空格:
# 先添加key值
/usr/libexec/PlistBuddy -c 'Add :Application array' Info.plist
# 添加value值
$ /usr/libexec/PlistBuddy -c 'Add :Application: string app1' Info.plist
$ /usr/libexec/PlistBuddy -c 'Add :Application: string app2' Info.plist
$ /usr/libexec/PlistBuddy -c 'Add :Application: string app3' Info.plist
此时内容如下:
添加字典字段,分两步:
# 先添加key值
/usr/libexec/PlistBuddy -c 'Add :Person dict' Info.plist
# 添加value值,
$ /usr/libexec/PlistBuddy -c 'Add :Person:Age string secret' Info.plist
$ /usr/libexec/PlistBuddy -c 'Add :Person:Name string Xuan' Info.plist
$ /usr/libexec/PlistBuddy -c 'Add :Person:sex string boy' Info.plist
$ /usr/libexec/PlistBuddy -c 'Add :Person:weight string 65' Info.plist
此时内容如下:
查看:
查看plist内容:
/usr/libexec/PlistBuddy -c "print" Info.plist
效果如下:
查看字段内容:
/usr/libexec/PlistBuddy -c 'Print :Person' Info.plist
效果如下:
查看特定下标的值:
/usr/libexec/PlistBuddy -c 'Print :Application:2' Info.plist
效果如下:
删除:
删除特定字段值:
/usr/libexec/PlistBuddy -c 'Delete :Version' Info.plist
结果如下:
修改:
修改特定字段值:
/usr/libexec/PlistBuddy -c 'Set :Application:1 "this is app1"' Info.plist
结果如下:
合并:
合并命令:
# 将A.plist 合并到 B.plist中
/usr/libexec/PlistBuddy -c 'Merge A.plist' B.plist
若两个plist文件中与相同的键值,终端中会提示B.plist中有重复的键值,默认跳过该键值的合并。
合并前的两个文件:
合并后:
全文完。 哦,你说字典库嘛?这可真是个好东西,具体下次说。
© 商业转载请联系站长获得授权;
非商业转载请注明文章来源及链接。