前言
这篇文章属于原创,下面列出了从新手到专家的资料,如果你想成为专家,请认真阅读,特别是Regex, AWK, SED, 并发处理,脚本质量,命令和脚本执行速度,这直接决定了你能否用bash完成复杂的问题,目前我发现下面是网络能搜索到的关于Bash的顶级文档,如果你发现质量更高的文档,请告诉我,大家一起进步,为了达到Bash顶峰而努力。
另外我想说下,在某些情况下Bash也显得无能为力,或者解决起来不是很优雅。例如你要把数据转为图,树形结构数据,便于遍历,那么你要用Nosql数据库来辅助。如果你要解析json, xml数据,建议用python配合bash解决。虽然bash有json, xml_grep工具,但是不是很合适。
基础
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
http://www.gnu.org/software/bash/manual/bash.html
https://www.gnu.org/software/bash/manual/html_node/index.html
Grep & Find
Linux man page
Regex
http://www.grymoire.com/Unix/Regular.html
https://en.wikipedia.org/wiki/Regular_expression#POSIX_basic_and_extended
Sed
http://www.grymoire.com/Unix/sed.html
Awk
http://www.grymoire.com/Unix/Awk.html
Parallel
&
xargs -P
GNU Parallel tool : http://www.gnu.org/software/parallel/
Quality
- 单个脚本控制在20行内,功能尽量单一,可读性高,可测性高
- 日志文件一定要记录好,能够在出现问题是直接查看日志定位问题
- 每个脚本最好设置开关set -xeu -o pipefail
- 尽量使用并发命令,养成习惯,用并发的思维写代码
- 尽量一行脚本,或者多个管道拼接完成一件事
- 不用if语句,for语句这两个关键字,影响可读性
- 每写一个命令,请考虑性能问题,shell完成同一件事有n中方法,性能相差千百倍