美文网首页
【Linux 基础】四、环境变量、编辑器和脚本入门

【Linux 基础】四、环境变量、编辑器和脚本入门

作者: 佳奥 | 来源:发表于2022-07-18 20:54 被阅读0次

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脚本的结构化命令。

我们下篇再见!

相关文章

网友评论

      本文标题:【Linux 基础】四、环境变量、编辑器和脚本入门

      本文链接:https://www.haomeiwen.com/subject/qcbdirtx.html