Linux 基础与命令行实战归纳总结
说实话,很多做生物信息学的新手,一上来就被命令行吓住了。我当年也是这样。
但跑过几个BWA和GATK流程之后你就会发现,Linux基础操作其实就是那几十个命令来回组合。掌握好它们,你的分析效率能翻倍。
这一章,我把最常用的操作替你捋一遍。全是实战中用得上的。
文件系统与路径操作
你先得明白一件事:Linux里一切皆文件。你的测序数据是文件,参考基因组是文件,甚至你的硬盘、网卡也是文件。
- pwd:查看当前路径。别猜自己在哪,用这个确认。
- ls -lh:列出文件,带人类可读的大小。我习惯加 -h 参数,不然显示出来的字节数看着头疼。
- cd:切换目录。cd .. 返回上级,cd ~ 回家。
- mkdir -p:创建多级目录。比如
一次性建好。mkdir -p project/sample1/fastq - cp -r:复制目录。千万别忘了 -r,不然会报错。
- mv:移动或重命名。mv file1 new_name 就是改名。
- rm -rf:删除目录。嗯,这个命令要小心。我以前手滑删过整个项目文件夹,血的教训。
文本查看与处理
FASTQ、SAM、VCF 这些文件全是文本格式。不会处理文本,你就做不了生信。
- cat:看小文件。大文件千万别用,终端会卡住。
- less:分页查看。按 q 退出,按 / 搜索。
- head / tail:看头尾几行。我经常用
快速查看FASTQ格式是否正确。head -n 4 sample.fastq - wc -l:统计行数。比如看你的FASTQ有多少条序列,除以4就行。
- grep:搜索关键词。最常用的是
筛选VCF文件中的特定染色体。grep "chr1" file.vcf - cut:按列切割。SAM文件的第1列是比对名称,可以用
提取看看。cut -f1 sample.sam | head - sort:排序。SAM文件要用
按第1列排序。sort -k1,1 sample.sam - uniq:去重。配合sort使用,
可以统计每个值的出现次数。sort file | uniq -c
管道与重定向
Linux最强大的地方在于,你可以把多个命令串起来用。这就是管道。
cat sample.fastq | grep "^@" | wc -l
这条命令做了三件事:先读取FASTQ,再筛选以@开头的行(序列标识行),然后统计个数。三秒就能知道FASTQ里有多少条序列。
重定向更常用。把结果保存到文件:
grep "chr1" raw.vcf > chr1_only.vcf
追加到文件末尾用 >>:
echo "Sample: S1" >> analysis_log.txt
权限管理与程序安装
你想想看,在学校或公司的服务器上,你经常发现有些程序装不了。为什么?权限不够。
- chmod +x:给脚本加执行权限。
之后才能用 ./run_gatk.sh 运行。chmod +x run_gatk.sh - chown:改文件所有者。一般普通用户不用这个。
- which:看程序在哪。
能告诉你bwa的安装路径。which bwa - sudo:临时管理员权限。生信软件安装常用
。注意,有的集群没有sudo权限。sudo apt install samtools
数据下载与传输
基因组数据动不动几十GB,没点下载技巧不行。
- wget:下载文件。
wget ftp://ftp.ensembl.org/pub/release-104/fasta/homo_sapiens/dna/Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz - curl -O:功能类似wget。
- scp:远程拷贝。我常用来从工作服务器下载结果到本地:
scp user@server:/path/to/results.vcf ./ - rsync -avz:增量同步。断点续传,大文件的首选。
进程与资源管理
BWA比对跑起来很慢,GATK更慢。你得学会监控和后台运行。
| 命令 | 作用 | 个人习惯 |
|---|---|---|
| top | 实时显示进程和CPU/内存占用 | 按1看每个CPU核的使用率 |
| htop | top的升级版,界面更友好 | 颜色区分不同区域,看着舒服 |
| nohup | 后台运行,退出终端也不中断 | 配合&使用, |
| screen | 虚拟终端,重连后还在 | 创建:screen -S bwa_job,断开:Ctrl+A+D,重连:screen -r bwa_job |
| tmux | 类似screen,功能更强 | 我个人更爱tmux,分屏好用 |
| kill -9 | 强制终止进程 | 慎用,只对付卡死的进程 |
避坑指南:我曾经踩过的坑
这些坑我几乎都犯过,写下来帮你省点时间。
- 文件路径带空格:千万别在文件名或目录名里用空格。用下划线或连字符代替。不然bwa根本不认,报错都找不到原因。
- 忘记加 -p 参数:mkdir -p 自动创建上级目录。不加它,目录不存在就报错。
- rm -rf 后没确认:我现在执行rm之前,都会先ls看一眼,确认无误再删。必要的时候用rm -i,每次删除前都问一下。
- 管道里的文件没排序:GATK要求输入的VCF或BAM必须排序,否则报错。养成习惯,跑任何生信工具之前先检查排序。
- 后台任务忘了nohup:直接 bwa mem & 后台跑,一关终端就停了。nohup是必须的。
实战:一个完整的Linux工作流
光说不练假把式。我们看看BWA-GATK流程中最基础的命令链长什么样。
# 1. 下载参考基因组
wget ftp://ftp.ensembl.org/pub/release-104/fasta/homo_sapiens/dna/Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz
gunzip Homo_sapiens.GRCh38.dna.primary_assembly.fa.gz
# 2. 为BWA建立索引
bwa index Homo_sapiens.GRCh38.dna.primary_assembly.fa
# 3. 比对
bwa mem -t 8 ref.fa sample_R1.fastq.gz sample_R2.fastq.gz > aligned.sam
# 4. 转为BAM并排序
samtools view -bS aligned.sam | samtools sort -o sorted.bam
# 5. 标记重复(GATK)
gatk MarkDuplicates -I sorted.bam -O marked_dups.bam -M metrics.txt
# 6. 建立索引
samtools index marked_dups.bam
# 7. 变异检测
gatk HaplotypeCaller -R ref.fa -I marked_dups.bam -O raw_variants.vcf
你看,这7个步骤,每个都离不开Linux基础命令。没有ls、cd、gunzip、管道、重定向,这一整套流程就跑不起来。
建议:刚接触时,别急着背命令。先理解这7步的逻辑,每一步在干什么、输入输出是什么。理解了之后,命令自然就记住了。
练练手
给你留几个练习。把这些做完,你的Linux基础就彻底稳了。
- 用 wget 下载一个FASTQ文件(比如1万条序列的小测试文件)。
- 用 grep 统计FASTQ里有多少条read。
- 用 cut 提取SAM文件的前2列。
- 用 sort 和 uniq 统计SAM文件里每个参考序列出现了多少次。
- 用 screen 创建一个名为 "my_bwa_job" 的会话,在后台运行BWA比对,然后断开重连。