linux命令汇总

(先复习一下吧)

命令格式

快捷键

Ctrl + C:终止任务
Ctrl + Z:暂停任务(将一个正在前台执行的命令放到后台,并处于暂停状态)
Ctrl + L:清屏
Ctrl + A:回到行首
Ctrl + E:回到行尾
Ctrl + D:注销当前会话

进程管理

top #动态进程,q退出,查看所有用户的运行进程
ps #静态进程
jobs #查看后台命令,命令正在当前终端运行
fg %n #将后台的命令调至前台继续进行
bg %n #将后台暂停的命令变成后台运行
kill %n #终止后台进程

解压和压缩

*.zip :zip程序压缩的文件
*.gz :gzip程序压缩的文件  gzip -d file.gz或gunzip file.gz
*.bz2 :bzip2程序压缩的文件  bzip2 -d file.bz2
*.tar :tar程序打包的数据,没有压缩过
*.tar.gz :tar程序打包的文件,其中并且经过gzip的压缩  tar -zxvf file.tar.gz
*.tar.bz2 :tar程序打包的文件,其中并且经过bzip2的压缩  tar -jxvf file.tar.bz2

压缩:tar -jcvf filename.tar.bz2 要被压缩的文件
查询:tar -jtvf filename.tar.bz2
解压缩:tar -jxvf filename.tar.bz2 -C 要解压缩的目录
仅打包:tar -cvf file.tar filename...

解压

压缩

vi编辑器

(1) 一般指令模式(command mode):以vi打开一个文件就直接进入一般指令模式了。可以使用上下左右按键来移动光标,可以使用删除字符或删除整行来处理文件内容,也可以使用复制、粘贴来处理文件数据。一般指令模式可与编辑模式及指令列模式切换,但编辑模式与指令列模式之间不可互相切换。

(2) 编辑模式(insert mode):在一般指令模式中无法编辑文件内容。按下“i, I, o, O, a, A, r, R”等任何一个字母之后才会进入编辑模式,在画面的左下方会出现INSERT或REPLACE的字样,此时才可以进行编辑。如果要回到一般指令模式时,需要按下[Esc]键退出编辑模式。

(3) 指令列命令模式(command-line mode):在一般模式当中,输入“: / ?”三个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式中,可以执行搜索、保存、退出等动作。

Bash中的通配符和特殊符号

通配符:

*:代表0个到无穷多个任意字符
?:代表一定有一个任意字符
[]:代表一定有一个在括号内的字符(非任意字符)。例如[abcd]代表了一定有一个字符,可能是a,b,c,d这四个任何一个
[ - ]:若有减号在中括号内时,代表在编码顺序内的所有字符。例如[0-9]代表0到9之间的所有数字
[^ ]:反向选择,例如[^abc]代表一定有一个字符,只要是非a,b,c的其他字符就接受的意思

特殊符号:

