最近由于工作需要,发现了这么一个小工具。

PlistBuddy是一个Mac里的命令行下读写plist文件的工具。 位于/usr/libexec/下,由于这个路径不在默认的PATH里,需要通过绝对路径/usr/libexec/PlistBuddy引用。

使用起来很简单,功能也很丰富。

举几个例子:
A.plist内容如下

B.plist内容如下

通过命令打印出plist的内容

/usr/libexec/PlistBuddy -c "print" A.plist

得到结果

Dict {
KeyA = ValueA
KeyC = ValueC
KeyB = ValueB
}

通过命令得到一个entry的值

$ /usr/libexec/PlistBuddy -c "print KeyA" A.plist

输出

这些都是简单的功能。PlistBuddy最好用的一个功能应该算是merge了。
merge命令可以合并两个plist文件,一个认为是源文件,一个作为目标文件。
比如命令

/usr/libexec/PlistBuddy -c "merge A.plist" B.plist

PlistBuddy把A.plist中的条目逐个插入到B.plist中,如果B.plist中已经有相同Key的条目就跳过此条目。 如上面的命令,得到结果

$ /usr/libexec/PlistBuddy -c "merge A.plist" B.plist
Duplicate Entry Was Skipped: KeyA
$ /usr/libexec/PlistBuddy -c "print" B.plist
Dict {
KeyC = ValueC
KeyD = ValueD
KeyA = ValueNewA
KeyB = ValueB
}

得到新的B.plist如下

更多命令可以通过man或者-h来查看

$/usr/libexec/PlistBuddy -h

PlistBuddy的更多相关文章

  1. 第3月第8天 RefCounted PlistBuddy

    1.RefCounted引用计数 class Frame : public RefCounted<Frame> { // ... } http://www.cnblogs.com/dsky ...

  2. 用PlistBuddy修改Plist文件

    Plist文件是以.plist为结尾的文件的总称. 众所周知, Plist在Mac OSX系统中起着举足轻重的作用,就如同Windows里面的Registry一样,系统和程序使用Plist文件来存储自 ...

  3. PlistBuddy简单使用

    PlistBuddy简单使用 由于PlistBuddy并不在Mac默认的Path里,所以我们得通过绝对路径来引用这个工具: 查看帮助 /usr/libexec/PlistBuddy --help 下面 ...

  4. Mac下Jenkins+SVN+Xcode构建持续

    1 安装Jenkins Jenkins是基于Java开发的一种持续集成工具.所以呢,要使用Jenkins必须使用先安装JDK. JDK安装 JDK 下载地址 jdk 1.8.png 安装JDK的过程略 ...

  5. iOS 自动追加版本时间版本号脚本

    buildNumber=$(/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "${PROJECT_DIR}/${I ...

  6. xcodebuild编译ipa

    #!/bin/sh # autoBuild.sh # CTest # # Created by Ethan on 14-11-3. # Copyright (c) 2014年 Ethan. All r ...

  7. iOS 自动化打包

    理想的情况:不打开工程的情况下,直接双击就能打包出一个IPA文件,这样就可以让测试直接使用 itools 进行安装. 分如下两种情况: 1)不依赖cocoapod  管理项目的自动化. 如果没有一个简 ...

  8. iOS工作小技巧及填坑记录

    以下是本人在iOS开发工作中使用的一些小技巧,记录一下. 1.使用XXX.pch文件便捷开发+加速Build 在IOS开发的项目中有一个XX_Prefix.pch XX_Prefix.pch:扩展名. ...

  9. 浅谈iOS版本号

    作者:Travis FIR.im 一直在尽量兼容不同使用习惯的版本号形式, 但是在使用中我们发现好多开发者对怎么更好的用版本号来标示应用很陌生. 这是篇基础文章, 简单介绍 iOS 的版本号. 名词解 ...

随机推荐

  1. 磁条卡,IC卡,ID卡,信用卡芯片卡,信用卡磁条卡 等等的区别

    1.条码卡:该卡卡面上有一串条码,通过扫描枪或者相应的条码读卡器读出该条码卡的卡号.根据条码的不同又分为39码等其它码.条码卡仅仅是一个编号,不存蓄其它内容.特点:价格便宜类似磁卡. 2.磁条卡:类似 ...

  2. 怎么彻底删除2345的各种顽固Process

    清晨打开电脑,都是2345的不良新闻,心情不美美哒 2345如何卸载? “C:\Windows\System32\drivers”目录删除Mslmedia.sys 开始-运行-cmd输入“sc del ...

  3. 原生js的博客

    原生js一里边还有很多二三等http://www.cnblogs.com/charling/p/3527561.html 选区器 http://wenku.baidu.com/link?url=zr2 ...

  4. Javascript 面向对象-继承

    JavaScript虽然不是面向对象的语言,但是我们通过构造可以让其支持面向对象,从而实现继承.重写等面向对象的特性.具体代码如下: //创建类Person function Person(age,n ...

  5. OnXXX函数与XXX事件的关系

    OnPaint是Control类中的方法,Paint是事件,Paint是用于改变部分显示用比较合适,实际上Paint事件在OnPaint中被调用,如果你重写OnPaint但是不调用base.OnPai ...

  6. 12月13日 什么是help_method,session的简单理解, find_by等finder method

    helper_method Declare a controller method as a helper. For example, helper_method :link_to def link_ ...

  7. PHP导出为Word格式

    <?php $file = './html.doc'; $table = '<table width="100%"><tr><td>'.i ...

  8. UVA-12304 Race(递推)

    题目大意:求n个人比赛的所有可能的名次种数.比如:n=2时,有A第一B第二.B第一A第二.AB并列第一三种名次. 题目解析:既然是比赛,总有第一名.第一名的人数可能是i (1≤i≤n),则剩下待定的人 ...

  9. Leetcode 82

    有个错误就是member access within null pointer of type 'struct ListNode' 其实就是判断了指针是否异常了,比如NULL->next之类.要 ...

  10. js传入和传出参数乱码

    向js传入参数乱码问题 第一种解决方法 当Js中输出内容中包含中文,可能会导致出现乱码. 如何解决: 1. 设置页面编码: Html代码 <meta http-equiv="Conte ...