Linux 生信方向综合测试题(AB)

🧪 Linux 生信方向综合测试题

测试目的: 巩固知识,检验理解与实战能力。
题型覆盖: 基础命令、文件操作、conda环境、shell流程控制、脚本编程、正则表达式、文本处理。


📘 一、选择题(共10题,每题2分)

1. 以下哪条命令可用于创建空文件?
A. create file.txt
B. make file.txt
C. touch file.txt
D. new file.txt

2. 关于ls -lh命令,下列说法正确的是:
A. 列出隐藏文件
B. 按时间排序
C. 显示文件详细信息与人类可读的大小
D. 只能查看当前目录

3. 如果你想压缩整个目录为gzip格式,哪条命令最合适?
A. gzip dir/
B. tar -zcvf dir.tar.gz dir/
C. zip -r dir.zip dir/
D. compress dir/

4. 若要永久修改 $PATH 环境变量,推荐修改哪个文件?
A. /etc/passwd
B. ~/.vimrc
C. ~/.bashrc
D. ~/.profile.txt

5. 关于以下 Shell 判断语句 if [ -f myfile ]; then echo ok; fi,其含义是:
A. 判断myfile是否为空
B. 判断myfile是否为目录
C. 判断myfile是否存在并且是一个普通文件
D. 判断myfile是否可执行

6. 哪条命令可以查看文件的最后20行?
A. tail -n 20 file.txt
B. head -n 20 file.txt
C. less -n 20 file.txt
D. more -20 file.txt

7. 下列关于conda的说法正确的是:
A. 所有包都必须安装在base环境
B. miniconda不支持环境管理
C. bioconda是专门为生信软件提供的频道
D. conda无法指定软件版本安装

8. 以下哪个命令用于为shell脚本添加可执行权限?
A. chmod +r script.sh
B. chmod +w script.sh
C. chmod +x script.sh
D. chmod +rw script.sh

9. 以下哪个通配符可以匹配所有文件?
A. ?
B. *
C. []
D. \

10. 关于文件权限-rwxr--r--,哪个用户拥有执行权限?
A. 所有用户
B. 所属组
C. 所有者
D. 其他用户


✍️ 二、填空题(共10题,每题2分)

1. 使用 ____ 命令可以输出当前所在目录。
2. 在shell中,变量的赋值格式是 变量名=值,注意等号两边 ____。
3. 用于显示某文件的前10行的命令是 _______ file.txt
4. Linux中查看压缩包中内容不解压的命令是 _____ -ztvf file.tar.gz
5. 在conda中创建名为rna、Python版本为3.8的环境命令是:conda create -n ____ python=___
6. shell脚本首行一般写为 #!/usr/bin/env ____
7. 正则表达式中,^表示匹配字符串的____,$表示____。
8. 使用 ____ 命令可以让程序在后台运行,即使终端关闭也继续执行。
9. cut 命令默认以 ____ 为分隔符。
10. 文件路径../data/file.txt是 ____ 路径。


🛠 三、操作题(共6题,每题5分)

1. 创建以下目录结构,并在每层目录中创建一个文本文件 note.txt

project/
├── raw/
├── clean/
└── result/

2. 将Data.tar.gz解压到当前目录,进入其中的GTF文件目录,使用命令提取第9列的属性字段并只保留gene_id

3. 使用cut和sort组合命令,对example.gtf文件中的基因ID进行排序并统计去重个数。

4. 创建一个bash脚本:接收一个fastq文件名作为参数,使用fastqc命令进行质控,结果输出到qc_report/目录下。

5. 写一个for循环批量创建文件:SRR1234501.fastqSRR1234510.fastq

6. 编写脚本:读取一个文件名列表(list.txt),对每一项执行 echo "Processing $id" 并保存到 log.txt 文件中。


🔍 四、代码分析题(共3题,每题6分)

1. 请解释下面代码作用:

for i in {1..5}; do
  touch file$i.txt
done

2. 解释此shell流程的逻辑含义:

