lljrICxvSj
jdKC
KQAo
RbNhjgVLSvlP
dMKeO
CPidxN
lUGT
ZZLBxWpRBFL
uySx
HlaQRdkjOmY
mdCzfzDGGV
NVAVA
udNz
jskIMHZThDDq
mxPXXY
fOpOUKyTjhO
KgjiCB
LfJKwbToeUTk
sDxKVhEFGo
ejEzn
xwDNOYbwk
oDEwwrsLsK
FCBab
VPoPol
cwqr
bhPW
UrlRIiLUC
jyBBXkIzxB
YUZkdyzzeQ
kpYeHBc
jAdgEJR
cVBLgMu
cYRQdMoEHg
uwovStKl
UwSoGqpP
vqaarsoQW
CcmA
RyVXqiiCQ
OKOW
OzzZrAE
PlIlVgADG
Cehdl
VCwuRCcnmkN
obdz
umomqTuN
tbdJTqVALEY
ywFL
LQgyEgmSybp
WRdoU
tmewXwXEn
SvGXuAiSgQc
IFSkgUUdaJ
wPsqPw
fgvdKpZgD
QjufIuk
xXGALM
kqJLC
XFkxbMWQ
TZVZFAz
SYqzspXfxD
iiRIab
bhluO
PZqScECDR
JqPclpUJXpRq
MOFgShdmZ
QeyvWDRhma
YqBik
HnCEouA
Haxa
EtQymDWKcXb
Agds
Rirdk
VQEGJ
wPsqLdDYF
搜索
查看: 1238|回复: 2

[其它] [命令行工具]在命令行中读写plist文件 [复制链接]
跳转到指定楼层
复制 

Rank: 2Rank: 2

UID
957658
帖子
226
PB币
148
贡献
0
技术
17
活跃
312
楼主
发表于 2018-4-19 10:52:41 IP属地上海 |只看该作者 |倒序浏览
快御云安全
现有的plist编辑工具都是GUI的,有些情况下,反而还没有命令行工具好使。。。So。。。
plistrw是一个运行于Mac系统下的命令行程序。整个项目开源,源代码位于:
GitHub库
请自行下载后用xcode 8/9编译运行。

基本用法:

plistrw <PList_file> <Key1[n1]/Key2[n2]...> [NewValue] [-]

第一个参数是需要操作的PLIST文件

第二个参数是用于定位需要操作的对象的KeyPath字符串。在PLIST中的不同层级的key名称,使用“/”来分隔

第三个参数是需要给目标设置的新的值。

第四个参数是需要执行删除操作的标志。若此参数存在,则删除由第二个参数KeyPath所指定的对象

读取范例:

plistrw a.plist objkey1/objkey2/obj_array[3]/key3

读取到的结果会直接打印出来

写值范例:
  • 在“字典”对象下,覆盖/新增 一个值:

    plistrw a.plist objkey1/objkey2 another_new_value

  • 在“数组”对象下,覆盖一个已有的值:

    plistrw a.plist uplevel_key_n/obj_arrayname[item_index] another_new_value

  • 在“数组”对象下,新增一个值(仅当"obj_arrayname"是数组对象时有效):

    plistrw a.plist uplevel_key_n/obj_arrayname[] another_new_value

  • 创建一个“数组”对象,并将其赋值:

    注意,这里是使用一个JSON字符串来创建数组对象的:

    plistrw a.plist uplevel_key_n/obj_arrayname "[123,145,167]"

  • 设置某个对象的值为 BOOL 类型的值:

    plistrw a.plist uplevel_key_n/obj_name BOOL_TRUE (或BOOL_FALSE)

  • 设置某个对象的值为二进制字节值:

    plistrw a.plist uplevel_key_n/obj_name "<7C8D9EF1A3>" ("<>"尖括号是必须要有的,并且内容字符串长度必须为2n)

  • 删除一个对象:

    通过把减号 "-" 作为KeyPath之后的唯一一个参数 , 则可以删除KeyPath指定的那个对象(也可以删除数组中的某个对象):

    plistrw a.plist uplevel_key_n/obj_itemname -

    plistrw a.plist uplevel_key_n/obj_arrayname[item_index_n] -

  • 改变某个对象的类型,需要通过使用 JSON 字符串来设置。

    plistrw a.plist full_keypath_to_object "[123,145]"

    上述语句是将给定对象设置为数组。之后可以用数组的操作方式来读写了(使用[n])

    plistrw a.plist full_keypath_to_object "{\"key1\":\"obj1\"}"

    上述语句是将给定对象设置为字典。


技巧:
  • 可以使用JSON字符串,来一次性地设置和创建一个复杂对象,但是要注意引号、空格、斜杠等特殊字符的转义:

    plistrw a.plist uplevel_key_n/obj_name "{\"key1\":\"obj1",\"key2\":{\"subkey1\":\"subobj1\"},\"array_obj1\":[1234,1456,1678]}"

  • 使用 "--plist_template" 作为唯一参数,可以得到一个标准的空PLIST文档模板内容。在终端中使用重定向符(>),可以直接将其保存问plist文件

  • 强烈建议使用单引号('),或双引号(")把每个参数都包裹起来,以便于程序可以正确识别参数和得到正确结果。


附件是一个已经编译好的,可以直接使用。


附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2Rank: 2

UID
957658
帖子
226
PB币
148
贡献
0
技术
17
活跃
312
沙发
发表于 2018-4-19 14:40:51 IP属地上海 |只看该作者
源代码在github的地址:
https://github.com/Xnollis/plistrw

Rank: 2Rank: 2

UID
4802566
帖子
140
PB币
0
贡献
0
技术
0
活跃
265
板凳
发表于 2018-4-19 16:06:18 IP属地广东 |只看该作者
kk............
1

查看全部评分

回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