1 环境变量
以之前安装好的bowtie2为例:
方法一:
首先赋值:
bowtie2=/home/kaoku/biosoft/bowtie2/bowtie2-2.4.5-linux-x86_64/bowtie2
使用的时候:
$bowtie2
方法二:
使用alias,别名,类似快捷方式:
alias bowtie2='/home/kaoku/biosoft/bowtie2/bowtie2-2.4.5-linux-x86_64/bowtie2'
使用的时候:不需要加$
bowtie2
方法三:(推荐)
环境变量
$ 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/"
相当于把整个bowtie2文件夹添加到环境变量中
当然,这些都是一次性操作,想要永久的话需要写入bashrc文件
cat ~/.bashrc
追加:
cat >> ~/.bashrc PS1="...."
source ~/.bashrc (永久生效)
进一步查看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软件用于比对序列,查看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
构建索引:
bowtie2-build .fa tmp
进行比对,并输出SAM文件
./bowtie2 -x tmp -1 example/reads/reads_1.fq -2 example/reads/reads_2.fq -S tmp.sa
-x比对,-1第一个需要比对的reads,后面是该reads的fastq文件,
-2第二个reads文件,比对完之后的数据以tmp.sam文件输出
2 编辑器
在开始后续的学习前,我想补充一下必要的编辑器内容。
启用:
vim file
随后进入编辑器
vim编辑器有两种操作模式:
普通模式
插入模式
刚打开文件时,vim编辑器进入普通模式。
按i进入插入模式,退出插入模式按Esc
普通模式还有一个特别的功能呢叫命令行模式
按:进入
其中:
:q 退出编辑器
:q! 取消修改并退出
:wq 保存修改并退出
其中,普通模式(一打开的模式)可以使用以下命令快速操作:
命令 | 描述 |
---|---|
x | 删除当前光标所在位置的字符 |
dd | (常用)删除当前光标所在行 |
dw | 删除当前光标所在位置的单词 |
d$ | 删除当前光标所在位置至行尾的内容 |
J | 删除当前光标所在行行尾的换行符(拼接行) |
u | (常用)撤销前一编辑命令 |
a | (常用)在当前光标后追加数据 |
A | 在当前光标所在行行尾追加数据 |
r char | 用char替换当前光标所在位置的单个字符 |
R text | 用text覆盖当前光标所在位置的数据,直到按下ESC键 |
补充:
在vim编辑器的普通模式下使用退格键(Backspace键)和删除键(Delete键)时要留心。
vim编辑器通常会将删除键识别成x命令的功能,删除当前光标所在位置的字符。vim编辑器在普通模式下通常不识别退格键。
3 脚本入门
变量:echo $变量
参数:
脚本:
echo $1
运行:
$ bash tmp.sh p1
p1
$ bash tmp.sh p1 p2
p1
修改一下:
echo $2
运行:
$ bash tmp.sh p1 p2 p3
p2
要使用$12 变量的话,正确书写:${12},$12会变成输出$1内容+字符串2。
通配符:
有file1~10
$ echo file1*
file1 file10
使用多个命令:
$ date;df
2022年 07月 18日 星期一 15:08:43 CST
文件系统 1K-块 已用 可用 已用% 挂载点
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
这个简单的脚本只用到了bash shell命令。date命令先运行,紧跟着df命令的输出。
创建shell脚本文件:
创建文件
$ touch test
进入编辑器
$ vim test
进入编辑模式
i
在第一行输入下面内容,#后面的惊叹号会告诉shell用哪个shell来运行脚本
#!/bin/bash
注释用#添加,如:
#!/bin/bash
# This script displays the date and df
date
df
按Esc退出编辑模式,:wq保存退出
尝试运行:
$ ./test
bash: ./test: 权限不够
查看权限:没有运行权限
$ ls -l test
-rw-r--r-- 1 root root 59 7月 18 15:53 test
赋予权限:
$ chmod u+x test
再次运行:
$ ./test
2022年 07月 18日 星期一 15:54:41 CST
文件系统 1K-块 已用 可用 已用% 挂载点
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环境变量来查找命令,然后采用以下两种方法:
1、将shell脚本文件所处的目录添加到PATH环境变量中。
2、在提示符中用绝对或相对文件路径来引用shell脚本文件。
本例子采用第二种方法。
可以将echo语句添加到shell脚本中任何需要显示额外信息的地方:
#!/bin/bash
# This script displays the date and df
echo The time and date are:
date
echo The df are as follow:
df
运行起来就会这样:
$ ./test
The time and date are:
2022年 07月 18日 星期一 16:04:28 CST
The df are as follow:
文件系统 1K-块 已用 可用 已用% 挂载点
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
输出会这样:
$ ./test
The time and date are: 2022年 07月 18日 星期一 16:06:44 CST
The df are as follow:
文件系统 1K-块 已用 可用 已用% 挂载点
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
输入重定向:
将指定文件内容定向到命令
command < inputfile
下一篇的内容,我们将进一步系统学习shell脚本的结构化命令。
我们下篇再见!
网友评论