Linux命令中有一些常用符号,看到时不一定好查询它们得功能和含义,这里列举一些常见得符号和解释,欢迎大家补充完善。
|: 管道符,在两个相邻命令之间传递数据;如ls | head把ls命令得输出传给head命令,只显示前10个文件/文件夹。
*: 通配符,通常用于匹配任意字符串,如ls *.fq.gz匹配当前目录下所有后缀为.fq.gz得文件,前缀可以是任何字符。
~: 波浪线,指代家目录。键盘左上角ESC下得按键,配合Shift输入。
.: 通常指代当前目录,如./run.sh运行当前目录下得run.sh脚本;multiqc -d . -o multiqc对当前目录下得文件执行multiqc汇总。
../: 表示上一层目录。
>: 输出重定向。ls > filename把ls得输出结果写入文件filename。具体见Linux学习 - 管道、标准输入输出。
<: 输入重定向。paste <(ls *_1.fq.gz) <(ls *_2.fq.gz)把两个ls命令得输出传递给paste作为其输入。具体见Linux学习 - 管道、标准输入输出。
^: 用于正则表达式中表示以什么开头。grep '^>' test.fa获得所有>开头得行,也就是FASTA文件得名字行。sed 's/^>//g'替换开头得>为空,第壹个和第二个/之间得为被替换得内容,第二个和第三个/之间得为要被替换成得内容。
注意:grep '>' file和grep > file得区别。可以看看朴实无华得4条致命命令!还有什么。
`: 反引号,键盘左上角ESC下得按键。`ls`表示运行ls命令并捕获其输出。
$(ls): 等同于`ls`,表示运行ls命令并捕获其输出。与把命令括在反引号中基本相似,但更推荐使用。新学习时可直接使用此种方式。
;: 多条语句写在一行需要加分号分割。如 for samp in `tail -n +2 sampleFile | cut -f 1`; do ${samp}_related_things; done 用分号分割开3个语句。循环 `tail -n +2 sampleFile | cut -f 1` 得输出并进行一系列样品相关得操作。
\t: TAB键
\n: 换行
$或${}: 用于获取变量得值。如上面得${samp}。加和不加{}得通常无区别,但在一些情况会导致变量名字识别出错。如${samp}_related_things表示获取变量samp得值,而$samp_related_things表示获取变量samp_related_things得值。
\r 或^M: 回车符; ^M得输入方式是Ctrl+v;Ctrl+m; 通常windows下得文件拷贝到linux系统上,需要执行sed -i s/\r//g file去掉末尾得回车符。
awk中得$0, $1: $0表示整行,$1表示当前行第壹列,$2表示当前行第二列,以此类推。
''与"":单引号和双引号通常混用,但双引号中得变量可以获取其值。
&: 把程序放到后台运行,具体见耗时很长得程序忘加nohup就运行了怎么办?章节。
\\: 通常是转义符,把特殊变量转义为普通字符,如${HOME}表示获取家目录,\${HOME}就是一个字符串${HOME}。\\用于行尾时表示该行命令还未结束,后面还有跟随得命令语句,常用于命令太长一行写不下时。
a="a value": 等号用于bash中变量赋值时,前后都不能有空格。
<<: 表示读入数据,具体见Linux学习 - 管道、标准输入输出。