linux查漏補缺 1

df -h :查看硬盤有多大,有多少可用空間

image.png

cat是一個命令纷妆,主要用來查看文件;在這與 *<<END *連用用于讀入大段數(shù)據(jù)墅冷。輸入 cat <<END 之后纯路,回車,會看到
終端出現(xiàn)一個大于號俺榆,大于號后面可以輸入內(nèi)容感昼,再回車,繼續(xù)輸入內(nèi)容罐脊,直到我們輸入 END (大寫的定嗓,與上面一致),
輸入過程結束萍桌,我們輸入的內(nèi)容都顯示在了屏幕上宵溅。

ct@ehbio:~$ cat <<END
a
bc
END
a
bc

rename: 文件重命名 (常用于批量重命名,不同的系統(tǒng)可能用法略有不同上炎,使用前先 man rename 查看使用方法)
rename 'test' 'ehbio' test*.fa

ln (link): 創(chuàng)建軟連接 (ln -s source_file target)恃逻。
在建立軟連接時,原文件要使用全路徑藕施。全路徑指以/開頭的路徑寇损。如果希望軟鏈可以讓不同的用戶訪問,不要使用 ~裳食。
建立軟連接矛市,是為了在不增加硬盤存儲的情況下,簡化文件訪問方式的一個辦法诲祸。把其它文件夾下的文件鏈接到當前目
錄浊吏,使用時只需要寫文件的名字就可以了宿亡,不需要再寫長串的目錄了岩遗。

# 通常為了簡化寫法,使用 `pwd`代替全路徑
# `為鍵盤 Esc 下面的按鍵叶雹,寫在反引號內(nèi)的命令會被運行着憨,運行結果會放置在反引號所在的位置
ct@ehbio:~/ehbio_project$ ln -s `pwd`/ehbio2.fa ../data

gzip: 壓縮文件; gunzip: 解壓縮文件
gzip -c ehbio.fa >ehbio.fa.gz

wc -l 獲取文件的行數(shù)

#獲取文件中包含大于號 (>) 的行
grep '>' ehbio.fa
# 獲取包含> 的行的行數(shù) (-c: count lines)
grep -c '>' ehbio.fa 
# -v: 不輸出匹配上的行
grep -v 'end' ehbio.fa >ehbio6.fa

| 為管道符墩衙,在相鄰命令之間傳遞數(shù)據(jù)流,表示把上一個命令的輸出作為下一個命令的輸入甲抖。

sed 是一個功能強大的文件內(nèi)容編輯工具底桂,常用于替換、取得行號等操作惧眠。

ct@ehbio:~/ehbio_project$ cat ehbio6.fa
>mYC HAHA
ACGGAGCGAGCTAGTGCAGCGAGGAGCTGAGTCGAGC
CAGGACAGGAGCTA
ct@ehbio:~/ehbio_project$ sed 's/ HAHA//' ehbio.fa 
>mYC
ACGGAGCGAGCTAGTGCAGCGAGGAGCTGAGTCGAGC
CAGGACAGGAGCTA
end

另外一個方式籽懦,去除 HAHA,使用 cut 命令氛魁。cut 更適合于矩陣操作暮顺,去除其中的一列或者多列厅篓。
-f: 指定取出哪一列,使用方法為-f 2 (取出第 2 列)捶码,-f 2-5 (取出第 2-5 列)羽氮,-f 2,5 (取出第 2 和第 5 列)。
-d: 設定分隔符, 默認為 TAB 鍵惫恼。如果某一行沒有指定的分隔符档押,整行都為第一列。

ct@ehbio:~/ehbio_project$ cut -f 1 -d ' ' ehbio.fa 
>mYC
ACGGAGCGAGCTAGTGCAGCGAGGAGCTGAGTCGAGC
CAGGACAGGAGCTA
end

! 加之前輸入過的命令的前幾個字母(無空格)祈纯,快速獲取前面的命令
!! 表示上一條命令令宿。
替換上一個命令中的字符,再運行一遍命令腕窥,用于需要對多個文件執(zhí)行同樣的命令粒没,又不想寫循環(huán)的情況

# 輸入一個命令
ct@ehbio:~/ehbio_project$ #cut -f 1 -d ' ' ehbio.fa | tail -n 4
# !! 表示上一條命令
# :gs 表示替換,把上一個命令中全部的 ehbio 替換為 ehbio3; g: global; s: substitute
ct@ehbio:~/ehbio_project$ !!:gs/ehbio/ehbio3

