【Linux 基礎(chǔ)】四、環(huán)境變量、編輯器和腳本入門

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)!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容