🐧 Linux 基础操作与文件处理笔记(生信方向)
一、课程综述与目标
本课程面向生信初学者,从零基础开始,通过在 Linux 系统上的命令行操作,逐步掌握对数据文件的基本管理能力,并为转录组等高通量组学项目做准备。
📌 课程目标
- 掌握 Linux 基本命令与文件管理操作;
- 熟悉终端登录、文件系统结构与权限;
- 学会文本文件的查看、统计、切割、排序等操作;
- 完成后续生信分析必备的软件安装和准备工作。
二、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 等格式文件。熟练掌握 vim
、grep
、sed
、awk
等工具,结合正则表达式与常见符号,将极大提升我们在 批处理、数据提取、格式转换、报错解决 方面的能力,是生信分析必备的“硬核技能”。
二、正文
1. Vim 编辑器:高效文本利器
1.1 三种模式
模式 |
功能 |
命令模式 |
默认模式,执行复制、粘贴、跳转、剪切等操作 |
编辑模式 |
按 i 、a 、o 进入,进行文本编辑 |
末行模式 |
按 : 进入,执行保存、退出、替换、查找等命令 |
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
命令执行的三要素:
- 存在该命令的执行文件
- 该文件具有执行权限(chmod +x)
- 文件路径被包含在
$PATH
中
三、总结
Conda 是解决生信软件依赖问题的有力工具,合理使用 conda create
和 conda 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