GNU的神兵利器
Grep,AWK,Sed,find …伟大的GNU工具集,天才们写给自己的神兵利器,每一个都削铁如泥,双剑或数剑合璧更是无坚不摧。但是它们每一个都脾气古怪,难以驾驭,功力不够就会反噬自身。这些工具都有着长长的参数选项,除了资深的系统管理员,我很少看到有人能真正的掌握和合理的利用他们,大多数开发者都是熟悉自己经常用到的个别命令,等到需要召唤它们更强大功能的时候,往往力不从心。
比如在项目中,代码的编译或安装脚本中就有不少像下面这样的命令,清空产生的中间文件,用的很频繁。
1 | find . -type f -name '*.if.*' -print0 | xargs -0 rm -rf |
最基础的linux命令,但是这样的命令我从来不自己手动输入,万一哪天打错某个参数,或者多打了一个空格,谁知道会发生什么,这样的事情很多,请看一个空格引发的惨剧。
Vim和Grep
吐槽归吐槽,作为有上进心的有为程序员,还是要积极练习使用这些神器的。对于程序开发来说,这其中可能Grep最重要,查找所有使用某个函数的地方
1 | find . -name "*.cpp" | xargs grep "myfunction" |
查找crash的进程 ……
1 | ps -aux | grep "myapp" |
Grep配合正则表达式有无数的用法,喜欢研究可自行google之,我们的重点是Vim。Vim是内置支持Grep的,Vim7.3更是更新了Grep的引擎,在Vim内Grep的速度更快了。但是Vim中的Grep一样不容易掌握,还好有很多简化Grep的插件可以用,包括grep的变种ack,这其中使用起来最方便的,最人性化的要数EasyGrep了。
EasyGrep 主要功能:
- 可视化的配置界面,可以让你很方便设置搜索路径,配备模式,递归模式等等。
- 可以直接搜索当前光标下的单词,你不用再手动输入命令了。
- 可以全局查找并替换,这在代码重构的时候特别有用,虽然这是IDE的基本功能,但是在Vim下我还没有看到那个插件做到EasyGrep这么好。用户可以选择是否替换当前匹配项,发现做错了,一个命令就可以取消所有的替换。
下面就是EasyGrep的配置界面