MacPorts

经历了几天没有网络的日子,总算在学校初步安顿下来了。图书馆不错,网速很快 🙂

刚发现Mac下的一个好东西 MacPorts, 手册在这里MacPorts Guide

相当于Linux下的包管理工具吧,可以自动处理依赖。要安装软件的时候,一行命令解决问题。

$port install XXX

各种用法手册里都介绍了,手册足够长,完全没有耐心一次看完..

PlistBuddy

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

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 

输出

ValueA

这些都是简单的功能。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
man PlistBuddy