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.操作對象;cmd [options][operation]
Shell prompt
提示符:$
:給一般使用者賬號(hào)使用道盏;#
:給root(管理員)賬號(hào)使用而柑;
cursor
光標(biāo),是指示鍵盤在命令行所輸入的位置荷逞;
carriage return
回車媒咳,命令行讀進(jìn),是使用者告訴shell可以執(zhí)行命令行了种远;
Internal field separator(IFS)
涩澡,域內(nèi)字段分隔符,包括space
, tab
和newline
.
Shell工作原理坠敷,會(huì)依據(jù)IFS將command line所輸入的文字給拆解為“字段”(word)妙同,然后再針對特殊字符(meta)先作處理,最后再重組整行command line膝迎。
(1) 查看文件ls
ls -l #查看當(dāng)前目錄下的文件
ls -al #查看當(dāng)前目錄下的所有文件(包括隱藏文件)
ls -lh #查看當(dāng)前目錄下的文件粥帚,并顯示其大小(K,M,G等)
(2) 訪問文件cd
cd #change directory
cd .. #返回上一級(jí)
cd ~ #返回用戶主目錄
cd - #返回到來這之前的目錄
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 #無論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: 壓縮的過程中顯示檔案;
-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ù)庫(每天需要更新一次状您,update)進(jìn)行查找 locate aa.tar.gz,不能查找新創(chuàng)建的文件兜挨;手動(dòng)更新數(shù)據(jù)庫sudo updated后膏孟,可以用locate進(jìn)行查找新創(chuàng)建的文件;
find #基于文件名在磁盤中查找拌汇,格式:“find 查找目錄 查找內(nèi)容”
find ./ -name 'af*'
(11) 查看文件
head #查看文件最開始的幾行柒桑,默認(rèn)為10行,可使用-n 6指定查看前6行
head -n 6 filename
tail #查看文件最后幾行
less和more也可以用來查看文件担猛,尤其是文件內(nèi)容特別多的時(shí)候
more分屏打印文件幕垦,繼續(xù)往下看按空格鍵傅联,往前看shift+pageup
less也可以分屏打印文件
less -SN abc.txt #查看abc.txt文件,并進(jìn)行對齊輸出行號(hào)
(12) cat
命令
cat filename #顯示整個(gè)文件
cat > filename #創(chuàng)建一個(gè)文件
cat file1 file2 > file #將幾個(gè)文件合并為一個(gè)文件
Cat <<END #可以輸入內(nèi)容疚察,再回車蒸走,繼續(xù)輸入內(nèi)容,直到我們輸入END貌嫡,輸入過程結(jié)束
Cat <<END >data/test.fa #將cat輸入的內(nèi)容存入data目錄下的test文檔中比驻,并保存為fa格式
(13)sort
命令
sort
為排序命令该溯,比較原則是從首字符開始,依次按ASCII碼值進(jìn)行比較别惦,最后將比較結(jié)果按升序輸出狈茉。
用法:sort [選項(xiàng)]... [文件]...
或:sort [選項(xiàng)]... --files0-from=F
常用參數(shù)
-k, --key=位置1[,位置2] #在位置1 開始一個(gè)key,在位置2 終止(默認(rèn)為行尾)
-r, --reverse #逆序輸出排序結(jié)果
-t, --field-separator=分隔符 #使用指定的分隔符代替非空格到空格的轉(zhuǎn)換
-n, --numeric-sort #根據(jù)字符串?dāng)?shù)值比較
-f, --ignore-case #忽略字母大小寫
# Example
sort -k 1,1 -k 2,2n test.bed #對第一列按照字符排序掸掸,第二列按照數(shù)值排序
sort -k 1,1 -k 2,2nr test.bed #對第一列按照字符排序氯庆,第二列按照數(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 #撤銷
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?#簡言之另存為,可保留源文件娘扩。
(3) grep
命令
grep命令是一種強(qiáng)大的文本搜索工具旋膳,它能使用正則表達(dá)式搜索文本义图,并把匹配的行打印出來
常用參數(shù)
-i #匹配時(shí)忽略大小寫
-v #取沒有匹配的行
-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)過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í)缨叫,則需要使用在命令通過行號(hào)或者文本過濾的方式前指明作用區(qū)域琐簇。
行號(hào):m, +n表示從m行開始向下n行蘑秽,m~n表示從m行開始的每n行塑顺。
文本過濾:’ /pattern/ command’ 可以只在包含pattern的行中執(zhí)行命令,
命令:p復(fù)制挤牛,d刪除莹痢,i插入,a追加竞膳,c行替換诫硕,y字符轉(zhuǎn)換章办,w寫入新文件锉走,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是一門語言,按行處理數(shù)據(jù)睡雇,也就是按記錄處理文本的萌衬,是一個(gè)強(qiáng)大的文本分析工具。
其命令的基本方式:
awk [option] '{pattern + action}' {filenames} # sometims muti file is ok
awk [option] 'BEGIN{初始代碼} {循環(huán)代碼} END{最后代碼}' filename
常見變量
FS #字段分隔符(默認(rèn)是任何空格)
NR #行號(hào)它抱,從1開始
NF #一條記錄的字段數(shù)目
$n #當(dāng)前記錄的第n個(gè)字段秕豫,字段間由FS分隔
$0 #完整的輸入記錄
常見的基本用法(參考awk相關(guān)書籍)
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í)符(即以@開頭的那一行)
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 中測序堿基質(zhì)量值恰好為Q20的個(gè)數(shù)
less -S reads_1.fq |paste - - - - |cut -f 2|grep -o B|wc
- 統(tǒng)計(jì)reads_1.fq 中測序堿基質(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文件中的長于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這里算一條)參與了比對參考基因組
cat tmp.sam |grep -v ^@|wc
- 統(tǒng)計(jì)共有多少種比對的類型(即第二列數(shù)值有多少種)及其分布。
cat tmp.sam |grep -v ^@|cut -f 2|sort |uniq –c
- 篩選出比對失敗的reads亲茅,看看序列特征回铛。
less tmp.sam |awk '$6=="*"{print $0}' >tmp_unmap.sam
- 比對失敗的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 #雙端
- 篩選出比對質(zhì)量值大于30的情況(看第5列)
less -S tmp.sam |awk '$5>30{print $0}'
- 篩選出比對成功克锣,但是并不是完全匹配的序列
less -S tmp.sam |awk '$6~"[IDNSHPX]"{print $0}'
less -S tmp.sam |awk '$6!="*"{print $6}'|grep [IDNSHPX]
- 篩選出inset size長度大于1250bp的 pair-end reads
less -S tmp.sam|awk '$9>1250{print $0}'
- 統(tǒng)計(jì)參考基因組上面各條染色體的成功比對reads數(shù)量
less -S tmp.sam |grep '^@'|grep 'LN'
- 篩選出原始fq序列里面有N的比對情況
less -S tmp.sam |grep -v '^@'|awk '{print $10}'|grep N
less -S tmp.sam |grep -v '^@'|awk '$10~"N"{print$10}'
- 篩選出原始fq序列里面有N茵肃,但是比對的時(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文件里記錄的參考基因組染色體長度分別是?
less -S tmp.sam |grep '^@'|grep 'LN'
- 找到比對情況有insertion情況的
less -S tmp.sam |grep -v '^@'|awk '$6~"I"{print$0}'
- 找到比對情況有deletion情況的
less -S tmp.sam |grep -v '^@'|awk '$6~"D"{print$0}'
17)取出位于參考基因組某區(qū)域的比對記錄袭祟,比如 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 #對第3列進(jìn)行字母排序后對第4列進(jìn)行數(shù)值排序(升序)
- 找到 102M3D11M 的比對情況验残,計(jì)算其reads片段長度。
less -S tmp.sam |grep -v '^@'|grep 102M3D11M|cut -f 10|wc
- 安裝samtools軟件后使用samtools軟件的各個(gè)功能嘗試把上述題目重新做一遍榕酒。
生信人的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
十、打開第九題解壓的文件通砍,進(jìn)入 rmDuplicate/samtools/single
文件夾里面玛臂,查看后綴為 .sam
的文件,搞清楚 生物信息學(xué)里面的SAM/BAM
定義是什么封孙。
cd rmDuplicate/samtools/single
ls *.sam
sam文件為fastq比對后得到的文件
bam文件為sam文件的二進(jìn)制格式迹冤,文件較小,易于儲(chǔ)存
十一敛瓷、安裝 samtools
軟件
conda install -y samtools
十二叁巨、打開 后綴為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
十五題寂嘉、重新打開 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
文件兄春,并且搜索該文本文件以 >>
開頭的有多少行?
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ù)庫
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
開頭的熟練,了解NM
和NR
開頭的含義蒸辆。
less -S hg38.tss|grep -c ^'NM'
less -S hg38.tss|grep -c ^'NR'
NM為轉(zhuǎn)錄本并可以翻譯成蛋白
NR為轉(zhuǎn)錄本但不能翻譯成蛋白