if [ $# -lt 1 ]; then
  echo "请传入文件名!"
  exit 1
fi

3. 分析下列awk命令的输出内容:

awk -F "\t" '{print $1, $3}' example.gtf | sort | uniq -c | head

✏️ 五、编程实战题(任选两题,每题10分)

˜题目1:自动下载并解压数据包
编写一个shell脚本download_and_unpack.sh,完成以下任务:

  • 接收一个URL参数;
  • 使用wget下载该压缩包;
  • 若下载成功,则自动解压缩;
  • 输出“下载完成并解压成功”。

题目2:构建conda环境并安装指定软件
请写出一套完整命令:

  • 创建名为 rna 的环境(python=3.8)
  • 添加 bioconda 和 conda-forge 镜像
  • 安装 fastqc=0.11.9 和 hisat2

题目3:判断目录是否存在,不存在则新建
写一个脚本,功能如下:

  • 判断目录 result/ 是否存在
  • 若存在,则输出“目录已存在”
  • 若不存在,则新建并输出“已创建 result/ 目录”

总分:130 分
💡 建议得分 ≥100 则说明掌握良好,<90 则推荐复习对应模块。


🧪 Linux 生信技能综合测试题 B 卷

目的: 检验应用能力、增强知识迁移。
结构: 多题型并重、配有场景背景与操作挑战。
时间建议: 60~90分钟
总分:130分


📘 一、选择题(共10题,每题2分)

1. 关于以下vim命令 :set ff=unix,其作用是:
A. 显示隐藏字符
B. 转换文件为Unix格式(\n换行)
C. 退出编辑模式
D. 自动保存文件

2. 用于查看当前活动进程的命令是:
A. ps -aux
B. htop
C. top
D. 以上都对

3. 以下关于awk命令的描述,哪一项是正确的?
A. awk 只能用于统计文本长度
B. awk 不能使用变量
C. awk 支持条件、循环等逻辑结构
D. awk 默认以逗号为分隔符

4. 以下命令中,哪个能正确解压 file.tar.gz
A. tar -zcvf file.tar.gz
B. gzip file.tar.gz
C. tar -zxvf file.tar.gz
D. unzip file.tar.gz

5. 以下哪个命令会导致目录被永久删除?
A. mv test/ /tmp/
B. rm -rf test/
C. rmdir test/
D. cp -r test/ backup/

6. shell脚本中 $# 的含义是:
A. 脚本名
B. 参数个数
C. 最近的PID
D. 退出状态码

7. Conda 中命令 conda deactivate 的作用是:
A. 删除当前环境
B. 安装环境
C. 退出当前激活的环境
D. 清空环境缓存

8. chmod 755 file.sh 后,普通用户对该文件的权限为:
A. 可读写执行
B. 可读执行
C. 只读
D. 无权限

9. 在 Bash 脚本中,进行字符串长度判断的命令是:
A. [ -e STRING ]
B. [ -z STRING ]
C. [ -n FILE ]
D. test STRING

10. 关于 bash 中的 for 循环语句 for id in $(cat list.txt); do …; done,其执行逻辑是:
A. 每次读取 list.txt 的一整行
B. 依次读取 list.txt 中的每个单词
C. 重复执行 10 次
D. 不会执行


✍️ 二、填空题(每题2分,共10题)

1. Linux 中切换当前用户家目录的命令是 ______ 或 ______。
2. 在 shell 中,变量引用推荐使用 ______ 括号来避免歧义。
3. 用于将 fastq 文件名按行合并为一行,可使用命令:paste -s -d ' ' ______
4. 通常 Conda 的配置文件为 ______,频道配置写入此文件。
5. conda list fast\* 的功能是列出当前环境中所有以 fast 开头的 ______。
6. bash 中,判断目录是否存在的语句是: [ -d <目录> ],如果不存在则用命令 ______ 新建。
7. vim 中,跳转到当前文件末尾的快捷键是:____
8. awk '{print $2}' file.txt | sort | uniq -c 中,uniq 前面必须接 ______ 命令才能正确统计重复行数。
9. sed 's/_/-/g' 表示将所有 ______ 替换为 ______。
10. nohup 命令常搭配 ______ 使用,使脚本在后台持续运行。


🛠 三、操作题(共6题,每题5分)

1. 用一条命令:在data/目录中查找所有包含 "ATG" 的fasta文件,并将其结果保存为result.txt

2. 批量将当前目录下所有.fq文件移动到 fastq_files/ 目录中,并使用 tree 命令查看层级结构。

3. 写出一条命令:统计example.gtf文件中第3列(feature)字段中各类注释出现的频次,并按降序排列。

4. 利用 awk 提取example.fq中序列行,并计算该文件中总共有多少碱基(A+T+C+G)

5. 编写shell脚本:将当前目录下所有.gz文件解压缩,并在日志中记录每个文件解压的开始与结束时间。

6. 创建名为 rnaseq.yml 的 Conda 环境配置文件,包含以下软件及版本:fastqc=0.11.9,hisat2,multiqc,cutadapt=4,并写出导入环境命令。


🔍 四、代码分析题(每题6分,共3题)

1. 请解释下面这段代码的作用:

cut -f9 example.gtf | cut -d ";" -f1 | sort | uniq -c | sort -nr | head

2. 分析下列 shell 脚本流程:

#!/bin/bash
if [ ! -f "$1" ]; then
  echo "文件不存在!"
  exit 1
fi
cat $1 | grep -v "^#" | awk '{print $3}' | sort | uniq -c

3. 判断下面脚本输出的具体内容(输入文件为example.fq)

awk 'NR%4==2' example.fq | tr -d '\n' | wc -c

✏️ 五、实战编程题(任选2题,每题10分)

题目1:设计shell脚本 pipeline.sh
功能要求:

  • 输入一个fastq文件路径作为参数
  • 自动执行:fastqccutadapt -q 20 -m 50fastqc质控
  • 所有输出结果保存在 qc_out/ 目录下
  • log.txt 中记录每一步耗时

题目2:批量提取GTF中包含某种注释(如CDS)并保存

  • 读取example.gtf
  • 提取所有 feature 为 CDS 的行
  • 输出到新文件 cds_feature.gtf
  • 统计输出文件总行数

题目3:设计一个conda包安装排查脚本
要求如下:

  • 判断当前是否已激活rna环境;若无则激活
  • 安装 fastqc=0.11.9,如果已安装则跳过
  • 安装完成后输出 fastqc 的帮助文档内容

B卷总分:130分
🎯 推荐得分 ≥95,代表你已具备熟练运用 Linux 与 Conda 的能力。


posted @ 2025-05-19 18:12  tomorgen  阅读(18)  评论(0)    收藏  举报