在Mac下直接打开和修改Plist文件

在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内容如下:

新建plist文件
新建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

效果如下:

查看plist文件
查看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

结果如下:

删除一个plist字段
删除一个plist字段

修改:

修改特定字段值:

/usr/libexec/PlistBuddy -c 'Set :Application:1 "this is app1"' Info.plist

结果如下:

修改了一个plist字段
修改了一个plist字段

合并:

合并命令:

# 将A.plist 合并到 B.plist中
/usr/libexec/PlistBuddy -c 'Merge A.plist'  B.plist

若两个plist文件中与相同的键值,终端中会提示B.plist中有重复的键值,默认跳过该键值的合并。

合并前的两个文件:

plist合并前
plist合并前

合并后:

plist合并后
plist合并后

全文完。 哦,你说字典库嘛?这可真是个好东西,具体下次说。

正在加载评论区