表示重定向標準輸出簇爆,> filename 就是把標準輸出存儲到文件 filename 里面癞松。標準錯誤還是會顯示在屏幕上。
2 >&1 表示把標準錯誤重定向到標準輸出入蛆。Linux 終端用 2 表示標準錯誤响蓉,1 表示標準輸出。

  • (短橫線):表示標準輸入哨毁,一般用于 1 個程序需要多個輸入的時候厕妖。
    < 標準輸入,后面可以跟可以產(chǎn)生輸出的命令挑庶,一般用于 1 個程序需要多個輸入的時候。相比-適用范圍更廣软能。

tr: 是用于替換字符的迎捺,把空格替換為換行,文字就從一行變?yōu)榱艘涣?/p>

ct@ehbio:~$ echo "1 2 3" | tr ' ' '\n'
1
2
3

diff 是比較 2 個文件的差異的查排,需要 2 個參數(shù)
**- **(短橫線) 表示上一個命令的輸出凳枝,傳遞給 diff
**< **表示其后的命令的輸出,也重定向給 diff

ct@ehbio:~$ cat <<END | diff - <(echo "1 2 3" | tr ' ' '\n')
> 2
> 3
> 4
> END
0a1
> 1
3d3
< 4

# 如果不使用管道和重定向標準輸入跋核,程序是這么寫的
# 先把第一部分存儲為 1 個文件
ct@ehbio:~$ cat <<END >firstfile
>2
>3
> 4
> END
ct@ehbio:~$ less firstfile
# 再把第二部分存儲為 1 個文件
ct@ehbio:~$ echo "1 2 3" | tr ' ' '\n' >secondfile
# 然后比較
ct@ehbio:~$ diff firstfile secondfile
0a1
> 1
3d3
< 4

sed =:先輸出行號岖瑰,再輸出每行的內(nèi)容

ct@ehbio:~$ echo "a b c" | tr ' ' '\n' | sed =
1
a
2
b
3
c

N: 表示讀入下一行;sed 命令每次只讀一行砂代,加上 N 之后就是緩存了第 2 行蹋订,所有的操作都針對第一行;
s: 替換刻伊;把換行符替換為\t

ct@ehbio:~$ echo "a b c" | tr ' ' '\n' | sed = | sed 'N;s/\n/\t/'
1 a
2 b
3 c

#把讀取的奇數(shù)行行首加一個'>'(偶數(shù)行相當于被隱藏了)
ct@ehbio:~$ echo "a b c" | tr ' ' '\n' | sed = | sed 'N;s/^/>/'
>1
a
>2
b
>3
c

# 把多條序列轉成 FATSA 格式
# sed = 同時輸出行號
# N: 表示讀入下一行露戒;sed 命令每次只讀一行椒功,加上 N 之后就是緩存了第 2 行,所有的操作都針對第一行智什;
# s: 替換动漾;把讀取的奇數(shù)行行首加一個'>'(偶數(shù)行相當于被隱藏了)
# 于是 FASTA 格式序列就出來了
ct@ehbio:~$ echo "actg aaaaa cccccg" | tr ' ' '\n' | sed = | sed 'N;s/^/>/'
>1
actg
>2
aaaaa
>3
cccccg

seq 1 10# 產(chǎn)生從 1 到 10 的數(shù),步長為 1
seq -s ' ' 1 10# 產(chǎn)生從 1 到 10 的數(shù)荠锭,步長為 1旱眯,用空格分割 #最后一個始終為最大值

sort: 排序,默認按字符編碼排序证九。如果想按數(shù)字大小排序删豺,需添加-n 參數(shù)。
sort 常用參數(shù)
-n: 數(shù)值排序
-h: 人類刻度的數(shù)值排序 (2K 1G 等)
-r: reverse, 逆序
-c: check, 不排序甫贯,查看文件是否已排序好
-k: 指定使用哪列或哪幾列排序
-m: 合并已經(jīng)排序好的文件
-S: 緩沖區(qū)大小吼鳞,用于排序大文件時的分割排序中每次分割的文件大小
-u: 重復行只保留一次

