小哥哥虽是生信分析人员但兼职部门服务器运维工作,今天要讲的也是小哥哥日常教我的一些linux的操作小技巧。小哥哥有多甜呢,看他写的程序就知道,程序运行-h查看帮助文档时,如果你的当前系统支持中文则显示中文帮助文档,如果支持英文则显示英文帮助。 1、 man 功能:查询命令用法,这条命令用好了可以解决很多命令的问题 语法:man <command> Linux环境下双击Tab键可查看当前账户可使用的命令,这些命令均可使用man查看其详细用法。 man查看命令时,主要显示的信息分为以下几部分:
进入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。 |
|
来自: 祥强6csdm0n3vs > 《生信类》