Linux課程整理
1、學(xué)習(xí)資料
馬哥linux視頻,Linux 命令行與Shell腳本編程大全
2、系統(tǒng)認(rèn)知
看學(xué)習(xí)資料
3、Shell基本命令
Shell的基本操作(shell就是一個(gè)翻譯官)
Shell為一命令解釋器(command interpreter
),將使用者的命令翻譯給核心處理;同時(shí)將核心處理結(jié)果翻譯給使用者。
通常由三部分組成:1.命令字,2.參數(shù),3.操作對(duì)象;cmd [options][operation]
Shell prompt
提示符:$
:給一般使用者賬號(hào)使用;#
:給root(管理員)賬號(hào)使用;
cursor
光標(biāo),是指示鍵盤(pán)在命令行所輸入的位置;
carriage return
回車(chē),命令行讀進(jìn),是使用者告訴shell可以執(zhí)行命令行了;
Internal field separator(IFS)
,域內(nèi)字段分隔符,包括space
, tab
和newline
.
Shell工作原理,會(huì)依據(jù)IFS將command line所輸入的文字給拆解為“字段”(word),然后再針對(duì)特殊字符(meta)先作處理,最后再重組整行command line。
(1) 查看文件ls
ls -l #查看當(dāng)前目錄下的文件
ls -al #查看當(dāng)前目錄下的所有文件(包括隱藏文件)
ls -lh #查看當(dāng)前目錄下的文件,并顯示其大小(K,M,G等)
(2) 訪問(wèn)文件cd
cd #change directory
cd .. #返回上一級(jí)
cd ~ #返回用戶主目錄
cd - #返回到來(lái)這之前的目錄
cd / #返回根目錄
(3)新建文件夾mkdir
mkdir dgc #在當(dāng)前文件夾下創(chuàng)建名為dgc的文件夾
mkdir file1 file2 file3 #創(chuàng)建3個(gè)平級(jí)目錄
mkdir file{1:3} #同樣可以創(chuàng)建3個(gè)平級(jí)目錄
mkdir -p 1/2/3/4/5/6 #創(chuàng)建多層子目錄
(4) 刪除文件rmdir rm
rmdir dgc #dgc為空目錄,不可刪除非空文件夾#
rmdir -p a/b/c/d #多級(jí)刪除文件夾
rm a #刪除文件a,不可以刪除目錄a
rm file1 file2 file3 #刪除多個(gè)文件
rm -rf a1 #無(wú)論a1下是否有文件都將a1刪除(謹(jǐn)慎使用,linux刪除文件后不可逆)
(5) 創(chuàng)建文件touch
touch a.txt
touch file1 file2 file3 #同時(shí)創(chuàng)建多個(gè)文件
(6) 復(fù)制cp
cp src.c src.c.bak #復(fù)制src.c并重新命名為src.bak;
cp src.c a/src.c.bak #復(fù)制src.c到a目錄下并重新命名為src.bak;
cp -r a/ b/ #拷貝文件夾a及其里面的子文件夾到b;
(7) 重命名或者移動(dòng)mv
mv src.c.bak src.bak #將src.c.bak改名為src.bak;
mv jeapdu.s a/ #將jeapdu.s文件移動(dòng)到目錄a中;
mv a/jeapdu.s src #將目錄a文件夾下的jeapdu文件移動(dòng)到當(dāng)前目錄并改名為src;
mv a src #修改目錄名;
#一般情況下:不同級(jí)目錄為移動(dòng),同級(jí)目錄為改名字
(8) tar命令
tar在Linux上是常用的打包、壓縮、加壓縮工具
參數(shù):
-c :create 建立壓縮檔案的參數(shù);
-x : 解壓縮壓縮檔案的參數(shù);
-z : 是否需要用gzip壓縮;
-v: 壓縮的過(guò)程中顯示檔案;
-f: 置頂文檔名,在f后面立即接文件名,不能再加參數(shù)
①將tgz文件解壓到指定目錄
tar -zxvf test.tgz -C #指定目錄
比如將/source/kernel.tgz解壓到 /source/linux-2.6.29 目錄
tar -zxvf /source/kernel.tgz -C /source/linux-2.6.29
②將整個(gè)/home/www/images 目錄下的文件全部打包為 /home/www/images.tar
tar -cvf /home/www/images.tar /home/www/images #僅打包,不壓縮
tar -zcvf /home/www/images.tar.gz /home/www/images #打包后,以gzip壓縮
tar -cvf ab.tar a b #將a和b文件壓縮到ab.tar
tar -xvf ab.tar #解壓縮
tar -tvf ab.tar #查看壓縮文件
tar -xvf ab.tar a #將ab.tar僅解壓a文件
tar -xvf ab.tar -C ss/ #將ab.tar文件解壓縮到ss目錄下
tar -zcvf ac.tar.gz ac.tar #將ac.tar壓縮并創(chuàng)建為ac.tar.gz
tar -jcvf ac.tar.bz2 ac.tar #將ac.tar壓縮并創(chuàng)建為ac.tar.bz2
tar -zxvf ac.tar.gz #解壓縮ac.tar.gz文件
tar -jxvf ac.tar.bz2 #解壓縮ac.tar.bz2文件
(9) 壓縮文件gzip bzip2
(源文件都會(huì)消失)
gzip aa.tar #壓縮aa.tar文件;
gunzip aa.tar.gz #解壓縮aa.tar.gz文件;
bzip2 ab.tar #壓縮ab.tar文件;
bunzip2 ab.tar.bz2 #解壓縮ab.tar.bz2文件;
(10) 查找文件
which #可定位可執(zhí)行文件所在目錄;
whereis #命令定位文件所在目錄:二進(jìn)制的、源文件、幫助文檔;
whereis -m pwd #只查找?guī)椭臋n;
whereis pwd #輸出3條:命令本身所在目錄,源文件所在目錄,其幫助文件所在目錄;
locate #基于本地?cái)?shù)據(jù)庫(kù)(每天需要更新一次,update)進(jìn)行查找 locate aa.tar.gz,不能查找新創(chuàng)建的文件;手動(dòng)更新數(shù)據(jù)庫(kù)sudo updated后,可以用locate進(jìn)行查找新創(chuàng)建的文件;
find #基于文件名在磁盤(pán)中查找,格式:“find 查找目錄 查找內(nèi)容”
find ./ -name 'af*'
(11) 查看文件
head #查看文件最開(kāi)始的幾行,默認(rèn)為10行,可使用-n 6指定查看前6行
head -n 6 filename
tail #查看文件最后幾行
less和more也可以用來(lái)查看文件,尤其是文件內(nèi)容特別多的時(shí)候
more分屏打印文件,繼續(xù)往下看按空格鍵,往前看shift+pageup
less也可以分屏打印文件
less -SN abc.txt #查看abc.txt文件,并進(jìn)行對(duì)齊輸出行號(hào)
(12) cat
命令
cat filename #顯示整個(gè)文件
cat > filename #創(chuàng)建一個(gè)文件
cat file1 file2 > file #將幾個(gè)文件合并為一個(gè)文件
Cat <<END #可以輸入內(nèi)容,再回車(chē),繼續(xù)輸入內(nèi)容,直到我們輸入END,輸入過(guò)程結(jié)束
Cat <<END >data/test.fa #將cat輸入的內(nèi)容存入data目錄下的test文檔中,并保存為fa格式
(13)sort
命令
sort
為排序命令,比較原則是從首字符開(kāi)始,依次按ASCII碼值進(jìn)行比較,最后將比較結(jié)果按升序輸出。
用法:sort [選項(xiàng)]... [文件]...
或:sort [選項(xiàng)]... --files0-from=F
常用參數(shù)
-k, --key=位置1[,位置2] #在位置1 開(kāi)始一個(gè)key,在位置2 終止(默認(rèn)為行尾)
-r, --reverse #逆序輸出排序結(jié)果
-t, --field-separator=分隔符 #使用指定的分隔符代替非空格到空格的轉(zhuǎn)換
-n, --numeric-sort #根據(jù)字符串?dāng)?shù)值比較
-f, --ignore-case #忽略字母大小寫(xiě)
# Example
sort -k 1,1 -k 2,2n test.bed #對(duì)第一列按照字符排序,第二列按照數(shù)值排序
sort -k 1,1 -k 2,2nr test.bed #對(duì)第一列按照字符排序,第二列按照數(shù)值反向排序
(14) 其他命令
echo a #屏幕顯示a
ln -s a.txt b.txt #將a.txt軟鏈接到b.txt
pwd #輸出當(dāng)前路徑
4、文本編輯常用命令
(1) 取字符串
file=/dir1/dir2/dir3/my.file.txt
${file#*/} #刪掉第一個(gè)/及其左邊的字符串:
dir1/dir2/dir3/my.file.txt
${file##*/} #刪掉最后一個(gè)/及其左邊的字符串
my.file.txt
${file#*.} #刪掉第一個(gè).及其左邊的字符串
file.txt
${file##*.} #刪掉最后一個(gè).及其左邊的字符串
txt
${file%/*} #刪掉最后一個(gè)/及其右邊的字符串
/dir1/dir2/dir3
${file%%/*} #刪掉第一個(gè)/及其右邊的字符串
(空值)
${file%.*} #刪掉最后一個(gè).及其右邊的字符串
/dir1/dir2/dir3/my.file
${file%%.*} #刪掉第一個(gè).及其右邊的字符串
/dir1/dir2/dir3/my
(2) vim
編輯
vim一共有三種模式,包括命令模式(Command mode)、輸入模式(Insert mode)和底線命令模式(Last line modle)
vim abc.txt #進(jìn)入abc.txt的編輯模式
i
進(jìn)入輸入模式,Esc
退出輸入模式,進(jìn)入命令模式,:
進(jìn)入底線命令模式
常用命令
i #進(jìn)入輸入模式,修改位置為光標(biāo)所在位置
a #進(jìn)入輸入模式,修改位置為光標(biāo)下一位
I #進(jìn)入輸入模式,調(diào)到某一行行首
A #進(jìn)入輸入模式,調(diào)到某一行行尾
/find #向下查找
?find #向上查找
x #刪除光標(biāo)所在字符
10x #連續(xù)向后刪除10個(gè)字符
yy #復(fù)制當(dāng)前行,結(jié)合光標(biāo)、行數(shù)和p可以進(jìn)行多行的指定位置復(fù)制(eg 2yy然后p)
dd #刪除當(dāng)前行,dd搭配p,重復(fù)刪除光標(biāo)所在行
u #撤銷(xiāo)
ctrl+r #退回
:%s/before/after/ #替換,也可用sed進(jìn)行操作(eg:sed -i 's/before/after/' file)
:wq && wq!?#保存和強(qiáng)制保存/覆蓋
:q && :q!?#退出和強(qiáng)制退出
:w new_file_name?#簡(jiǎn)言之另存為,可保留源文件。
(3) grep
命令
grep命令是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹配的行打印出來(lái)
常用參數(shù)
-i #匹配時(shí)忽略大小寫(xiě)
-v #取沒(méi)有匹配的行
-w #精確匹配
-e #匹配多個(gè)內(nèi)容
-A #后面可加數(shù)字,為after的意思
-B #后面可加數(shù)字,為before的意思
-C #指定輸出包括匹配到的前后多少行
-f #file,從file種獲得匹配的數(shù)據(jù)
-n #顯示行號(hào)
-c #統(tǒng)計(jì)匹配后的行數(shù)
--color #標(biāo)記匹配的內(nèi)容
-o #輸出匹配的內(nèi)容
(4)sed
命令
sed工作流程:讀取-執(zhí)行命令-顯示;
使用方式:
Sed [-n][-e] ‘command’ files
sed [-n] –f script files
參數(shù):
-n #禁止顯示所有輸入內(nèi)容,只顯示經(jīng)過(guò)sed處理的行(常用);
-e #直接在命令列模式上進(jìn)行 sed 的動(dòng)作編輯,接要執(zhí)行的一個(gè)或者多個(gè)命令;
-f #執(zhí)行含有sed 動(dòng)作的文件 ;
-r #sed 的動(dòng)作支持的擴(kuò)展正則(默認(rèn)基礎(chǔ)正則)
-i #直接修改讀取的文件內(nèi)容,不輸出
作用區(qū)域:默認(rèn)情況下,sed命令會(huì)作用于文本數(shù)據(jù)的所有行,如果只想作用于某些行時(shí),則需要使用在命令通過(guò)行號(hào)或者文本過(guò)濾的方式前指明作用區(qū)域。
行號(hào):m, +n表示從m行開(kāi)始向下n行,m~n表示從m行開(kāi)始的每n行。
文本過(guò)濾:’ /pattern/ command’ 可以只在包含pattern的行中執(zhí)行命令,
命令:p復(fù)制,d刪除,i插入,a追加,c行替換,y字符轉(zhuǎn)換,w寫(xiě)入新文件,r讀取文件,i反向執(zhí)行,s替換,
(5)cut
命令
cut
命令可以處理列數(shù)據(jù),是一個(gè)選取命令,可將文件種的每一行按照“字節(jié)”“字符”“字段”進(jìn)行剪切,并將這些選取好的數(shù)據(jù)輸出至標(biāo)準(zhǔn)輸出。cut的格式:cut –[n]b file;cut –c file;cut –d[分隔符] –f[域] file。
常用參數(shù)
-d #指定分隔符
-f #指定列
-b #以字節(jié)為單位進(jìn)行切割
-c #以字符為單位進(jìn)行切割
-n #取消分割多字節(jié)字符,僅和-b標(biāo)志一起使用。
#Example
cut -b 1 text1.txt
cut -b 1.3.5 text1.txt
cut -b 1-5 text1.txt 等同于cut -b -5 test1.txt
cut -b 3- test1.txt
cut -nb 3 test2.txt
cut -c 1 test2.txt
cut -d : -f 1
(6)awk
命令
在shell知識(shí)里,如果把一個(gè)文檔看做一張表,那么一行就是一個(gè)記錄,一列就是一個(gè)域。awk是一門(mén)語(yǔ)言,按行處理數(shù)據(jù),也就是按記錄處理文本的,是一個(gè)強(qiáng)大的文本分析工具。
其命令的基本方式:
awk [option] '{pattern + action}' {filenames} # sometims muti file is ok
awk [option] 'BEGIN{初始代碼} {循環(huán)代碼} END{最后代碼}' filename
常見(jiàn)變量
FS #字段分隔符(默認(rèn)是任何空格)
NR #行號(hào),從1開(kāi)始
NF #一條記錄的字段數(shù)目
$n #當(dāng)前記錄的第n個(gè)字段,字段間由FS分隔
$0 #完整的輸入記錄
常見(jiàn)的基本用法(參考awk相關(guān)書(shū)籍)
5、軟件安裝
在生物信息學(xué)領(lǐng)域,現(xiàn)在用的最多的是conda
進(jìn)行軟件安裝
(1) 下載miniconda
wget –c <https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.5.4-Linux-x86_64.sh>
(2) 安裝miniconda
bash [Miniconda3-4.5.4-Linux-x86_64.sh](https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.5.4-Linux-x86_64.sh) #(不要將conda加入到環(huán)境變量里面,以免污染配置好的環(huán)境)
(3) 啟動(dòng)miniconda
source ~/miniconda3/bin/activate
(4) 配置conda的環(huán)境
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/ #(非常重要)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
(5) 查看conda的配置文件
vim ~/.condarc
(6) 安裝軟件(可以在bioconda.github.io搜索)
conda install -y bwa(samtools=1.8)
(7) 創(chuàng)建新的環(huán)境
conda create -n chipseq python=2
(8) 啟動(dòng)和退出chipseq的環(huán)境
conda activate chipseq
conda deactivate
(9) 刪除環(huán)境
conda remove –n chipseq –all #或者
$rm –rf ~/miniconda3/envs/chipseq/
6、環(huán)境變量和局部變量
(1) 查看環(huán)境變量
Env或者export
(2) 顯示變量值:echo
,echo才能將變量名替換成實(shí)際變量值
echo $PATH
(3) 配置環(huán)境變量
#第一種方法
export PATH=/usr/local/webserver/mysql/bin:$PATH ## 先添加
echo $PATH ### 再查看
#第二種方法
vim ~/.bashrc
export PATH="/home/vip5/soft/gatk/bin:$PATH" #在最后添加
source ~/.bashrc
習(xí)題
fasta和fastq文件
- 統(tǒng)計(jì)reads_1.fq 文件中共有多少條序列信息
reads_1.fq |paste - - - - |wc
- 輸出所有的reads_1.fq文件中的標(biāo)識(shí)符(即以@開(kāi)頭的那一行)
less -S reads_1.fq |grep ^@|wc
less -S reads_1.fq |paste - - - - |cut -f 1|wc
- 輸出reads_1.fq文件中的 所有序列信息(即每個(gè)序列的第二行)
less -S reads_1.fq |paste - - - - |cut -f 2
- 輸出以‘+’及其后面的描述信息(即每個(gè)序列的第三行)
less -S reads_1.fq |paste - - - - |cut -f 3
- 輸出質(zhì)量值信息(即每個(gè)序列的第四行)
less -S reads_1.fq |paste - - - - |cut -f 4
- 計(jì)算reads_1.fq 文件含有N堿基的reads個(gè)數(shù)
less -S reads_1.fq |paste - - - - |cut -f 2|grep N|wc
- 統(tǒng)計(jì)文件中reads_1.fq文件里面的序列的堿基總數(shù)
reads_1.fq |paste - - - - |cut -f 2|grep -o [ATCGN]|wc
- 計(jì)算reads_13.fq 所有的reads中N堿基的總數(shù)
less -S reads_1.fq |paste - - - - |cut -f 2|grep -o N|wc
- 統(tǒng)計(jì)reads_1.fq 中測(cè)序堿基質(zhì)量值恰好為Q20的個(gè)數(shù)
less -S reads_1.fq |paste - - - - |cut -f 2|grep -o B|wc
- 統(tǒng)計(jì)reads_1.fq 中測(cè)序堿基質(zhì)量值恰好為Q30的個(gè)數(shù)
less -S reads_1.fq |paste - - - - |cut -f 2|grep -o F|wc
- 統(tǒng)計(jì)reads_1.fq 中所有序列的第一位堿基的ATCGN分布情況
less -S reads_1.fq |paste - - - - |cut -f 2|grep -o ^[ATCGN]|sort|uniq -c
- 將reads_1.fq 轉(zhuǎn)為reads_1.fa文件(即將fastq轉(zhuǎn)化為fasta)
less -S reads_1.fq|paste - - - -|cut -f1,2|tr "\t" "\n"|tr "@" ">" >read_1.fa
- 統(tǒng)計(jì)上述reads_1.fa文件中共有多少條序列
awk 'NR%2==0{print $0}' read_1.fa |wc
- 計(jì)算reads_1.fa文件中總的堿基序列的GC數(shù)量
less -S read_1.fa |paste - - |cut -f 2|grep -o [GC]|wc
- 刪除 reads_1.fa文件中的每條序列的N堿基
less -S read_1.fa |paste - - |cut -f 2|sed 's/N//'
tr -d N read_1.fa
- 刪除 reads_1.fa文件中的含有N堿基的序列
awk 'NR%2==0{print $0}' read_1.fa|grep -v N|tr “\t” “\n”
cat read_1.fa|paste - -|grep -v N|tr “\t” “\n”
- 刪除 reads_1.fa文件中的短于65bp的序列
awk 'NR%2==0{print $0}' read_1.fa|awk 'length($0)>64{print $0}'
cat read_1.fa|paste - -| awk 'length($0)>64{print $0}'|tr '\t' '\n'
- 刪除 reads_1.fa文件每條序列的前后五個(gè)堿基
awk 'NR%2==0{print $0}' read_1.fa|sed 's/^.....//'|sed 's/.....$//'
cat read_1.fa|paste - -|cut -f 1 >reads_1_1.fa
awk 'NR%2==0{print $0}' read_1.fa|sed 's/^.....//'|sed 's/.....$//' >reads_1_2.fa
paste reads_1_1.fa reads_1_2.fa|tr '\t' '\n' >reads_1_3.fa
sed -n '1~4 p' reads_1.fq | tr "@" ">" >read_1_1.fa
sed -n '2~4 p' reads_1.fq | sed 's/^.\{5\}//g' | sed 's/.\{5\}$//g' > read_1_2.fa
paste read_1_1.fa read_1_2.fa | tr '\t' '\n' > reads_1.fa
less -S read_1.fa |awk '{if($0~/^>/)print $0;else print substr($0,6,length($0)-10)}'|less -S
19)刪除 reads_1.fa文件中的長(zhǎng)于125bp的序列
awk 'NR%2==0{print $0}' read_1.fa|awk 'length($0)<125{print $0}'
cat read_1.fa|paste - -| awk 'length($0)<125{print $0}'|tr '\t' '\n
- 查看reads_1.fq 中每條序列的第一位堿基的質(zhì)量值的平均值
perl -lane '{ord()}' tmp.fa
sam文件和bam文件
- 統(tǒng)計(jì)共多少條reads(pair-end reads這里算一條)參與了比對(duì)參考基因組
cat tmp.sam |grep -v ^@|wc
- 統(tǒng)計(jì)共有多少種比對(duì)的類(lèi)型(即第二列數(shù)值有多少種)及其分布。
cat tmp.sam |grep -v ^@|cut -f 2|sort |uniq –c
- 篩選出比對(duì)失敗的reads,看看序列特征。
less tmp.sam |awk '$6=="*"{print $0}' >tmp_unmap.sam
- 比對(duì)失敗的reads區(qū)分成單端失敗和雙端失敗情況,并且拿到序列ID
less -S tmp.sam |awk '$6=="*"{print $1}'|sort|uniq -c|grep -W 1 #單端
less -S tmp.sam |awk '$6=="*"{print $1}'|sort|uniq -c|grep -W 2 #雙端
- 篩選出比對(duì)質(zhì)量值大于30的情況(看第5列)
less -S tmp.sam |awk '$5>30{print $0}'
- 篩選出比對(duì)成功,但是并不是完全匹配的序列
less -S tmp.sam |awk '$6~"[IDNSHPX]"{print $0}'
less -S tmp.sam |awk '$6!="*"{print $6}'|grep [IDNSHPX]
- 篩選出inset size長(zhǎng)度大于1250bp的 pair-end reads
less -S tmp.sam|awk '$9>1250{print $0}'
- 統(tǒng)計(jì)參考基因組上面各條染色體的成功比對(duì)reads數(shù)量
less -S tmp.sam |grep '^@'|grep 'LN'
- 篩選出原始fq序列里面有N的比對(duì)情況
less -S tmp.sam |grep -v '^@'|awk '{print $10}'|grep N
less -S tmp.sam |grep -v '^@'|awk '$10~"N"{print$10}'
- 篩選出原始fq序列里面有N,但是比對(duì)的時(shí)候卻是完全匹配的情況
less -S tmp.sam |grep -v '^@'|awk '$6!~"[IDNSHPX]" && $$6!="*" && $10~"N"{print $0}'|less -S
- sam文件里面的頭文件行數(shù)
less -S tmp.sam|grep -c '^@'
- sam文件里每一行的tags個(gè)數(shù)一樣嗎
less -S tmp.sam|cut -f 12-20|less -S
- sam文件里每一行的tags個(gè)數(shù)分別是多少個(gè)
less -S tmp.sam |grep -v '^@'|awk '{print NF}'|sort |uniq -c #結(jié)果減去11
- sam文件里記錄的參考基因組染色體長(zhǎng)度分別是?
less -S tmp.sam |grep '^@'|grep 'LN'
- 找到比對(duì)情況有insertion情況的
less -S tmp.sam |grep -v '^@'|awk '$6~"I"{print$0}'
- 找到比對(duì)情況有deletion情況的
less -S tmp.sam |grep -v '^@'|awk '$6~"D"{print$0}'
17)取出位于參考基因組某區(qū)域的比對(duì)記錄,比如 5013到50130 區(qū)域
less -S tmp.sam |grep -v '^@'|awk '$8>5013 && $8<50130{print $0}'|less -S
- 把sam文件按照染色體以及起始坐標(biāo)排序
sort -k 3,3 -k 4,4n tmp.sam|less -S #對(duì)第3列進(jìn)行字母排序后對(duì)第4列進(jìn)行數(shù)值排序(升序)
- 找到 102M3D11M 的比對(duì)情況,計(jì)算其reads片段長(zhǎng)度。
less -S tmp.sam |grep -v '^@'|grep 102M3D11M|cut -f 10|wc
- 安裝samtools軟件后使用samtools軟件的各個(gè)功能?chē)L試把上述題目重新做一遍。
生信人的linux考試
一、在任意文件夾下面創(chuàng)建形如 1/2/3/4/5/6/7/8/9
格式的文件夾系列。
mkdir -p 1/2/3/4/5/6/7/8/9
二、在創(chuàng)建好的文件夾下面,比如我的是 /Users/jimmy/tmp/1/2/3/4/5/6/7/8/9
,里面創(chuàng)建文本文件 me.txt
touch /Users/jimmy/tmp/1/2/3/4/5/6/7/8/9/me.txt
三、在文本文件 me.txt
里面輸入內(nèi)容:
Go to: http://www.biotrainee.com/
I love bioinfomatics.
And you ?
vim me.txt
Go to: http://www.biotrainee.com/
I love bioinfomatics.
And you ?
:wq
四、刪除上面創(chuàng)建的文件夾 1/2/3/4/5/6/7/8/9
及文本文件 me.txt
rm -r 1/
五、在任意文件夾下面創(chuàng)建 folder1~5
這5個(gè)文件夾,然后每個(gè)文件夾下面繼續(xù)創(chuàng)建 folder1~5
這5個(gè)文件夾
mkdir -p folder{1..5}/folder{1..5}
六、在第五題創(chuàng)建的每一個(gè)文件夾下面都 創(chuàng)建第二題文本文件 me.txt
,內(nèi)容也要一樣。
echo folder{1..5}/folder{1..5}|xargs -n 1|while read id;do cp me.txt $id; done
七,再次刪除掉前面幾個(gè)步驟建立的文件夾及文件
rm -r *
八、下載 http://www.biotrainee.com/jmzeng/igv/test.bed
文件,后在里面選擇含有 H3K4me3
的那一行是第幾行,該文件總共有幾行。
wget http://www.biotrainee.com/jmzeng/igv/test.bed
less -S test.bed|grep -n 'H3K4me3'
wc test.bed
九、下載 http://www.biotrainee.com/jmzeng/rmDuplicate.zip
文件,并且解壓,查看里面的文件夾結(jié)構(gòu)
wget http://www.biotrainee.com/jmzeng/rmDuplicate.zip
unzip rmDuplicate.zip
tree rmDuplicate
十、打開(kāi)第九題解壓的文件,進(jìn)入 rmDuplicate/samtools/single
文件夾里面,查看后綴為 .sam
的文件,搞清楚 生物信息學(xué)里面的SAM/BAM
定義是什么。
cd rmDuplicate/samtools/single
ls *.sam
sam文件為fastq比對(duì)后得到的文件
bam文件為sam文件的二進(jìn)制格式,文件較小,易于儲(chǔ)存
十一、安裝 samtools
軟件
conda install -y samtools
十二、打開(kāi) 后綴為BAM
的文件,找到產(chǎn)生該文件的命令。
samtools view tmp.rmdup.bam
samtools view -bS abc.sam -o abc.bam
十三題、根據(jù)上面的命令,找到我使用的參考基因組 /home/jianmingzeng/reference/index/bowtie/hg38
具體有多少條染色體。
less -S /home/jianmingzeng/reference/index/bowtie/hg38|cut -f 1|sort|uniq
十四題、上面的后綴為BAM
的文件的第二列,只有 0 和 16 兩個(gè)數(shù)字,用 cut/sort/uniq
等命令統(tǒng)計(jì)它們的個(gè)數(shù)。
less -S .bam|cut -f 2|grep -w ['0'16']|sort|uniq -c
十五題、重新打開(kāi) rmDuplicate/samtools/paired
文件夾下面的后綴為BAM
的文件,再次查看第二列,并且統(tǒng)計(jì)。
cd rmDuplicate/samtools/paired`
samtools view tmp.rmdup.bam |wc
samtools view tmp.sorted.bam |wc
十六題、下載 http://www.biotrainee.com/jmzeng/sickle/sickle-results.zip
文件,并且解壓,查看里面的文件夾結(jié)構(gòu), 這個(gè)文件有2.3M,注意留心下載時(shí)間及下載速度。
wget http://www.biotrainee.com/jmzeng/sickle/sickle-results.zip
unzip sickle-results.zip
tree sickle-results
十七題、解壓 sickle-results/single_tmp_fastqc.zip
文件,并且進(jìn)入解壓后的文件夾,找到 fastqc_data.txt
文件,并且搜索該文本文件以 >>
開(kāi)頭的有多少行?
cd sickle-results/
unzip single_tmp_fastqc.zip
cd single_tmp_fastqc
less -S fastqc_data.txt|grep -c ^'>>'
十八題、下載 http://www.biotrainee.com/jmzeng/tmp/hg38.tss
文件,去NCBI找到TP53/BRCA1
等自己感興趣的基因?qū)?yīng)的 refseq數(shù)據(jù)庫(kù)
ID,然后找到它們的hg38.tss
文件的哪一行。
wget http://www.biotrainee.com/jmzeng/tmp/hg38.tss
TP53的基因ID:NM_000546,NM_001126112,NM_001126113,NM_001126114,NM_001126115,NM_001126116,NM_001126117,NM_001126118,NM_001276695
less -S hg38.tss|grep -n -e NM_000546 -e NM_001126112
十九題、解析hg38.tss
文件,統(tǒng)計(jì)每條染色體的基因個(gè)數(shù)。
less -S hg38.tss|cut -f 2|grep -v '_'|sort|uniq -c
二十題、解析hg38.tss
文件,統(tǒng)計(jì)NM
和NR
開(kāi)頭的熟練,了解NM
和NR
開(kāi)頭的含義。
less -S hg38.tss|grep -c ^'NM'
less -S hg38.tss|grep -c ^'NR'
NM為轉(zhuǎn)錄本并可以翻譯成蛋白
NR為轉(zhuǎn)錄本但不能翻譯成蛋白