Linux入门(生信方向)

🐧 Linux 基础操作与文件处理笔记(生信方向)


一、课程综述与目标

本课程面向生信初学者,从零基础开始,通过在 Linux 系统上的命令行操作,逐步掌握对数据文件的基本管理能力,并为转录组等高通量组学项目做准备。

📌 课程目标

  1. 掌握 Linux 基本命令与文件管理操作;
  2. 熟悉终端登录、文件系统结构与权限;
  3. 学会文本文件的查看、统计、切割、排序等操作;
  4. 完成后续生信分析必备的软件安装和准备工作。

二、Linux基础知识


1. 系统与环境

1.1 Linux系统组成

  • 内核(Kernel):资源调度、驱动控制
  • Shell:命令解释器,是人与系统交互的桥梁
  • 文件系统:一切皆文件(设备、目录、脚本等)

1.2 主流发行版

  • RedHat/CentOS → 稳定性强,适合服务器
  • Ubuntu/Debian → 适合学习和桌面系统

2. 登录服务器

登录方式

方法 命令行登录 图形界面登录(Termius)
命令 ssh 用户名@IP 填表连接,保存信息
优点 快速简洁、适合熟练者 支持 SFTP、适合新手

3. Linux 文件系统结构

/            ← 根目录
├── home/    ← 用户主目录
├── bin/     ← 可执行文件
├── etc/     ← 配置文件
├── tmp/     ← 临时文件
├── var/     ← 日志和动态数据
└── dev/     ← 外设设备文件

路径符号解析

符号 含义
. 当前目录
.. 上一级目录
~ 当前用户主目录
/ 根目录(绝对路径)

三、常用命令详解


1. 路径与查看类命令

pwd               # 打印当前路径
ls -l             # 列出文件详细信息
ls -a             # 包括隐藏文件
cd                # 切换目录,cd ~ 返回家目录

2. 文件与文件夹操作

mkdir mydir                   # 创建目录
mkdir -p test/a/b             # 递归创建多层目录
touch newfile.txt             # 创建空文件
mv old.txt new.txt            # 重命名
mv a.txt mydir/               # 移动文件
cp a.txt b.txt                # 复制文件
rm file.txt                   # 删除文件
rm -rf mydir/                 # 删除目录(慎用)

3. 压缩与解压缩

tar -zcvf a.tar.gz dir/       # 压缩
tar -zxvf a.tar.gz            # 解压缩
gzip file.txt                 # 压缩为 .gz
gunzip file.txt.gz            # 解压

4. 软链接与快捷方式

ln -s /真实路径/目标 文件名   # 创建软链接

四、文本查看与处理命令


1. 文本查看命令

cat file.txt                  # 查看全文
tac file.txt                  # 逆序查看
head -n 10 file.txt           # 查看前10行
tail -n 10 file.txt           # 查看后10行
less file.txt                 # 分页查看(q退出)

2. 文本统计

wc -l file.txt                # 行数
wc -w file.txt                # 单词数
wc -c file.txt                # 字节数

3. 文本切割/排序/去重

cut -f 1 file.txt             # 按列提取(制表符分割)
cut -d ';' -f 2 file.txt      # 自定义分隔符提取
sort file.txt                 # 排序
uniq file.txt                 # 去重
sort file | uniq -c          # 排序后去重并统计

4. 文本合并与替换

paste file1 file2             # 行合并
paste -d ',' file1 file2      # 指定分隔符
tr 'A' 'T' < seq.txt          # 替换字符
tr -d ' ' < file.txt          # 删除空格

5. 通配符与正则匹配

通配符 含义
* 匹配任意长度字符
? 匹配单个任意字符
[abc] 匹配a或b或c
[^a] 不匹配a

五、小技巧与快捷键


快捷键速查表

快捷键 功能
Ctrl+C 中断命令
Ctrl+L 清屏
Ctrl+A/E 跳转行首/行尾
Ctrl+U/K 删除至行首/行尾
Tab 自动补全
!! 重复上条命令
cd - 返回上一目录