# 系統(tǒng)默認按 ASCII 碼排序,首先排 0叫搁,然后排 1, 3, 6, 9
ct@ehbio:~$ sort test
0
12
15
15
3
3
6
9
9
# 按數(shù)值大小排序
ct@ehbio:~$ sort -n test
0
3
3
6
9
9
12
15
15

sort -u: 去除重復的行赔桌,等同于 sort | uniq。

ct@ehbio:~$ sort -nu test
0
3
6
9
12
15

sort file | uniq -d: 獲得重復的行渴逻。

ct@ehbio:~$ sort -n test | uniq -d
3
9
15

sort file | uniq -c: 獲得每行重復的次數(shù)疾党。

# 第一列為每行出現(xiàn)的次數(shù),第二列為原始的行
ct@ehbio:~$ sort -n test | uniq -c
1 0
2 3
1 6
2 9
1 12
2 15
# 換一個文件看的更清楚
ct@ehbio:~$ cat <<END >test2
a
b
c
b
a
e
d
a
END
# 第一列為每行出現(xiàn)的次數(shù)惨奕,第二列為原始的行
ct@ehbio:~$ sort test2 | uniq -c
3 a
2 b
1 c
1 d
1 e

awk 是一個強大的文本處理工具雪位,其處理數(shù)據(jù)模式為按行處理。每次讀入一行梨撞,進行操作雹洗。
? OFS: 輸出文件的列分隔符 (output file column separtor);
? FS 為輸入文件的列分隔符 (默認為空白字符)卧波;
? BEGIN 表示在文件讀取前先設置基本參數(shù)时肿;與之相對應的是 END,只文件讀取完成之后進行操作港粱;
? 不以 BEGIN, END 開頭的 {} 就是文件讀取螃成、處理的部分。每次對一行進行處理查坪。

ct@ehbio:~$ sort test2 | uniq -c | awk 'BEGIN{OFS="\t";}{print $2, $1}'
a 3
b 2
c 1
d 1
e 1

# 按第二列數(shù)值大小排序
ct@ehbio:~$ sort test2 | uniq -c | awk 'BEGIN{OFS="\t";}{print $2, $1}' | sort -k2, 2n
c 1
d 1
e 1
b 2
a 3

# 第二列相同的再按第一列的字母順序的逆序排序 (-r)
ct@ehbio:~$ sort test2 | uniq -c | awk 'BEGIN{OFS="\t";}{print $2,$1}' | sort -k2,2n -k1,1r
36
e 1
d 1
c 1
b 2
a 3

提取FASTA序列

ct@ehbio:~$ cat test.fasta
>SOX2
ACGAGGGACGCATCGGACGACTGCAGGACTGTC
>POU5F1
ACGAGGGACGCATCGGACGACTGCAGGACTGTC
>NANOG
CGGAAGGTAGTCGTCAGTGCAGCGAGTCCGT

# grep 匹配含有 SOX2 的行
# -A 1 表示輸出的行中寸宏,包含匹配行的下一行 (A: after)
ct@ehbio:~$ grep -A 1 'SOX2' test.fasta
>SOX2
ACGAGGGACGCATCGGACGACTGCAGGACTGTC

# 也可以使用 AWK
# 先判斷當前行是不是 > 開頭,如果是偿曙,表示是序列名字行氮凝,替換掉大于號,取出名字望忆。
# sub 替換, sub(被替換的部分覆醇,要替換成的朵纷,待替換字符串)
# 如果不以大于號開頭,則為序列行永脓,存儲起來袍辞。
# seq[name]: 相當于建一個字典,name 為 key常摧,序列為值搅吁。然后就可以使用 name 調(diào)取序列。
# 若命令太長落午,可在末尾加一個 \, 換行書寫
# awk 中$0 ~ />/ 里面的 ~ 不表示家目錄谎懦,而是一個運算符,用來做模式匹配的
# /pattern/ 則表示與什么模式進行匹配溃斋,pattern 代表的是匹配模式
# awk 對文件是按行操作的界拦,{} 里面的語句會對文件的每一行都進行判斷或操作,循環(huán)執(zhí)行
# $0: 表示當前行所有內(nèi)容梗劫;$1, $2, $3 表示當前行第 1,2,3 列
# 關于引號享甸,如果最外層用的是單引號,那么里面最好不要再出現(xiàn)單引號
# 如果最外面用的是雙引號梳侨,則里面最好不要再出現(xiàn)雙引號
# 命令會尋找最近的同樣引號進行匹配蛉威。
ct@ehbio:~$ awk 'BEGIN{OFS=FS="\t"}{if($0~/>/) {name=$0; sub(">", "", name);} \
else seq[name]=$0;}END{print ">SOX2"; print seq["SOX2"]}' test.fasta
>SOX2
ACGAGGGACGCATCGGACGACTGCAGGACTGTC

