shell进阶
写脚本需要记得模块化和可重复性
This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface. —Doug McIlory
shell脚本模块化的特点:
了解shell
1.可以使用
echo $0
/
echo $SHELL
看看当前使用的shell脚本,
适合bioinformatics的shell是zshell
2.重定向:充满了美感和速度(Speed and Beauty in One)
3.脚本流程的交互和终止:hangup/kill
-
&
跟在脚本后面可以在后台挂起(background process),需要保持运行shell的开启。可以用
jobs
查看
-
通过
ps
查看当前shell运行的程序,找到pid ,用
kill pid
终止挂起的程序
-
用
echo $?
查看上一脚本运行是否正常,脚本间可以用 && 或 || 连用,使短循环成立,感觉在脚本循环的时候特别有用
-
nohup: 可以用于长时间运行脚本或程序
4.通配符(wildcards)和括号在指令替换里的简单应用
5.little tricks
Unix Data Tools(前部)
善用unix/linux内置函数(Unix staples)而不是大段代码(其实是一切从简的原则?),大段代码维护成本很高,传播也不容易。这一部分可以说是生信数据分析的核心。
那么何时使用,如何合适地使用pipeline呢,先以文本处理为例讲起(今后的学习其实也一直贯穿着这种思维)。
1.Text类型的数据