为Linux命令烦恼?面对黑乎乎的终端不知所措?做生物信息学分析,Linux是绕不过的坎。
一、Linux基础命令:文件操作“三板斧”
1. 文件与目录操作
这是Linux中最常用的命令,相当于Windows中的“我的电脑”操作:# 查看当前目录pwd# 输出示例:/home/user/project# 解释:显示你当前所在的位置,避免“迷路”# 列出目录内容ls# 常用选项:# -l 详细信息模式(权限、大小、时间)# -a 显示隐藏文件(以.开头的文件)# -h 人性化显示大小(KB/MB/GB)# -t 按时间排序ls -lhrt *.fastq # 查看所有fastq文件的详细信息,按时间逆序排列# 切换目录cd /data/sequencescd .. # 返回上一级目录cd ~ # 返回家目录cd - # 返回上一次所在的目录
2. 文件内容查看
# 查看小文件全部内容cat sample_info.txt# 注意:大文件不要用cat,会刷屏!# 查看文件前几行(默认10行)head -n 20 sequence.fasta# 生信场景:查看fasta文件头信息、配置文件前几行# 查看文件后几行tail -n 50 analysis.log# 生信场景:查看分析日志的最后报错信息tail -f realtime.log # 实时查看日志更新(-f参数)# 分页查看大文件less huge_bam_file.sam# 在less中:# 空格键:下一页# b键:上一页# /关键词:搜索# q键:退出
# 复制文件cp source.fastq backup/cp -r source_dir/ backup/ # -r参数复制整个目录# 移动/重命名文件mv old_name.fastq new_name.fastqmv *.fastq fastq_files/ # 移动所有fastq文件到指定目录# 删除文件(谨慎!)rm unwanted_file.txtrm -r temp_dir/ # 删除目录# 安全技巧:先用ls查看,确认无误后再rm
二、系统信息查看命令
1. 磁盘空间管理
# 查看磁盘使用情况df -h# 输出示例:# Filesystem Size Used Avail Use% Mounted on# /dev/sda1 1.8T 1.2T 512G 70% /data# 解释:-h参数让显示更友好(用G/T单位)# 查看目录/文件大小du -sh /data/project/# -s:总计大小# -h:人性化显示# 常用组合:查找大文件du -sh * | sort -rh | head -10
# 查看系统进程top# 常用快捷键:# P:按CPU使用率排序# M:按内存使用率排序# 1:显示每个CPU核心使用情况# 更强大的监控工具htop # 需要先安装,但界面更友好# 查看特定进程ps aux | grep "hisat2"# 查看运行中的比对进程
三、文本处理“三剑客”:grep、sed、awk
1. grep:文本搜索神器
# 基本搜索grep "gene_name" expression_matrix.tsv# 常用选项:grep -i "tp53" variants.vcf # -i忽略大小写grep -n "ERROR" analysis.log # -n显示行号grep -c "PASS" filtered.vcf # -c统计匹配行数grep -r "function" scripts/ # -r递归搜索目录grep -v "contig" genome.fasta # -v反向搜索(不包含)# 正则表达式搜索grep "^>" protein.fasta # 搜索以>开头的行(fasta文件头)grep "[0-9]\{5,\}" data.txt # 搜索至少5位数字
# 替换文本sed 's/old_pattern/new_pattern/g' file.txt# 示例:修改配置文件路径sed 's|/old/path|/new/path|g' config.txt# 删除行sed '/^#/d' script.py # 删除所有注释行sed '5,10d' data.txt # 删除5-10行# 插入/追加文本sed '3i\# 这是插入的注释' file.py # 在第3行前插入sed '$a\# 文件结束' data.txt # 在最后一行后追加
# 基本用法:打印特定列awk '{print $1, $3}' data.tsv # 打印第1和第3列awk -F ',' '{print $1, $5}' clinical.csv # 指定分隔符为逗号# 条件筛选awk '$3 > 0.05 {print $1, $2}' pvalues.txt # 第3列大于0.05的行awk '/TP53/ {print $0}' genes.txt # 包含TP53的行awk 'NR % 4 == 1' reads.fastq # 提取fastq的序列名行# 统计计算awk '{sum+=$3} END {print "总和:", sum}' data.txtawk '{count[$1]++} END {for(gene in count) print gene, count[gene]}' gene_list.txt
四、管道与重定向:命令组合的艺术
1. 管道(|)
# 组合多个命令cat samples.txt | grep "tumor" | wc -l# 解释:读取文件 -> 搜索tumor -> 统计行数# 复杂示例:统计fastq文件行数(计算reads数)wc -l sample.fastq | awk '{print $1/4}'# 或者cat sample.fastq | awk 'END{print NR/4}'
# 输出重定向ls *.fastq > file_list.txt # 覆盖写入ls *.bam >> all_files.txt # 追加写入# 错误重定向command 2> error.log # 将错误信息保存到文件command > output.log 2>&1 # 标准输出和错误都重定向# 输入重定向tr "," "\t" < input.csv > output.tsv
五、实用命令组合示例
1. 数据质控常用命令
# 统计fastq文件基本信息echo "文件行数(总reads数):"; wc -l sample.fastq | awk '{print $1/4}'echo "文件大小:"; du -h sample.fastqecho "前5条序列名:"; grep "^@" sample.fastq | head -5# 批量查看质控结果for file in *.fastq; do echo "=== $file ===" head -n 4 "$file"done
# 简单的数据处理流程# 1. 解压gzip -d data.fastq.gz# 2. 质量过滤fastp -i data.fastq -o clean.fastq# 3. 比对hisat2 -x genome_index -U clean.fastq -S aligned.sam# 4. 格式转换samtools view -bS aligned.sam > aligned.bam# 5. 排序samtools sort aligned.bam -o sorted.bam# 6. 索引samtools index sorted.bam
六、常见问题与解决方案
1. 权限问题
# 查看权限ls -l file.txt# 修改权限chmod +x script.sh # 添加执行权限chmod 755 script.sh # 常用权限设置chown user:group file.txt # 修改所有者
# 查看环境变量echo $PATH# 添加软件到PATHexport PATH=$PATH:/path/to/software# 永久生效:添加到~/.bashrc
# Conda安装生物信息学软件conda install -c bioconda fastqcconda install -c bioconda samtoolsconda install -c bioconda bwa# 或使用mamba(更快)mamba install -c bioconda hisat2
小结
Linux不是洪水猛兽,而是生物信息学分析中的强大工具。一起学习。