生物信息学

linux数据流处理技巧

2019-08-28  本文已影响0人  wo_monic
创建基于当前日期的文件
mkdir result-$(date +%F)   //生成result-2019-08-28格式的文件
把一个命令的输出结果嵌入另一个命令里
``等价于$()  把要引用的值的命令放在``或$()内
grep -c '^>' maize.fa
echo "this file total have `grep -c '^>' maize.fa` sequence.
echo "this file total have $(grep -c '^>) maize.fa` sequence.
程序前后台运行

& nohup screen
mv test1 test2 & 程序后台运行

程序运行后,按下CTRL+Z暂停程序,可以用如下的命令分别置程序于后台或前台运行。

bg %1 进程1后台运行
fg %1 进程1前台运行

或者是nuhup

nuhup会向标准输出流的文件前面加上nohup的log信息,有些后续程序在运行nohup挂起的输出文件时,可能会因为头部的多余信息而报错

screen

screen是新开的屏幕,可以把screen挂起到后台继续运行

常规程序pipeline

echo analysis start at $(date +%x_%X)   #输出程序开始的时间
mkdir programe_result-$(date +%F)   #创建格式为程序名+日期格式的文件
nohup porgrame  2>./result-$(date +%F)/error-`date +%X` & #后台运行程序,同时将错误输出流重定向到上面新建的文件,以error+时间来命名。

程序的进程控制用于链式编程

&&前一个执行成功后,再执行后一个程序。
||前一个执行失败后,再执行后一个程序。

ls -l nide.xs && find -a "^>" mide.fa ##前一个程序成功就执行后续命令
cd test || mkdir test   ##前一个命令执行错误时,执行后一个命令。

例1:如果想把工作目录移到运行环境的result目录,如果不存在则创建该目录
cd result || mkdir result && cd result
例2:如果执行某个命令出错,则报出错误位置信息。
samtools -sort index.fa || echo "error in samtools"

time命令

time command1

完整的命令例子:

nohup time java -jar picard.jar test  2>error-`date +%F &`

nohup挂起程序
time计算程序运行时间
2>error-`date +%F` 错误信息重定向

路径尽量使用相对路径

相对路径...开头的路径
绝对路径/或字符开头的路径

使用断点

Python里面是assert(),而R里面是 stopifnot()

使用正则表达式

例如当前目录有以下文件,

├── NS-1.map.sam
├── NS-2.map.sam
├── NS-3.map.sam
├── WT-1.map.sam
├── WT-2.map.sam
└── WT-3.map.sam

ls -lh {NS,WT}-{1..3}.map.sam
可以匹配到当前目录所有的文件。

数字命名

使用数字时尽量使用01,001代替1

每个程序要写文档

注意文档应该包括以下内容:

变量或函数命名
上一篇下一篇

猜你喜欢

热点阅读