常见错误与解决

报错 解释
Permission denied 没有执行权限,需 chmod +x
No such file 文件路径拼写错误或不存在
Command not found 命令未安装或PATH问题

六、基础命令代码总结

# 登录服务器
ssh vip28@94.191.82.93

# 常用导航
pwd
ls -alh
cd ~
cd ../

# 创建与管理
mkdir project
touch notes.txt
cp notes.txt notes.bak
mv notes.txt project/
rm notes.bak

# 压缩解压
tar -zcvf data.tar.gz data/
tar -zxvf data.tar.gz

# 文本查看
head -n 5 file.txt
tail -n 10 file.txt
less file.txt
cat file.txt | wc -l

# 文本处理
cut -f 1 file.txt
cut -d ';' -f 2 file.txt
sort file.txt | uniq -c

# 合并与替换
paste -d ',' file1 file2
tr 'a-z' 'A-Z' < file.txt

📘 Linux 进阶技能与文本处理技巧(生信专用)


一、概述

在处理大规模生物信息学数据时,我们需要高效地处理文本数据,如 FASTA/FASTQ/GTF 等格式文件。熟练掌握 vimgrepsedawk 等工具,结合正则表达式与常见符号,将极大提升我们在 批处理、数据提取、格式转换、报错解决 方面的能力,是生信分析必备的“硬核技能”。


二、正文


1. Vim 编辑器:高效文本利器

1.1 三种模式

模式 功能
命令模式 默认模式,执行复制、粘贴、跳转、剪切等操作
编辑模式 iao 进入,进行文本编辑
末行模式 : 进入,执行保存、退出、替换、查找等命令

1.2 常用命令

# 光标移动
h/j/k/l          ←/↓/↑/→
^ or 0           行首
$                行尾
gg / G           跳转到文首/尾

# 文本处理
x / dd / yy      删除字符/行,复制行
10x / 5dd        删除10字符/5行
p / P            粘贴到下一行/上一行
u / ctrl+r       撤销/重做

# 末行操作
:wq              保存并退出
:q!              强制退出
:set nu          显示行号
:%s/A/B/g        全文替换

1.3 平台格式转换

系统 换行符
Linux \n
Windows \r\n
macOS(旧) \r

转换命令:

:set ff=unix
dos2unix file.txt

2. 生信常见文件格式回顾

格式 说明
FASTA >ID 开头,下一行起为序列
FASTQ 4行结构:@ID → 序列 → + → 质量
GTF/GFF 9列结构注释格式:feature、start、end、strand、attribute 等

示例:

chr1  HAVANA  exon  11869  12227  .  +  .  gene_id "ENSG00000223972"; transcript_id "ENST00000456328";

3. 文本处理三驾马车:grep / sed / awk


3.1 grep:搜索工具

grep -w "gene" example.gtf      # 精确匹配
grep -v "exon" example.gtf      # 反向查找
grep -n "UTR" example.gtf       # 显示行号
grep -r "TATA" ./Data           # 递归搜索
grep '^@' example.fq | wc -l    # 匹配以@开头的行并统计

3.2 sed:批量替换与处理

sed '2d' file                    # 删除第2行  
sed 's/HAVANA/ENSEMBL/g' file   # 替换所有Havana  
sed -n '/gene/p' file           # 打印匹配gene的行  
sed -r 's/^.{4}/XXXX/' file     # 替换每行前4字符  

练习思考:

  • 替换每行最后字符?→ 用 $ 结尾匹配
  • 只处理奇数行?→ sed '1~2p'

3.3 awk:结构化文本分析利器

结构与变量:
$0   整行
$1   第一列
$NF  最后一列
NR   行号
NF   当前行字段数
示例:
awk '{print $1, $3}' example.gtf              # 打印第1、3列  
awk 'BEGIN{FS="\t"} {print $3}' file          # 使用制表符作为分隔符  
awk '$3=="CDS"' file                          # 匹配第三列是CDS  
awk 'NR%2==1' file                            # 打印奇数行  
高级结构(3段式):
awk 'BEGIN{OFS=":"} {print NR, $9} END{print "Done"}'

