火爆全网的2021公益课(linux基础 & conda)到底讲了什么
《生信技能树》团队的卖萌哥在2021新年伊始的公开课瞧瞧的上传到了咱们的B站,6个小时的课程还没有开始宣传就有了四千多学习量!
为了让大家更方便学习,我也安排学徒制作了一个配套课程的笔记材料,辅助大家听课!
https://www.bilibili.com/video/BV1Yy4y117SX

课前热身
推荐up主 :
徐洲更、思考问题的熊
系统查阅所有的Linux命令及详细参数的网站:
http://man.linuxde.net/ (中文,很奈斯)
课前准备工作:
安装软件
心理建设:
不用担心学不会,重点是坚持
会不会把服务器搞坏?重点看下图

为什么要学习Linux?

此外,出错不用担心,更重要的是我们解决问题的能力;学习过程中多练习多探究,贵在坚持。

Linux系统简介
登陆服务器
填表法
ssh 命令行法
退出服务器 exit
修改命令行配色
复制粘贴下面两行代码:
echo 'export PS1="\[\033]2;\h:\u \w\007\033[33;1m\]\u \033[35;1m\t\033[0m \[\033[36;1m\]\w\[\033[0m\]\n\[\e[32;1m\]$ \[\e[0m\]"' >> ~/.bashrc
source ~/.bashrc
修改字体、修改复制粘贴快捷方式
文件结构:在Linux中,一切皆文件
**文件传输:**Windows,Filezilla(xftp,winscp)
Mac,Filezilla
**命令格式:**命令 + 选项 + 文件
command [-options [parameter]] [FILE]
· command:命令名,相应功能的单词或缩写
· [ ] 代表有时候可以省略
· -options:选项,用来对命令进行控制,也可以省略 两种格式:-h,--help
· parameter:传给命令的参数,可以是零个、一个或者多个
· FILE:要处理的文件

文件夹与文件管理命令
pwd ## Print Working Directory 打印工作目录 ls ## List 列出 cd ## Change Directory 切换目录 mkdir ## Make Directory建立一个新的目录 touch ## 创建文件 mv ## MoVe 移动和重命名 rm ## ReMove 删除 cp ## Copy and Paste 拷贝粘贴 tar ## Tape archive 压缩或者解压文件 ln ## LiNk 链接文件
工作目录
pwd 命令
pwd ## print working directory 打印工作目录
. # 当前目录
.. # 上一级目录
~ # 家目录
/ # 根目录或者目录分隔符
常用Linux快捷键

