小哥哥虽是生信分析人员但兼职部门服务器运维工作,今天要讲的也是小哥哥日常教我的一些linux的操作小技巧。小哥哥有多甜呢,看他写的程序就知道,程序运行-h查看帮助文档时,如果你的当前系统支持中文则显示中文帮助文档,如果支持英文则显示英文帮助。
1、 man
功能:查询命令用法,这条命令用好了可以解决很多命令的问题
语法:man <command>
Linux环境下双击Tab键可查看当前账户可使用的命令,这些命令均可使用man查看其详细用法。
man查看命令时,主要显示的信息分为以下几部分:
man主要信息说明 | |
NAME | 命令功能说明 |
SYNOPSIS | 命令执行语法,即使用格式的简单说明 |
DESCRIPTION | 命令详细说明,包括参数含义 |
OPTIONS | SYNOPSIS中提到的所有可选项的说明 |
FILES | 该命令或数据使用、参考、连接到的文件 |
SEE ALSO | 与此命令相关的其他说明,进一步查询 |
EXAMPLE | 参考范例 |
进入man命令的功能后,按空格键往下翻页,按b键往上翻页,按q键离开,页面输入“/关键字” 可快速定位到要找的关键字。
2、 管道
操作符是:”|”,它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandard error 信息没有直接处理能力。然后,传递给下一个命令,作为标准的输入 standard input. 此命令方便我们对多种命令进行组合使用。
cut –d ‘;’ –f1 file | sort | uniq –dc 分号分割file并输出第一列给sort;sort对第一列进行排序;排序后利用uniq处理,-d显示重复行,–c对重复行计数
3、 linux下运行perl命令
cat file |perl –ne ‘@arr=split/\t/,$_;if($arr[2]=~/^hello/){print $_}’ 输出为file文件中tab分割下第三列起始含hello字符的所有行
-e 用于在命令行而不是在脚本中执行 Perl 命令
-n使 Perl 隐式地循环遍历指定的文件,并只打印规定的行。
cat file | perl -ane ‘print "$F[0]\n"’;输出file的第一列
-a与-n或者-p一起使用,负责打开自动拆分模式,用于对空白字符进行隐式拆分,并将字段放入数组@F中。还有别的参数,有兴趣可以进一步查阅。
结合END 和BEGIN,这样简单的perl程序可直接在命令行中写并执行,无需生成脚本
cat file |perl –ne ‘chomp;@arr=split/\t/,$_;$hash{$arr[0]}++;END{foreach my $col1(keys %hash){print “$col1\t$hash{$col1}\n”}}’
tab键分割file文件,对其第一列进行计数并输出
END表示在遍历完文件之后,最后所做的操作,BEGIN反之。
4、while…;do…;done,for..;do…;done和if…;then…fi
find . –name “*.fa”|while read line;do head –n 1000 ${file} > ./test/${line} ;done 查找当前目录下的.fa文件,取所有.fa文件的前1000行输出到test目录下,文件名不变。
此例为while…;do…;done,for..;do…;done和if…;then…fi用法类似,可根据需求在命令行中进行组合使用。
4、 文本处理常用命令:
查看:
wc –l file 查看文件行数
cat –n file 查看文件且显示每一行的行号
find . –name ‘*.fastq’ | xargs cat | wc –l 查看当前目录下所有fastq文件的总行数
ls –lt /my/directory/ 按时间顺序排列该目录下文件(可用于整理文件生成的先后关系)
ls –Sl /my/directory/ 按文件大小从大到小排列该目录下文件,从小到大排:ls –Slr /direc/
less file查看file文件,文件内容会根据屏幕大小自动换行,不换行查看使用:less –S file
head –n 10 file 查看file的前10行
tail –n 10 file 查看file的最后10行
awk ‘NR==2 {print $_}’ file 查看第2行
awk ‘NR>1 && NR<6 {print $0}’ file 查看file的2到5行
sed –n ‘2,5p’ file 查看file的2到5行
检索:
grep ‘^hello’ file 查看file中起始为hello的行
grep –v hello file 查看file中不含关键字hello的行
grep [0-9] file 查看file中带数字的行
grep hello -R /my/directory/* 在目录 '/my/ddirectory/' 及随后的目录中搜索hello
排序:
sort –t ‘:’ –n –r –k1 file 表示冒号分割文件行(-t),取第1列(-k),按数字(非字符串排序-n),从大到小排序(默认从小到大,-r反之)。
取两个文件的交并集
sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一行) sort file1 file2 | uniq -u 删除交集,留下其他的行 sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的行)
合并:
cat file1 file2>file3 把file2的行添加到file1文件行后面输出到file3(按行合并)
paste file1 file2>file4 把file2的列添加到file1的文件列后面输出到file4(按列合并)
5、 不解压文件而直接查看文件内容
zcat file.gz 等同于解压之后再cat file查看
zgrep * file.gz 查看file.gz, zgrep也可用于对压缩文件进行直接搜索查看
6、 查找使用命令的历史记录(除了简单的使用上下键翻找)
history |grep ‘helloWorld.py’ 在运行过的命令的历史记录中寻找包含helloWorld.py的行
ctrl+r 然后输入关键字,可以自动补齐匹配关键字的最近一条命令
7、 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。目前很多软件提供了docker镜像,下载即可运行。
8、 Conda是一个开源包管理系统和环境管理系统,适用于多种编程语言及其包的管理。如果要安装的软件包与你正在使用的有冲突,如果你的环境配置好后还需要移植,可以选择使用conda。
更多生信分析套路,请加微信13621202201