4. 正则表达式核心语法

表达式 含义
^ 行首匹配
$ 行尾匹配
. 匹配任意单字符
* 匹配0次或多次
+ 匹配1次或多次
[] 匹配集合中的任意字符
[^] 排除集合内字符
{n} 恰好n次
{m,n} m~n次
` `

5. Linux常见符号与通配符

符号 功能
# 注释
\ 转义
` `
> >> 重定向
~ 家目录
* 任意字符通配
? 单字符通配
[] 匹配集合
$( ) 命令替换

6. 常见错误及解决方法

报错 原因 解决办法
command not found 命令不在PATH 使用绝对路径或修改 $PATH
Permission denied 没有执行权限 chmod +x 添加执行权限
No such file or directory 路径错误 检查路径拼写、文件是否存在

三、总结

掌握 vim + grep + sed + awk 的组合能力是每个生信分析师在Linux环境下开展项目所必须具备的技能。这些工具能够帮助你快速检索、提取、转换和重构文本数据,使你能够高效应对 FASTA、FASTQ、GTF、VCF 等复杂格式文件的处理任务。同时,熟悉错误信息与基本系统结构,让你在面对高性能计算平台时更加得心应手。


🔣 Linux 进阶技能代码总结

# Vim命令精华
vim file.txt
# 编辑 i,退出 esc,保存退出 :wq
:set nu        # 显示行号
:%s/old/new/g  # 全局替换

# grep示例
grep -w "gene" example.gtf
grep -n "exon" example.gtf

# sed示例
sed '2d' file.txt
sed 's/old/new/g' file.txt

# awk示例
awk '{print $1,$3}' example.gtf
awk '$3=="CDS"' example.gtf
awk 'BEGIN{OFS="\t"} {print NR, $1}' file.txt

# 正则表达式测试
grep '^>' test.fasta     # 匹配以>开头的FASTA ID行
grep '[AGTC]{5,}' file   # 匹配连续5个以上的碱基

# 错误处理
chmod +x script.sh        # 添加可执行权限
echo $PATH                # 检查命令路径

📘 Linux Shell 脚本编程与环境管理笔记(标准版)


一、概述

在生物信息学数据处理中,Shell 脚本是实现流程自动化、批量文件处理和远程任务调度的重要工具。无论是管理分析流程、监控资源状态,还是批量运行比对、质控等任务,Shell 编程都能极大提高工作效率。本笔记整理了Linux系统结构、变量、条件与循环结构、Shell脚本规范与任务提交方式,适合科研人员进行系统性学习与实践。


二、正文


1. Linux 系统基础与命令

1.1 Linux核心构成

  • 内核:资源调度与系统管理核心
  • Shell:命令行交互接口 + 脚本语言解释器
  • 文件系统:一切皆文件
  • 应用程序:运行服务与程序逻辑

1.2 系统信息查看

lscpu       # 查看CPU信息  
free -h     # 查看内存情况  
df -h       # 查看磁盘使用  
du -sh ~    # 查看某目录大小  
top/htop    # 查看进程状态  

2. Shell 中的变量类型

2.1 常用变量分类

类型 用途 示例
自定义变量 用户设置临时变量 name="gene"
环境变量 影响Shell行为,如 $PATH$HOME echo $PATH
状态变量 用于获取命令执行结果或进程信息 $?, $$, $!
位置参数变量 向脚本传递参数 $1, $*, $@

2.2 状态变量详解

$?   # 上一个命令是否执行成功(0=成功)  
$$   # 当前脚本进程号  
$!   # 上一个后台命令的进程号  
$_   # 上一个命令的最后一个参数  

2.3 位置参数变量