#:批注符号,在后面的数据均不执行
\:跳脱符号,将特殊字符或通配符还原成一般字符
|:管道
;:连续指令下达分隔符
~:用户的家目录
$:取用变量前导符
&:工作控制,将指令变成背景下工作
!:逻辑运算意义上的非
/:目录符号,路径分隔的符号
>、>>、<、<<:数据流重导向
‘’:单引号,不具有变量置换的功能($变为纯文本)
“”:双引号,具有变量置换的功能($可保留相关功能)
``:两个`中间为可以先执行的指令,亦可使用$()
():在中间为子shell的起始与结束
{}:在中间为命令区块的组合

正则表达式

正则表达式(Regular Expression,RE)是通过一些特殊字符的排列,用以搜寻/取代/删除一行或多行文字字符串, 简单的说,正则表达式就是用在字符串的处理上面的一项表示式。正则表达式并不是一个工具程序,而是一个字符串处理的标准依据,是一种字符串的表示方法。如果你想要以正则表达式的方式处理字符串,就得使用支持正则表达式的工具程序,这类工具程序很多,例如vi、sed、awk等等。但是例如cp、ls等指令并未支持正则表达式, 所以就只能使用bash自己本身的通配符

注意:正则表达式的特殊字符与命令行中输入指令的通配符并不相同。例如,在通配符当中的*代表的是0~无限多个字符的意思,但是在正则表达式当中,*则是重复0到无穷多个的前一个RE字符的意思。

基础的正则表达式字符:^ $ . * [list] [n1-n2] [^list] \{n,m\}
延伸的正则表达式字符:\? \+ T\|t gd\|good g(la|oo)d A(xyz)+C

正则表达式特殊符号:
[:alnum:] 字母数字
[:alpha:] 字母
[:blank:] 空格制表符
[:digit:] 数字
[:lower:] 小写字母
[:upper:] 大写字母
[:punct:] 标点
[:space:] 所有空白符(换行符和回车)

cat chipfile | grep '[[:alpha:]]'  #cat chipfile | grep [[:alpha:]]
cat chipfile | grep ^[[:digit:]]
cat chipfile | grep '[DP]'  #cat chipfile | grep [DP]
cat chipfile | grep '5\+'  #需要加引号,匹配到5 “>=1次”
cat chipfile | grep '5\{2\}'  #匹配到5 “2次”,实际上5555也会匹配到
cat chipfile | grep -w '5\{2\}'  #精确匹配,不会匹配到5555
cat chipfile | grep '5\?'  #能匹配到没有5、有5的所有行,包括5555
cat chipfile | grep '98\?7'  #能匹配到97、987
cat chipfile | grep 'ChIP\|DNA'  #cat chipfile | grep -E 'IP|DNA'

less

less -NS chipfile
zless file.gz

wc

wc  [-lwm] 

-l :行数
-w :字符串数 (英文单字)
-m :字符数

cut

cut  -d  '分隔字符'  -f  fields 
cut  -c  字符区间 

-d :后面接分隔字符。默认是 \t
-f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段(fields)
-c :以字符 (characters) 的单位取出固定字符区间
-b 表示字节;-c 表示字符;-f 表示定义字段。
N-M:从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段。例如cut -f 1,3-5。

sort

sort [-fbMnrtuk] [file or stdin]

-n :使用纯数字进行从小到大排序 (默认是以文字型态来排序的)
-r :反向排序
-t :分隔符,默认是用 [tab] 键来分隔
-k :以那个区间 (field) 来进行排序的意思
-V :字符串中含数值时,按数值从小到大排序
-f :忽略大小写的差异,例如 A 与 a 视为编码相同
-b :忽略最前面的空格符部分
-u :就是 uniq ,相同的数据中,仅出现一行代表
每次使用 -k选项都要带上指定列的范围(start, end),例如-k2,2n;sort -k1,1 -k2,2nr test.bed

uniq

uniq  [-ic]

-c :进行计数
-i :忽略大小写字符的不同

tr

-d :删除指定字符
-s :缩减连续重复字符

cat chipfile | tr 'C' 'c'
cat chipfile | tr 'CI' 'ci'
cat chipfile | tr -d ChIP  # Chromatin变成了romatin

grep

grep  [-acinv] [-A] [-B] [--color=auto]  '搜寻字符串'  filename 

-n :输出行号
-v :反向选择,即显示出没有 '搜寻字符串' 内容的那一行
-c :计算找到 '搜寻字符串' 的次数
-w :精确查找某个关键词(word)
-e :指定多个匹配模式
-f :从指定文件中读取要匹配的模式
-i :忽略大小写
-o :只抽离输出匹配的部分
--color=auto :将找到的关键词部分加上颜色显示
-A :后面可加数字,为 after 的意思,除了列出该行外,后续的 n 行也列出来。-A2
-B :后面可加数字,为 befer 的意思,除了列出该行外,前面的 n 行也列出来。-B1
-C :指定输出包括匹配到的前后多少行
-E :指定支持扩展表达式,或者用 egrep命令

grep 'ChIP' chipfile  #cat chipfile | grep ChIP
grep -n 'ChIP' chipfile
grep -w 'ChIP' chipfile  #精确查找单词,'ChIP-seq'不算'ChIP'
grep -c 'ChIP' chipfile  #找到'ChIP'的行数,不是次数
grep -i 'chip' chipfile

sed



在指定行后增加一行 sed '1,2a 555'
在指定行前增加一行 sed '1,2i 555'
删除某几行 sed '2,5d'
删除匹配行 sed '/Welcome/d'
改变指定行的内容 sed '2c 000'
替换匹配到的内容 sed 's/is/IS/g'
替换指定行匹配到的内容sed '4s/ee/EE/g'
字符一对一转换 sed 'y/abcd/ABCD/'
打印出指定行 sed -n '2~4p'

cat chipfile | sed '1,2a 555'|cat -n
cat chipfile | sed '1,2i 555' | cat –n
cat chipfile | sed '2,5d' | cat -n
cat chipfile | sed '/IP/d ' | cat -n 
cat chipfile | sed '2c 000 ' | cat -n
cat chipfile | sed 's/DNA/dna/g' | cat -n
cat chipfile | sed 'y/DNA/dna/' | cat –n
cat chipfile | sed -n '16,20p'
cat chipfile | sed -n '/\./p'
cat chipfile | sed -n '/^5/p'
cat chipfile | sed -n '/5\+/p'
cat chipfile | sed -n '/5\{3\}/p'

awk

awk  '条件类型1{动作1}  条件类型2{动作2}  ...'  filename 

特点:
(1) 相较于sed常常作用于一整行的处理,awk则比较倾向于将一行分成数个字段来处理,默认的字段分隔符为空格键或[tab]键。
(2) 在awk的括号内,每一行的每个字段都是有变量名称的,那就是$1, $2, ...,而$0则代表一整行。
(3) awk后续的所有动作是以单引号括住的,所以awk的格式内容如果想要以print打印时,非变量的文字部分都需要使用双引号来定义。
(4) awk在{}内的动作,如果有需要多个指令辅助时,可利用分号 ; 间隔,或者直接以[Enter]按键来隔开每个指令。
(5) 在awk当中,变量可以直接使用,不需加上$符号。

处理流程:

$ awk  'BEGIN{动作}  pattern{动作}  END{动作}'

(0) 在所有处理操作之前,先读取BEGIN关键字标识起来的代码段。
(1) 读入第一行,并将第一行的资料填入$0, $1, $2....等变量当中。
(2) 依据"条件类型"的限制,判断是否需要进行后面的"动作"。
(3) 做完所有的动作与条件类型。
(4) 若还有后续的行,则重复上面1-3的步骤,直到所有的数据都读完为止。
(5) 最后执行END代码段,在END块中完成最终结果的输出。

变量:

awk  '{print $9,$10}'  #分隔符默认空格和制表符
awk  '{print $9 “\t” $10}'  #以\t为分隔符输出
awk  '{print $9 $10}'  #没有分隔符
awk  -F  '\t'  '{print $9}'
awk  '/UTR/{print $9,$10}'
awk  'BEGIN{print "find UTR"}  /UTR/{print $9,$10}'

cat chipfile | sed -n '16,20p' | awk '{print $1,$3}'  #输出的分隔符为空格
cat chipfile | sed -n '16,20p' | awk '{print $1"\t"$3}'  #以制表符为分隔符输出
cat chipfile | sed -n '16,20p' | awk '{print $1 $3}'  #没有分隔符
cat chipfile | awk -F '.' '{print $1}'  #cat chipfile | awk -F . '{print $1}'
cat chipfile | awk '/\./{print $0}'  #输出匹配有.的行,如果不加\将视为正则表达式
cat chipfile | awk '/^5/{print $0}'
cat chipfile | awk '/5+/{print $0}'
cat chipfile | awk '/5{3}/{print $0}'

内建变量:

cat chipfile | awk '{print NR}'  #第n行
cat chipfile | awk '{print NF}'  #这一行有n列,即n个字段

运算字符:
算术运算:+, -, *, /, % (取余), ** (平方), int(x) (x的整数部分), log(x) (x的自然对数)
逻辑运算:==, !=, <, >, <=, >=
与或非:&&, ||, !
模式匹配:a~b, a!~b

条件和循环语句:

内置函数:
tolower():字符转为小写
toupper() :字符转为大写
length():返回字符串长度
substr(s,i,j):返回s的i-j部分
split(s,x,d):根据分隔符d分隔数据,赋值给x
sub(f,r,s):根据正则f从r中提取数据到s
sin():正弦
cos():余弦
sqrt():平方根
rand():随机数

举个栗子:

less -S Data/example.gtf | awk 'BEGIN{FS="\t";OFS="\t"} {gsub("gene","Gene",$3);print $0}' | less -S
awk  '$2 > 9800' #输出符合条件的行
awk  '$3 - $2 > 1000'
awk  '$1 ~ /chr1/ && $3 - $2 > 1000' #~表示符合正则表达式
awk  '$1!~/^#/' #去掉注释行
awk  'NR >= 3 && NR <= 5' #取出第3-5行
awk  '{if($3=="gene") print $0}'
awk  '{if($3=="gene") {print $0} else {print $3 " is not gene"}}'
awk  '{for(i=1;i<4;i++) {print $i}}'
awk  '/exon/{print $5-$4}'

cat chipfile | sed -n '16,20p' | awk '{print $1,$3}'
cat chipfile | sed -n '16,20p' | awk '{print $3-$2}'
cat chipfile | sed -n '16,20p' | awk '$1 > 500'  #cat chipfile | sed -n '16,20p' | awk '$1 > 500 {print $0}'
cat chipfile | sed -n '16,20p' | awk '{if($1 > 500) {print $0}}'  #cat chipfile | sed -n '16,20p' | awk '{if($1 > 500) {print $0} else {print $1 " is not larger than 500"}}'
cat chipfile | sed -n '16,20p' | awk '$3 - $2 > 0'
cat chipfile | sed -n '16,20p' | awk '$1 > 500 && $3 - $2 > 0'  #两者都要成立
cat chipfile | sed -n '16,20p' | awk '$1 ~ /5/'
cat chipfile | sed -n '16,20p' | awk '$1 !~ /^5/'

举例用到的chipfile文件的内容如下 ↓(我瞎写的)

ChIP,即染色质免疫共沉淀技术(Chromatin immunoprecipitation, ChIP)。
它是在生理状态下,利用甲醛将细胞内的DNA与蛋白质交联(Crosslink),从而形成复合物,然后经细胞裂解、细胞核收集和裂解、分离染色体、通过超声或酶处理将染色质随机切割,再通过抗原抗体的特异性识别反应沉淀此复合体,从而特异性地富集目的蛋白结合的DNA片段,通过对目的片断的纯化与检测,从而获得与该蛋白结合的DNA的信息。
1. 使用甲醛将染色体上的所有蛋白质与DNA交联
2. 将DNA切割成小片段
3. 使用抗体分离出感兴趣的蛋白,及其结合的DNA片段
4. 洗去其它蛋白和DNA片段
5. 解除交联,洗去蛋白,保留DNA片段

ChIP-seq是将染色质免疫共沉淀与二代高通量测序相结合的技术,它将ChIP获得的DNA片段进行高通量测序,捕捉到细胞内动态的、瞬时的蛋白质与DNA之间的相互结合作用,一次性获取与目的蛋白相结合的DNA序列、确定蛋白的结合分布和精确的结合位点以及结合基序等大量信息。
6. DNA片段加接头,PCR扩增,检查文库浓度,测序
7. 去除低质量reads,将高质量reads比对到参考基因组,得到一系列基因组坐标
8. control使用相同的input chromatin,不使用抗体富集,去除所有蛋白,测序
9. 使用ChIP-seq的reads建立一个genome browser track,记录统计学显著的峰
10. 比较不同样品中相同蛋白的峰;寻找特定蛋白结合的motif;根据蛋白与基因的相对结合位置确定蛋白的功能

156 897 633
5555    689 971
852 31  598
946 377 84
0   5   9877

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容