分享

入职以来,小哥哥教会我的骚操作

 祥强6csdm0n3vs 2019-04-07

小哥哥虽是生信分析人员但兼职部门服务器运维工作,今天要讲的也是小哥哥日常教我的一些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。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多