$0    # 脚本名称  
$1~$9 # 第1~9个参数  
${10} # 超过9个的参数  
$#    # 参数数量  
$*    # 所有参数作为单字符串  
$@    # 所有参数分别传递  

3. 条件判断与循环结构

3.1 if 条件语句

if [ 条件 ]; then
  命令块
elif [ 其他条件 ]; then
  命令块
else
  命令块
fi
数值判断:
[ $a -eq $b ]  # 等于
[ $a -gt $b ]  # 大于
字符串判断:
[ -z "$str" ]       # 空字符串
[ "$a" == "$b" ]    # 相等
文件判断:
[ -f file ]     # 存在且为普通文件
[ -d dir ]      # 是目录
[ -e file ]     # 存在

3.2 for 循环结构

for i in {1..10}
do
  echo "File_$i"
done

3.3 while 循环结构

while read id
do
  echo "$id.fq"
done < id_list.txt

4. 参数扩展技巧(字符串处理)

表达式 说明
${var#pattern} 从头开始删除最短匹配
${var##pattern} 从头开始删除最长匹配
${var%pattern} 从尾开始删除最短匹配
${var%%pattern} 从尾开始删除最长匹配
${var/old/new} 替换第一个匹配项
${var//old/new} 替换全部匹配项
filename="sample.fastq.gz"
echo ${filename%.gz}    # 去掉.gz

5. Shell 脚本规范

5.1 脚本基本结构

#!/usr/bin/env bash

echo "Start Analysis"
# 参数调用
echo "First arg: $1"

5.2 权限赋予与运行

chmod +x script.sh
./script.sh arg1 arg2

5.3 支持多语言 Shebang

#!/usr/bin/env python
#!/usr/bin/env Rscript

6. 输出与日志重定向

# 标准输出
echo "Done" > out.log

# 标准错误输出
command 2> err.log

# 标准输出 + 错误输出合并
command > out.log 2>&1

7. 后台运行与任务提交

# 后台运行(关闭终端不影响)
nohup bash run.sh > log.txt 2>&1 &

# 查看进程
ps -ef | grep run.sh

# 杀死进程
kill -9 PID

8. 实用脚本示例

8.1 批量生成文件并处理

for id in SRR{1234501..1234510}
do
  touch ${id}.fastq
  echo "fq2fa ${id}.fastq ${id}.fasta" >> run.sh
done

8.2 条件判断示例

fastqc sample.fq
if [ $? -eq 0 ]; then
  echo "YES"
else
  echo "NO"
fi

三、总结

Shell 脚本在生信流程中应用广泛,是实现自动化处理、并行任务管理和批量文件操作的重要工具。配合变量、条件结构、循环机制与 shebang,可实现灵活的任务控制与脚本调度,是生信工程师与科研人员必须掌握的核心技能之一。


🔣 Shell 编程核心命令与结构总结

# 变量定义与调用
name="genome"
echo $name

# 条件判断
if [ -f "file.txt" ]; then
  echo "File exists"
fi

# for循环
for id in {1..5}; do echo $id; done

# while循环
while read line; do echo $line; done < list.txt

# 参数扩展
f="reads.fq.gz"
echo ${f%.gz}  # reads.fq

# 脚本头部与运行
#!/usr/bin/env bash
chmod +x run.sh
./run.sh arg1 arg2

# 后台任务提交
nohup bash analysis.sh > out.log 2>&1 &

# 查看资源
top/htop
ps -ef | grep script
kill -9 PID

📘 Conda 安装与生信环境构建笔记(标准版)


一、概述

Conda 是跨平台的包管理与环境管理工具,在生物信息学领域常用于快速部署分析工具,如 fastqc、hisat2、salmon 等。通过 Conda,用户可以避免繁琐的软件依赖冲突问题,在不同项目间创建隔离环境,确保运行一致性。该笔记将从安装 Miniconda 开始,全面讲解 Conda 的使用、频道配置、环境管理、软件安装及常见错误处理方法。


二、正文


1. Conda 工具简介

  • Anaconda:包含大量科学计算包和 GUI 工具,体积大
  • Miniconda:精简版,仅包含 Conda 核心,推荐在服务器安装
  • conda-forge / bioconda:常用的社区频道,包含大量生信工具
  • 平台支持:Linux、Windows、macOS

2. 安装 Miniconda

2.1 下载方式

国内镜像推荐:

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

2.2 安装步骤

bash Miniconda3-latest-Linux-x86_64.sh  # 运行安装脚本
# 按提示操作,主要包括:
# - 阅读并同意协议(q退出)
# - 选择安装路径
# - 同意初始化

2.3 生效配置

source ~/.bashrc         # 让 conda 命令立即生效
conda -h                 # 测试是否安装成功

2.4 设置是否激活 base 环境(可选)

conda config --set auto_activate_base false

3. 配置 Conda 镜像源(频道)

3.1 添加常用镜像源(北外首选)

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

3.2 可选操作

# 删除默认的国外频道,提高下载速度
sed -i '/defaults/d' ~/.condarc

4. 环境管理操作

4.1 创建与激活环境

conda create -n rna python=3.8      # 创建名为rna的小环境
conda activate rna                 # 启动环境
conda deactivate                   # 退出当前环境
conda env list                     # 查看已有环境

4.2 删除环境

conda remove -n rna --all

5. 软件安装管理

5.1 安装与查询软件

conda search fastqc                # 查询可安装版本
conda install -y fastqc=0.11.7     # 安装指定版本

5.2 常见生信工具(转录组)

软件 功能
fastqc、multiqc 质量控制
fastp、cutadapt、trim-galore 数据清洗
hisat2、STAR、salmon、featureCounts 比对与定量
samtools、subread 数据处理

5.3 批量安装示例(10个工具)

conda create -y -n rna python=3.8
conda activate rna
conda install -y libstdcxx-ng=9.1.0 fastqc fastp trim-galore cutadapt=4 \
                 hisat2 subread multiqc samtools=1.14 salmon=1.4.0

6. 导出与导入环境

conda env export > env.yml                # 导出
conda env create -n newenv -f env.yml    # 导入

7. 软件调用与验证

安装包 调用命令
subread featureCounts
sra-tools prefetch
blast blastp
fastqc fastqc --help

8. 常见报错与解决方案

报错类型 解决方案
CondaHTTPError 检查网络,尝试 conda clean -a,修改 .condarc 为 http
Channel 404 删除错误频道,重新添加
缺少依赖库如 libstdc++.so.6 安装 libstdcxx-ng 或更新所有包 conda update --all
库无法被系统识别 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/miniconda3/lib

9. 环境变量设置

# 将 ~/bin 添加到 PATH 中
mkdir -p ~/bin
echo 'export PATH=~/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

命令执行的三要素:

  1. 存在该命令的执行文件
  2. 该文件具有执行权限(chmod +x)
  3. 文件路径被包含在 $PATH

三、总结

Conda 是解决生信软件依赖问题的有力工具,合理使用 conda createconda install 可以在不同项目中快速构建独立且可复现的软件环境。配合国内镜像源、环境导出机制及常见报错处理策略,几乎可以在任何 Linux 服务器上完成从安装到部署的全过程,极大提升项目效率和可维护性。


🔣 命令总览:Conda 使用核心命令

# 安装与配置
wget -c https://mirrors.bfsu.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes

# 环境管理
conda create -n rna python=3.8
conda activate rna
conda deactivate
conda env list
conda remove -n rna --all

# 软件安装与管理
conda install -y fastqc
conda search fastqc
conda list
conda remove fastqc

# 导出导入环境
conda env export > env.yml
conda env create -n rna --file env.yml

# 常见错误修复
conda clean -a
conda update --all
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/miniconda3/lib

posted @ 2025-05-19 15:54  tomorgen  阅读(169)  评论(0)    收藏  举报