cd 命令
切换工作目录
常见用法:cd [路径/目录]
cd .. ## 切换到上层目录,相对路径
cd ../.. ## 切换到上上层目录,相对路径
cd / ## 切换到根目录
cd /teach/ ## 切换到根目录下的teach,绝对路径
cd - ## 返回上一次的工作目录
cd ~ ## 回到用户家目录
cd ## 同上,回到用户家目录
ls 命令
常见参数:
-a ## 列出全部的文件,连同隐藏文件 all
-l ## 列出目录的详细信息
-h ## 将目录容量转换为人类易读的方式(例如BG,KB等等) human
-S ## 以文件大小排序 Size
-t ## 以时间排序 time
-R ## 以递归目录列出文件 Recursion
-d ## 显示目录本身,而非文件下的文件
常见用法:ls [参数] [路径/目录/文件名]
ls ## 列出当前目录的文件
ls ./ ## 同上,'.’号代表当前目录
ls ./*txt ## 列出当前目录下以 txt 结尾的文件
ls ../ ## 列出上层目录的文件
ls -a ## 列出当前目录下的所有文件,包括隐藏文件
ls -l ## 列出当前目录下文件的详细信息
ll ## ls -la 的简写,自定义的别名
ls -lh ## 加上 -h 参数,以 K、M、G 的形式显示文件大小
ls -lh / ## 列出根目录下文件的详细信息
正则表达式
* 匹配任意多个字符(0到正无穷)
?匹配最多一次(0次或一次)
文件属性

创建
mkdir
常见参数:-p/--parents,递归创建目录
常见用法:mkdir [-p] 目录名
# 创建目录
mkdir dir0
ls
mkdir -p dir0/sub1/sub2
ls dir0
ls dir0/sub1/
mkdir -p test{1..3}/test{1..3}
tree
tree
tree:以树的结构展示文件目录结构
常见参数:
-L # level #Descend only level directories deep.
touch
新建文件
常见用法:touch file
touch file.txt new.txt
ls
touch file{1..5}
ls
命名文件/文件夹规则

操作文件
mv
mv:移动或者重命名,Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
常见用法:mv 待移动的文件 移动到哪个目录
mv file1 Data/file2

cp
cp:Copy and Paste
常见参数:-r, copy directories recursively
常见用法:cp [OPTION] SOURCE DIRECTORY
rm
rm :Remove
常见参数 :
- f ## force不显示警告讯息
- i ## 在删除会先询问用户
- r ## 递归删除文件夹
常见用法:rm [-option] file
删库跑路:rm –rf /
初学者使用rm
要小心,加上-i
参数交互性删除
链接 ln
ln:Link 链接,分软链接(常用)和硬链接(默认).
常见参数:不加参数即为硬链接,加上 –s
参数即为软链接,
软链接的作用类似快捷方式 ,节约空间
常见用法:ln –s TARGET DIRECTORY
压缩 tar
tar:Tape archive 压缩或者解压文件.
常见参数:
-c ## 创建一个新的tar归档文件(创建压缩文件)
-x ## 从已有tar归档文件中提取文件(解压缩)
-f ## 输出结果到文件或设备
-v ## 在处理文件时显示文件(显示处理进度)
-j ## 将输出重定向给bzip2命令
-z ## 将输出重定向给gzip命令
常见用法:
解压:tar [参数] [待解压包]
压缩:tar [参数] <压缩后文件名> [待压缩文件/目录]
其他压缩和解压命令:
zip 和 unzip:用于压缩和解压 *zip 文件
gzip 和 gunzip:用于压缩和解压 *gz 文件
bzip2 和 bunzip2:用于压缩和解压 *bz2 文件

文本查看、操作、统计命令
· head/tail,cat/tac,less/more
· wc,sort,uniq
· cut,paste
cat
cat:Concatenate 查看文本文件的内容,输出到屏幕
常见参数:
-A ## 列出所有内容,包括特殊字符,如制表符
-n ## 打印出所有行号,-b 参数仅打印非空白行行号
常见用法:
cat readme.txt
cat -n readme.txt
## 写入文件
cat >file ## >重定向
Welcome to Biotrainee() !
^C ## 这里是按Crtl C
## 查看
cat file
Welcome to Biotrainee() !
其他:zcat:可以查看压缩的文本文件 tac:逆向查看
head/tail
head / tail:查看文件的前/后 n 行,默认 10 行
常见参数:-n
head常结合管道符用于控制输出行数|
more
more:逐页查看,按空格翻页,按回车换行,q退出
less
less [参数] 文件名
常用参数:
-N:显示行号
-S:单行显示
zless:查看压缩文件
· 上下左右键查看文本内容
· Enter键向下移动一行
· 空格键翻页
· q键退出
wc
wc:统计文本
常见参数:
-l # 统计行数
-w # 统计字符串数
-c # 统计字节数
cut
cut:文本切割
常见参数:
-d # 指定分隔符,默认\t;
-f # 输出哪几列(字段fields)
sort
sort:排序
常见参数:
-n # 按照数值从小到大进行排序
-V # 字符串中含有数值时,按照数值从小到大排序
-r # 逆向排序
-k # 指定区域
-t # 指定分隔符
uniq
uniq:去除重复行 ** 只去除相邻的重复行*
常见参数:
-c # 统计每个字符串连续出现的行数
paste
paste:文本合并
常见参数:
-d # 指定分隔符
-s # 按行合并
常见用法:
paste file1 file2 paste - -
tr
tr:字符替换
常见参数:
-d # 删除指定字符
-s # 缩减连续重复字符
小结
命令 | 功能 |
---|---|
cat | 查看文本,输出到屏幕 |
head | 显示文档的开头至标准输出中,默认显示十行 |
tail | 显示文档的末尾至标准输出中,默认显示十行 |
more | 逐页查看文档内容 |
less | 逐页查看文档内容,more的升级版 |
wc | 统计文本的行数等 |
cut | 文本切割 |
sort | 排序 |
uniq | 去重复 |
paste | 文本合并 |
tr | 字符替换 |
生物信息学常见数据格式
FASTA格式
fasta是一种基于文本用于表示核酸序列和多肽序列的格式。其中核酸或氨基酸均以单个字母来表示,且允许在序列前添加序列名及注释
特征:2行,id行和序列行
id行以“>”开头,有时会包含注释信息
序列行一个字母表示一个碱基/氨基酸
>gi|31563518|ref|NP_852610.1| microtubule-associated proteins 1A/1B light chain 3A isoform b [Homo sapiens]
MKMRFFSSPCGKAAVDPADRCKEVQQIRDQHPSKIPVIIERYKGEKQLPVLDKTKFLVPDHVNMSELVKI
IRRRLQLNPTQAFFLLVNQHSMVSVSTPIADIYEQEKDEDGFLYMVYASQETFGFIRENE
FASTQ格式
fastq是一种存储了生物序列及相应的质量评价的文本格式。测序的原始数据
@SRR001339.3 FC12160_04JAN08_s_3.tar:3:1:230:474 length=36
GTTAGTCGGGAACTAAGGCCTGTAGGCTCTTTCCAT
+SRR001339.3 FC12160_04JAN08_s_3.tar:3:1:230:474 length=36
IIIIBIII*II,III$I′I9IDI%II … 5′E%%(H
在fastq文件中,一个序列通常由四行组成:
第一行id行,以@开头,之后为序列的标识符以及描述信息(与FASTA格式的描述行类似) 第二行序列行,为序列信息 第三行附加信息行,以+开头,之后可以再次加上序列的标识及描述信息(可选) 第四行碱基质量行,根据ASCII表,用一个字符来表示对应碱基的测序质量
GFF/GTF格式
gff格式记录序列中转录起始位点、基因、外显子、内含子等组成元件在染色体中的位置信息


更多数据格式:[生信资料 3] 生物信息学常见数据格式,汇总!
文本处理三驾马车
grep
grep:一种强大的文本搜索工具,它能使用正则表达式匹配模式搜索文本,并把匹配的行打印出来
格式:grep [options] pattern file
常见参数:
-w:word 精确查找某个关键词 pattern
-c:统计匹配成功的行的数量
-v:反向选择,即输出没有匹配的行
-n:显示匹配成功的行所在的行号
-r:从目录中查找pattern
-e:指定多个匹配模式
-f:从指定文件中读取要匹配的 pattern
-i:忽略大小写
正则表达式
正则表达式:是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
^ 行首
$ 行尾
. 换行符之外的任意单个字符
? 匹配之前项0次或者一次
+ 匹配1次或者多次
* 匹配0次或者多次
{n} 匹配n次
{n,} 匹配至少n次
{m,n} 至少m,最多n
[] 匹配任意一个
[^] 排除字符
| 或者
常见用法
cat readme.txt | grep '^T'
cat readme.txt | grep ')$'
cat readme.txt | grep 'f.ee'
cat readme.txt | grep 'f\?ee'
cat readme.txt | grep 're\+'
cat readme.txt | grep [bB]
sed
sed:流编辑器,一般用来对文本进行增删改查
用法:sed [-options] 'script' file(s)
常见参数:
-n :禁止显示所有输入内容,只显示经过sed处理的行(常用)
-e :直接在命令模式上进行 sed 的动作编辑,接要执行的一个或者多个命令
-f :执行含有 sed 动作的文件
-r :sed 的动作支持的扩展正则(默认基础正则)
-i :直接修改读取的文件内容,不输出


1.如何做大小写转换?# 大写转小写
echo "ABCDS" | sed 's/[A-Z]/\l&/g'
# 小写转大写
echo "abcds" | sed 's/[a-z]/\u&/g'
2.如何替换每一行的前4个字符?
sed 's/ ^.... / /’
3.如何对奇数行进行操作?
sed '1~2 s///’
4.删除空白行
sed '/^$/d’
awk
awk命令 https://man.linuxde.net/awk
conda的安装与使用
conda的安装与使用
anaconda官网:https://www.anaconda.com/
miniconda则是精简版,需要啥装啥,推荐使用miniconda。
miniconda官网:https://conda.io/miniconda.html
下载miniconda
# 官网地址:
wget -c https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 国内镜像地址:
wget -c https://mirrors.bfsu.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
# -c 断点续传
# mac用户请用:
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
curl -O https://mirrors.bfsu.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
curl -O https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
安装conda的流程
1.运行 bash Miniconda3-latest-Linux-x86_64.sh
2.查看软件license
3.同意license
4.选择安装位置
5.同意conda初始化
6.设置是否要显示base环境提示(可选)
7.重新加载~/.bashrc
文件或者重新开shell窗口
配置conda频道
方法一:
官方频道:
conda config --add channels bioconda
conda config --add channels conda-forge
conda config --add show_channel_urls yes
清华镜像频道:
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/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes
北外镜像频道:
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes
注
不要重复添加频道,冗余的频道会让安装软件的过程变慢
顺序是有意义的
添加镜像要看服务器所在的位置,不是使用者所在的位置
方法二:
直接编辑 ~/.condarc
文件
查看已添加的频道
conda config --get channels
conda config --show channels
创建独立的环境
建议:1. base环境里最好不要装任何包
2. 除非你知道这个包会对你原生环境造成什么影响
# 创建名为rnaseq的conda小环境
conda create -n rnaseq # -n 指定环境名称
# 每次运行前,激活创建的小环境rna,成功激活进入小环境,即可安装软件
conda activate rnaseq # 激活
conda deactivate # 退出小环境
# 列出已存在的小环境
conda env list # 或
conda info --env
删除&重命名小环境
# 删除一创建的小环境及安装包
conda remove -n myenv --all
# 重命名
conda create -n python2
conda create -n py2 --clone python2
conda remove -n python2 --all
安装软件

哪些软件可以用conda安装?
网站查询
https://anaconda.org/search
https://bioconda.github.io/
conda search xxx
关键词搜索
# 查看当前环境所安装的软件
conda list
# 查看符合正则表达式的软件
conda list fast*
# 查看指定环境的软件
conda list -n rnaseq
# 删除软件
conda remove fastqc
# 升级软件
conda update fastqc
conda update conda
conda常用命令
环境管理 | 软件管理 |
---|---|
conda env list | conda search fastqc |
conda creat -n rnaseq | conda install fastqc |
conda activate rnaseq | conda remove fastqc |
conda deactivate | conda update fastqc |
conda list |
mamba的使用

安装mamba
在base环境下安装mamba *安装在base环境中的包在小环境中依然可以调用
conda activate base
conda install mamba
除启动环境外,所有conda
命令都可以用mamba
来代替
Mamba
中还提供了mamba repoquery depends
和mamba repoquery whoneeds
,分别用于查看指定库依赖哪些库,以及指定库被哪些库依赖
版本控制和迁移
用conda list 的export功能
conda list
conda list -n rnaseq --export > conda_rnaseq_list.txt # 导出
# 软件名=版本号=build
conda create -n rna -file conda_rnaseq_list.txt # 安装导出的信息
用conda env的export功能
conda env export -n rnaseq > rnaseq.yml # 导出
conda env create -f rnaseq.yml # 创建
conda env update -f rnaseq.yml # 更新
yml文件信息更全面
本地安装
先把安装包下载到本地,然后移动到miniconda3的pkgs文件夹下
alias简化启动
cp ~/.bashrc ~/.bashrc_bak # 备份
echo "alias rna='conda activate rnaseq'" >> ~/.bashrc
echo "alias deact='conda deactivate'" >> ~/.bashrc
source ~/.bashrc
删除没有使用的包
conda clean -i # 更换镜像时先运行这一条
conda clean -p # 删除从不使用的包
conda clean -t # 删除tar包
conda clean -a # 删除索引缓存、锁定文件、未使用过的包和tar包。 -a, --all Remove index cache, lock files, unused cache packages,
and tarballs.
-i, --index-cache Remove index cache.
-l, --lock Remove all conda lock files.
-p, --packages Remove unused packages from writable package caches.
WARNING: This does not check for packages installed
using symlinks back to the package cache.
-t, --tarballs Remove cached package tarballs.