多行 FASTA 序列提取要麻煩些,一個辦法就是轉成單行序列走哺,用上面的方式處理蚯嫌。

ct@ehbio:~$ cat <<END >test.fasta
>SOX2
ACGAGGGACGCATCGGACGACTGCAGGACTGTC
ACGAGGGACGCATCGGACGACTGCAGGACTGTC
ACGAGGGACGCATCGGACGACTGCAGGAC
>POU5F1
CGGAAGGTAGTCGTCAGTGCAGCGAGTCCGT
CGGAAGGTAGTCGTCAGTGCAGCGAGTCC
>NANOG
ACGAGGGACGCATCGGACGACTGCAGGACTGTC
ACGAGGGACGCATCGGACGACTGCAGG
ACGAGGGACGCATCGGACGACTGCAGGACTGTC
ACGAGGGACGCATCGGACGACTGCAGGACTGT
END

ct@ehbio:~$ cat test.fasta | tr '\n' '\t' | sed 's/\t>/\n>/g' \
| sed 's/\t/\n/' | sed 's/\t//g' >test.oneline.fa
# 第一步所有行變?yōu)橐恍?# 這一步使用 tr 是因為 tr 里面可以直接識別換行符,而 sed 不可以
# 其它的替換都使用 sed
# >號前面加換行符
# 先把第一 個TAB鍵變?yōu)閾Q行符丙躏,實現(xiàn)序列名字和序列的分離
# 再去掉序列中所有的TAB鍵

或者
ct@ehbio:~$ awk 'BEGIN{OFS=FS="\t"}{if($0~/>/) {name=$0; sub(">", "", name);} \
else seq[name]=seq[name]$0;}END{print ">SOX2"; print seq["SOX2"]}' test.fasta
# 對于單行 fasta 文件择示,只需要記錄一行,seq[name]=$0
# 對于多好 fasta 文件晒旅,需要把每一行序列都加到前面的序列上栅盲,seq[name]=seq[name]$0

如果一個命令需要運行比較久,一般使用 nohup cmmand & 來放入后臺不中斷運行敢朱,這樣退出終端也不影響程序。
**command & **是把程序放入后臺摩瞎。
jobs: 查看后臺進程
bg: 顯示后臺進程, 即用 Ctrl+z 掛起或 ‘命令 &’ 執(zhí)行的進程
fg job_id: 將后臺進程轉到前臺執(zhí)行
kill –9 process_id: 強制殺掉某個進程

文章來源:生信寶典

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拴签,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子旗们,更是在濱河造成了極大的恐慌蚓哩,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件上渴,死亡現(xiàn)場離奇詭異岸梨,居然都是意外死亡喜颁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門曹阔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來半开,“玉大人,你說我怎么就攤上這事赃份〖挪穑” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵抓韩,是天一觀的道長纠永。 經(jīng)常有香客問我,道長谒拴,這世上最難降的妖魔是什么尝江? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮英上,結果婚禮上炭序,老公的妹妹穿的比我還像新娘。我一直安慰自己善延,他們只是感情好少态,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著易遣,像睡著了一般彼妻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上豆茫,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天侨歉,我揣著相機與錄音,去河邊找鬼揩魂。 笑死幽邓,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的火脉。 我是一名探鬼主播牵舵,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼倦挂!你這毒婦竟也來了畸颅?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤方援,失蹤者是張志新(化名)和其女友劉穎没炒,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體犯戏,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡送火,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年拳话,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片种吸。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡弃衍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出骨稿,到底是詐尸還是另有隱情笨鸡,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布坦冠,位于F島的核電站形耗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏辙浑。R本人自食惡果不足惜激涤,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望判呕。 院中可真熱鬧倦踢,春花似錦、人聲如沸侠草。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽边涕。三九已至晤碘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間功蜓,已是汗流浹背园爷。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留式撼,地道東北人童社。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像著隆,于是被迫代替她去往敵國和親扰楼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345