1 環(huán)境變量
以之前安裝好的bowtie2為例:
方法一:
首先賦值:
bowtie2=/home/kaoku/biosoft/bowtie2/bowtie2-2.4.5-linux-x86_64/bowtie2
使用的時(shí)候:
$bowtie2
方法二:
使用alias,別名,類似快捷方式:
alias bowtie2='/home/kaoku/biosoft/bowtie2/bowtie2-2.4.5-linux-x86_64/bowtie2'
使用的時(shí)候:不需要加$
bowtie2
方法三:(推薦)
環(huán)境變量
$ echo $PATH
/root/miniconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
$ export PATH="$PATH:/home/kaoku/biosoft/bowtie2/bowtie2-2.4.5-linux-x86_64/"
相當(dāng)于把整個(gè)bowtie2文件夾添加到環(huán)境變量中
當(dāng)然,這些都是一次性操作,想要永久的話需要寫入bashrc文件
cat ~/.bashrc
追加:
cat >> ~/.bashrc PS1="...."
source ~/.bashrc (永久生效)
進(jìn)一步查看bowtie2目錄:
root 09:40:19 /home/kaoku/biosoft/bowtie2/bowtie2-2.4.5-linux-x86_64
$ tree -h
├── [4.0K] example
│ ├── [4.0K] index
│ │ ├── [4.0M] lambda_virus.1.bt2
│ │ ├── [1.5K] lambda_virus.2.bt2
│ │ ├── [ 17] lambda_virus.3.bt2
│ │ ├── [ 12K] lambda_virus.4.bt2
│ │ ├── [4.0M] lambda_virus.rev.1.bt2
│ │ └── [1.5K] lambda_virus.rev.2.bt2
可以看到一些示例文件。
$ less reads/longreads.fq
查看fq文件,四行
bowtie2軟件用于比對(duì)序列,查看help
bowtie2 [options]* -x <bt2-idx> {-1 <m1> -2 <m2> | -U <r> | --interleaved <i> | -b <bam>} [-S <sam>]
首先查看索引文件:
$ ls -lh index/
總用量 8.1M
-rw-r--r-- 1 root root 4.1M 1月 17 08:17 lambda_virus.1.bt2
-rw-r--r-- 1 root root 1.5K 1月 17 08:17 lambda_virus.2.bt2
-rw-r--r-- 1 root root 17 1月 17 08:17 lambda_virus.3.bt2
-rw-r--r-- 1 root root 12K 1月 17 08:17 lambda_virus.4.bt2
-rw-r--r-- 1 root root 4.1M 1月 17 08:17 lambda_virus.rev.1.bt2
-rw-r--r-- 1 root root 1.5K 1月 17 08:17 lambda_virus.rev.2.bt2
構(gòu)建索引:
bowtie2-build .fa tmp
進(jìn)行比對(duì),并輸出SAM文件
./bowtie2 -x tmp -1 example/reads/reads_1.fq -2 example/reads/reads_2.fq -S tmp.sa
-x比對(duì),-1第一個(gè)需要比對(duì)的reads,后面是該reads的fastq文件,
-2第二個(gè)reads文件,比對(duì)完之后的數(shù)據(jù)以tmp.sam文件輸出
2 編輯器
在開(kāi)始后續(xù)的學(xué)習(xí)前,我想補(bǔ)充一下必要的編輯器內(nèi)容。
啟用:
vim file
隨后進(jìn)入編輯器
vim編輯器有兩種操作模式:
普通模式
插入模式
剛打開(kāi)文件時(shí),vim編輯器進(jìn)入普通模式。
按i進(jìn)入插入模式,退出插入模式按Esc
普通模式還有一個(gè)特別的功能呢叫命令行模式
按:進(jìn)入
其中:
:q 退出編輯器
:q! 取消修改并退出
:wq 保存修改并退出
其中,普通模式(一打開(kāi)的模式)可以使用以下命令快速操作:
| 命令 | 描述 |
|---|---|
| x | 刪除當(dāng)前光標(biāo)所在位置的字符 |
| dd | (常用)刪除當(dāng)前光標(biāo)所在行 |
| dw | 刪除當(dāng)前光標(biāo)所在位置的單詞 |
| d$ | 刪除當(dāng)前光標(biāo)所在位置至行尾的內(nèi)容 |
| J | 刪除當(dāng)前光標(biāo)所在行行尾的換行符(拼接行) |
| u | (常用)撤銷前一編輯命令 |
| a | (常用)在當(dāng)前光標(biāo)后追加數(shù)據(jù) |
| A | 在當(dāng)前光標(biāo)所在行行尾追加數(shù)據(jù) |
| r char | 用char替換當(dāng)前光標(biāo)所在位置的單個(gè)字符 |
| R text | 用text覆蓋當(dāng)前光標(biāo)所在位置的數(shù)據(jù),直到按下ESC鍵 |
補(bǔ)充:
在vim編輯器的普通模式下使用退格鍵(Backspace鍵)和刪除鍵(Delete鍵)時(shí)要留心。
vim編輯器通常會(huì)將刪除鍵識(shí)別成x命令的功能,刪除當(dāng)前光標(biāo)所在位置的字符。vim編輯器在普通模式下通常不識(shí)別退格鍵。
3 腳本入門
變量:echo $變量
參數(shù):
腳本:
echo $1
運(yùn)行:
$ bash tmp.sh p1
p1
$ bash tmp.sh p1 p2
p1
修改一下:
echo $2
運(yùn)行:
$ bash tmp.sh p1 p2 p3
p2
要使用$12 變量的話,正確書(shū)寫:${12},$12會(huì)變成輸出$1內(nèi)容+字符串2。
通配符:
有file1~10
$ echo file1*
file1 file10
使用多個(gè)命令:
$ date;df
2022年 07月 18日 星期一 15:08:43 CST
文件系統(tǒng) 1K-塊 已用 可用 已用% 掛載點(diǎn)
none 3904148 4 3904144 1% /mnt/wsl
drivers 104857596 48362312 56495284 47% /usr/lib/wsl/drivers
none 3904148 0 3904148 0% /usr/lib/wsl/lib
/dev/sdc 1055762868 5305900 996753496 1% /
none 3904148 28 3904120 1% /mnt/wslg
這個(gè)簡(jiǎn)單的腳本只用到了bash shell命令。date命令先運(yùn)行,緊跟著df命令的輸出。
創(chuàng)建shell腳本文件:
創(chuàng)建文件
$ touch test
進(jìn)入編輯器
$ vim test
進(jìn)入編輯模式
i
在第一行輸入下面內(nèi)容,#后面的驚嘆號(hào)會(huì)告訴shell用哪個(gè)shell來(lái)運(yùn)行腳本
#!/bin/bash
注釋用#添加,如:
#!/bin/bash
# This script displays the date and df
date
df
按Esc退出編輯模式,:wq保存退出
嘗試運(yùn)行:
$ ./test
bash: ./test: 權(quán)限不夠
查看權(quán)限:沒(méi)有運(yùn)行權(quán)限
$ ls -l test
-rw-r--r-- 1 root root 59 7月 18 15:53 test
賦予權(quán)限:
$ chmod u+x test
再次運(yùn)行:
$ ./test
2022年 07月 18日 星期一 15:54:41 CST
文件系統(tǒng) 1K-塊 已用 可用 已用% 掛載點(diǎn)
none 3904148 4 3904144 1% /mnt/wsl
drivers 104857596 48365256 56492340 47% /usr/lib/wsl/drivers
none 3904148 0 3904148 0% /usr/lib/wsl/lib
成功。
注意,要讓bash shell找到腳本文件,可以先PATH環(huán)境變量來(lái)查找命令,然后采用以下兩種方法:
1、將shell腳本文件所處的目錄添加到PATH環(huán)境變量中。
2、在提示符中用絕對(duì)或相對(duì)文件路徑來(lái)引用shell腳本文件。
本例子采用第二種方法。
可以將echo語(yǔ)句添加到shell腳本中任何需要顯示額外信息的地方:
#!/bin/bash
# This script displays the date and df
echo The time and date are:
date
echo The df are as follow:
df
運(yùn)行起來(lái)就會(huì)這樣:
$ ./test
The time and date are:
2022年 07月 18日 星期一 16:04:28 CST
The df are as follow:
文件系統(tǒng) 1K-塊 已用 可用 已用% 掛載點(diǎn)
none 3904148 4 3904144 1% /mnt/wsl
drivers 104857596 48369848 56487748 47% /usr/lib/wsl/drivers
none 3904148 0 3904148 0% /usr/lib/wsl/lib
如果想把字符串和命令輸出在同一行的話,采用以下方法:
#!/bin/bash
# This script displays the date and df
echo -n " The time and date are: "
date
echo The df are as follow:
df
輸出會(huì)這樣:
$ ./test
The time and date are: 2022年 07月 18日 星期一 16:06:44 CST
The df are as follow:
文件系統(tǒng) 1K-塊 已用 可用 已用% 掛載點(diǎn)
none 3904148 4 3904144 1% /mnt/wsl
drivers 104857596 48371044 56486552 47% /usr/lib/wsl/drivers
none 3904148 0 3904148 0% /usr/lib/wsl/lib
輸出重定向:
command > output
如:
$ date > test
$ cat test
.........
追加命令(而不是覆蓋),采用>>追加
如:$ date >> test1
輸入重定向:
將指定文件內(nèi)容定向到命令
command < inputfile
下一篇的內(nèi)容,我們將進(jìn)一步系統(tǒng)學(xué)習(xí)shell腳本的結(jié)構(gòu)化命令。
我們下篇再見(jiàn)!