SHELL编程杂谈
最近一阵使用Linux颇多,N年前Unix上的经验还派上了不少用场。对于程序员来说Unix上编程(包括shell和C)应该是不可或缺的体验。总结一下shell编程的优势。
1)众多强大的工具,兼有正则利器。
最常用的我称为七种兵器
find 过滤出目标文件 剑意:长生剑,以所有文件为源头,过滤出感兴趣的一部分文件
grep 过滤出目标行 剑意:孔雀翎,这个厉害,一下命中要害过滤出所需的行内容
awk 文本处理工具 剑意:碧玉刀,将行内容大块切分组合
cut 文本截取工具 剑意:霸王*,简单截取使用较方便
sed 文本替换工具 剑意:离别钩,将不需要的勾出替换
tr 字符替换工具 剑意:小李飞刀,独门技艺只意识字符流,不分行处理
xargs 参数列表转换 剑意:多情环,不用for/while也能循环,舍我其谁
其中最重要的grep,awk,sed都支持正则表达,强大的工具为shell提供了基本保证。
当然除了这几个以外还有很多有用的工具,不一一列举。
2)管道 无疑是UNIX最具革命性的特征之一。
主要特点:
.不需要使用中间变量,不占用多于空间
.粘合众多工具,将积木式的工具构造方法发挥到极致
数据还在管道中流动,经过不同工具的重新铸造,可以无穷变化最终得到理想的形态,实在是一门艺术。
UNIX中常讲“一切都是文件”,对于管道来说一切都是流,没错,JAVA中流的概念与之很相似。
当然正确高效地使用则需要时间的积累,顺便推荐几本不错的参考书:
《高级Bash脚本编程指南》 目前只有电子版网上很容易找。涉及到Bash的细节非常深入。
《Linux Shell脚本攻略》 一个20岁的印度天才的作品,值得一读。
《正则指引》 关于正则表达内容全面翔实,国人原创精品,强烈推荐。
页:
[1]