每年期末当监考老师把Linux试卷发下来的那一刻,总会有人把ls敲成is,把chmod 777当成万能钥匙,还有人连虚拟机都还没装明白就直接裸考上阵。其实Linux这门课真没那么可怕,可怕的是把复习搞成了“背单词”——今天记一条命令,明天忘一条命令,最后脑子里只剩一锅粥。这篇内容就是帮你把整学期的Linux知识按照考试逻辑重新捋一遍,全是能直接拿来用干货,不整虚的,适合所有正在为Linux期末考试头秃的同学,也适合想系统梳理Linux基础的自学者。
1. 先摸清期末考试的“套路”:考点分布与命题风格
1.1 Linux课程到底在考什么
很多同学拿到复习资料就开始闷头背命令,结果背了三百条,考试只考三十条,剩下二百七十条全是干扰项。Linux期末考试看起来内容庞杂,实际上每年都在几个固定模块里打转。根据我自己带过的考试和过往真题,核心考点大体分为六块:基础概念与系统结构、文件与目录操作、用户权限与进程管理、磁盘与文件系统、Shell脚本编程、网络与系统服务。
这六个模块在试卷上的占比通常呈现一个规律:命令操作类题目占四到五成,概念理解类占两到三成,脚本编程占两成左右,剩下的就是综合分析题。也就是说,你不需要成为命令行大师,但必须掌握最核心的高频命令,并且理解命令背后的Linux设计逻辑。老师出题时不会故意为难你,但一定会用“换个参数考同一个命令”的方式来检验你是否真正理解了,而不是仅仅记录了。
1.2 不同题型的应对思路
Linux期末试卷一般有四种题型:选择题/填空题、简答题、命令操作题和脚本编程题。
选择题和填空题偏重概念辨析,比如文件权限的数字表示、硬链接和软链接的区别、/etc/passwd文件中各字段的含义。这类题考的是“记住了没有”,复习时要把概念类知识整理成表格反复看。
命令操作题往往给你一个场景,让你写出完成某功能的命令,比如“把/home/user/a.txt移动到家目录并改名为b.txt”“查找当前目录下所有大于10M的日志文件并删除”。这类题的核心是理解命令的参数语义,而不是死记硬背。
脚本编程题通常是让你补全一段Shell脚本,实现文件批量重命名、统计某个目录下文件数量、根据用户输入做条件判断等功能。这类题在复习时需要动笔手写,只看不写是最大的坑。我在后面第五章会给出模板化的解题思路。
2. 文件与目录操作:命令背不完,先抓住这几组核心逻辑
2.1 路径与通配符:所有文件操作的基石
文件与目录操作是Linux考试的分值大户,也是后续所有模块的基础。很多同学在这部分丢分不是因为不会命令,而是因为不理解路径的绝对与相对关系。绝对路径从根目录/开始写,比如/etc/ssh/sshd_config,相对路径则基于当前所在目录,比如./scripts/backup.sh。考试中经常出现的一道题是“当前处于/home/user目录,如何快速回到上一次所在的目录”——答案不是cd ..,而是cd -。这个细节就能筛掉一半人。
通配符是另一个高频考点。*匹配任意多个字符,?匹配单个字符,[abc]匹配字符集中的任意一个。举个例子,删除目录下所有.tmp结尾但文件名以数字开头的临时文件,应该写rm [0-9]*.tmp,而不是rm *.tmp。这类题考察的不是通配符本身,而是你能不能把需求翻译成精确的匹配表达式。考试时遇到这类题,先在草稿纸上把目标文件名的规律写清楚,再动笔写命令。
2.2 文件内容查看与检索:五大金刚各自的分工
关于查看文件内容,很多同学只知道cat,但考试偏偏喜欢考cat的局限性和其他命令的优势。比如有一个文件有5000行,你需要看最后50行,用tail -50 filename;需要分屏滚动查看,用less;需要边看边搜索某个关键词,用less然后按/进入搜索模式。cat适合查看小文件、合并多个文件(cat a.txt b.txt > c.txt),但大文件用cat会把终端刷爆,这就是命令选型的场景区别。
内容检索的核心是grep,期末必考。grep的基本用法是grep [选项] 模式 文件,高频选项有-i忽略大小写、-v反向匹配、-n显示行号、-r递归搜索目录。考试最常见的组合是:统计某个关键词在文件中出现的次数——注意,这里有两个理解歧义,grep -c keyword file统计的是“包含关键词的行数”,而不是“关键词出现的总次数”。如果要统计总次数,得用grep -o keyword file | wc -l。这种细微差别就是区分高分和低分的分水岭。
2.3 归档压缩:一条tar命令走天下
归档压缩在期末考试里基本必考,通常以三种形式出现:把某目录打包压缩成.tar.gz、解压某个压缩包到指定目录、查看压缩包内容。核心命令是tar,常用写法如下:
# 打包并压缩(注意顺序:c创建,z用gzip压缩,v显示过程,f指定文件名) tar -czvf backup.tar.gz /home/user/data # 解压到指定目录(-C指定目标目录) tar -xzvf backup.tar.gz -C /tmp/restore # 不解压直接查看压缩包里的文件列表 tar -tzvf backup.tar.gz这套用法在考试中出现的概率极高。还有一个易错点是命令选项的顺序,tar -czvf和tar -cvzf效果相同,但-f后面必须紧跟压缩包文件名,因为-f选项需要接收一个参数。有同学写成tar -czf file.tar.gz v /home/user,结果报错或者把v当成文件名,就是没理解-f会“吃掉”后面的参数这件事。
3. 用户、权限与进程:概念题和操作题的重灾区
3.1 用户和用户组:别再死记/etc/passwd了,理解设计逻辑
用户与用户组的题目看着零散,背后其实是一个很清晰的模型。Linux里每个用户都有一个唯一的UID,系统用数字识别用户而不是名字;用户组是一组用户的集合,方便统一授予权限。/etc/passwd文件每行存储一个用户的信息,用冒号分成七个字段:用户名、密码占位符、UID、GID、用户描述、家目录、登录Shell。/etc/shadow存加密后的密码,普通用户不可读。/etc/group存组信息,/etc/gshadow存组密码(实际很少用到)。
考试常考的命令包括:useradd添加用户、passwd设置或修改密码、usermod修改用户属性、userdel -r删除用户连同家目录、groupadd添加组、gpasswd -a user group把用户加入组。这里有个细节容易被忽略:useradd在CentOS/RHEL系默认不会自动创建家目录,需要加-m参数;而Ubuntu/Debian系的useradd行为又略有不同。如果考试机环境是Ubuntu,你写useradd -m -s /bin/bash student就比单纯useradd student更严谨。
3.2 权限位的数字城堡:三类身份 × 三类权限
权限部分的题目从来没变过花样,翻来覆去就考那几件事:读r=4、写w=2、执行x=1,三个数字分别代表文件属主、属组、其他用户的权限。比如chmod 754 file表示属主可读可写可执行(7),属组可读可执行(5),其他人只读(4)。
考试常考两类变形题。第一类是修改属主属组:chown user:group file,注意chown可以同时改属主和属组,chgrp只改属组。第二类是umask计算:系统默认权限(普通文件666,目录777)减去umask值就是新建文件/目录的实际权限。假设umask是022,新建文件权限就是666 - 022 = 644,新建目录就是777 - 022 = 755。注意这里不能按数字进制借位,就是简单的按位相减。
还有一个必考的概念是硬链接和软链接。ln file link创建硬链接,ln -s file softlink创建软链接。硬链接共享同一个inode,删除源文件不影响硬链接;软链接相当于快捷方式,源文件删除后软链接就失效了。考试常问“硬链接能不能跨文件系统”“能不能对目录做硬链接”——答案分别是“不能”和“不能(通常)”,这两个结论背后的原因都是inode的跨文件系统限制和目录循环引用风险。
3.3 进程管理:前台、后台、信号三件套
进程管理的题目难度不大,但概念容易混淆。首先分清几个关键命令:ps查看静态进程快照,top动态显示进程资源占用,kill向进程发送信号,jobs查看当前Shell后台任务,bg把暂停的任务放到后台继续跑,fg把后台任务调回前台。
kill的数字信号是考试重点,最常考的是kill -9(SIGKILL,强制终止)和kill -15(SIGTERM,优雅终止)。一个很经典的坑是:如果你直接kill 进程PID而不带选项,默认发送的是-15(SIGTERM),进程可能忽略该信号不退出。考试里如果题目说“强制杀死一个进程”,你必须写kill -9 PID而不是kill PID。
另一个高频考点是管道与重定向,这个考点经常和进程管理混在一起出题。|把前一个命令的标准输出作为后一个命令的标准输入,>把输出覆盖写入文件,>>追加写入,2>重定向错误输出。经常考的套路是:
# 找出所有名为httpd的进程并强制终止 ps -ef | grep httpd | grep -v grep | awk '{print $2}' | xargs kill -9 # 把日志中的错误信息单独存到文件 ./start.sh 2> error.loggrep -v grep这个写法很值得注意,因为ps -ef | grep httpd会把这条grep命令自身所在的进程也匹配出来,所以要先把它过滤掉。这种小细节在考试分析题里特别容易扣分。
4. 存储与系统管理:磁盘、文件系统和启动流程
4.1 从磁盘到目录:挂载的完整链路
期末试卷里磁盘相关题目一般围绕三条线索展开:查看磁盘状况、分区格式化、挂载使用。
查看磁盘状况用df -h(看已挂载分区的使用情况)和du -sh(看某个目录占用空间),这两个命令一定要区分清楚,前者是文件系统视角,后者是目录视角。fdisk -l查看磁盘及分区表,lsblk以树状结构显示块设备,后者更直观,考试时写哪个都给分。
格式化和挂载的流程是固定套路:
# 对/dev/sdb进行分区(交互式命令,考试一般只考概念) fdisk /dev/sdb # 格式化分区为ext4文件系统 mkfs.ext4 /dev/sdb1 # 创建挂载点并挂载 mkdir /data mount /dev/sdb1 /data # 写入/etc/fstab实现开机自动挂载 echo "/dev/sdb1 /data ext4 defaults 0 0" >> /etc/fstab考试最常问的是:为什么重启之后挂载失效了?答案就是没有写入/etc/fstab。这个文件每一行代表一个挂载配置,共六个字段:设备名、挂载点、文件系统类型、挂载选项、是否dump备份、是否fsck检查。最后两个字段考试爱考,都是0表示不备份不检查。
4.2 inode、文件系统类型与日志服务
关于inode,期末常考两个点:第一,inode存的是文件的元数据(权限、属主、大小、时间戳、数据块指针),而文件名存在目录项中;第二,格式化分区时inode数量是固定的,所以可能遇到磁盘还有空间但无法创建新文件的情况,因为inode耗尽了。这就能解释为什么df -i会作为排查工具出现。
文件系统类型也需要扫一眼,考试不会考得太深,但要知道几个关键词:ext4(传统Linux文件系统)、xfs(RHEL/CentOS 7默认)、swap(交换分区)。swap相当于Windows的虚拟内存,当物理内存不足时系统把部分数据换到磁盘上。考试经常出现“如何查看系统是否使用了swap”这类判断题,答案是free -h或swapon -s。
日志管理方面要记住/var/log目录下的几个关键文件:/var/log/messages(系统常规日志)、/var/log/secure(安全认证日志)、/var/log/dmesg(内核日志)。简答题常考“系统无法登录,如何排查”,排查思路就是先看/var/log/secure里的认证失败记录,再检查/etc/passwd账号是否被锁定,最后看磁盘空间是否已满导致日志写不进去,这个排查顺序就是Linux运维的基本功。
4.3 系统启动流程:BIOS到登录界面发生了什么
系统启动流程几乎是每次考试的简答题钉子户,而且同学们经常背了后面忘前面。可以把启动流程拆成五个关键节点:
计算机通电后,BIOS/UEFI首先自检硬件,然后按启动顺序找到启动介质;接着引导程序GRUB接管,GRUB加载内核和initramfs到内存;内核初始化硬件、挂载根文件系统;然后启动第一个进程systemd(老系统是init);systemd根据默认运行级别启动各类服务,最终显示登录界面。
考试容易丢分的地方有两个:一是混淆GRUB和内核的职责,二是把systemd和init的区别搞混。现在的Linux发行版基本都用systemd,配套命令是systemctl start/stop/enable service;老系统的service和chkconfig命令虽然还能用,但底层已经是兼容层了。遇到“如何设置开机自启某个服务”这类题,写systemctl enable 服务名就对了。
5. 文本处理与Shell脚本:编程题的得分关键
5.1 正则表达式:别怕,考试就考那几条元字符
正则表达式让很多同学望而生畏,但期末考试的难度其实只停留在“认识并会用基础元字符”的程度。必会的元字符就这些:^行首、$行尾、.任意单个字符、*前一个字符重复零次或多次、[]字符集、[^]取反、\{n,m\}或{n,m}表示重复次数。
举几个典型的正则题目:
# 找出所有以#开头的行(通常是注释) grep '^#' /etc/httpd/conf/httpd.conf # 找出所有空行 grep '^$' file.txt # 找出所有包含数字的行 grep '[0-9]' file.txt # 找出所有以任意三个字符加.log结尾的文件名 ls | grep '^...\.log$'正则里最难理解的是*的含义,它代表前一个字符重复0次或多次,而不是“任意字符”。你要匹配任意字符得用.*。这个点几乎年年考,选择填空里一定会出现“grep 'a*' file能匹配什么”这种题——它能匹配所有行,因为每一行都包含零个或多个a。理解了这一点,正则部分就稳了。
5.2 Shell脚本的核心语法与变量细节
脚本编程题分值高、套路固定,只要掌握几类常见语法,拿分并不难。先说变量和使用时的注意事项。定义变量必须等号两边不能有空格,比如name=“tom”,但name = “tom”会报错;引用变量用$变量名或${变量名},花括号用来界定变量名的边界,比如echo "${name}_file"如果去掉花括号就会被解释成引用变量name_file。
条件判断和循环是脚本题的必考结构。写法如下:
#!/bin/bash # if判断基本结构 if [ -f /etc/passwd ]; then echo "文件存在" else echo "文件不存在" fi # for循环遍历 for i in 1 2 3 4 5; do echo "当前数字: $i" done # while循环读文件 while read line; do echo "$line" done < /etc/hostname[ -f 文件 ]这类测试表达式是高频考点,常用的有:-f文件存在且是普通文件、-d目录存在、-e文件或目录存在、-z字符串为空、-n字符串非空、-eq数字等于、-ne数字不等于、-lt小于、-gt大于。特别注意:数字比较用-eq/-ne/-lt/-gt,字符串比较用=/!=/</>,混用了不仅报错,还逻辑诡异。
5.3 脚本编程题的答题模板与案例分析
考试时间有限,脚本题不可能让你从零写一个几十行的项目,通常就是补全代码或者写一个10行以内的小脚本。我总结出两类最高频的题目类型。
第一类是批量重命名或批量处理文件:
#!/bin/bash # 把当前目录下所有.txt文件改名为.bak for file in *.txt; do mv "$file" "${file%.txt}.bak" done${file%.txt}是Shell的字符串模式匹配,作用是去掉变量file以.txt结尾的部分。这个语法在大纲里不算超纲,但很多同学上课没注意,考场上卡住就只能丢分。类似的还有${file#前缀}去前缀,${file/旧/新}替换。
第二类是根据条件统计或筛选:
#!/bin/bash # 统计/etc/passwd中有多少个用户可以使用/bin/bash登录 count=0 while read line; do echo "$line" | grep -q '/bin/bash' && count=$((count+1)) done < /etc/passwd echo "可用bash登录的用户数: $count"这类题的关键是先把逻辑流程写清楚,再去套语法。我的建议是考场答题时先在草稿纸上画一下流程:循环什么条件、判断什么、输出什么,然后再动手写代码。上来就写代码很容易在循环嵌套和变量引用上翻车。
6. 从真题反推复习重点与常见失分点
6.1 高频易混淆命令对照表
很多失分不是因为不会,而是因为命令之间的区别没搞清。我整理了一份期末最常考的易混淆对照表,建议考前反复看几遍:
| 易混淆命令 | 核心区别 |
|---|---|
>与>> | 前者覆盖写入,后者追加写入 |
-f选项(tar中)与-f测试符 | 一个是紧跟文件名,一个是判断文件是否存在 |
pwd与whoami | 一个显示当前路径,一个显示当前用户名 |
df与du | 一个看文件系统空间,一个看目录占用空间 |
kill与killall | 一个按PID结束进程,一个按进程名结束 |
软链接与硬链接 | 软链可跨文件系统、可对目录;硬链共享inode、不可跨文件系统 |
chown user:group file与chmod 数字 file | 前者改归属,后者改权限位 |
ifconfig与ip addr | 老命令和新命令,ip功能更强,ifconfig需单独安装net-tools |
tar -czvf与tar -xzvf | 一个是打包压缩,一个是解压展开 |
这张表里的每一组都有人栽过跟头,考前对照着过一遍,比你盲目刷一百道选择题都有效。
6.2 实操是最好的复习方式:快速搭建一个练习环境
期末复习最忌讳只看不动手。命令这东西,你光看三遍还是记不住,敲一遍就记住了。我建议考前至少保证在真实的Linux环境里实操三个小时,重点覆盖:文件增删改查、权限修改、用户管理、进程终止、压缩解压、简单脚本编写。
如果你还没有Linux环境,最快的路径是在虚拟机里装一个CentOS Stream或者Ubuntu,安装过程本身就是考点——分区、设置root密码、创建普通用户、选择软件包,这些操作期末会以选择题或简答题出现。实在懒得上虚拟机,也可以先用WSL练命令,但要注意WSL的文件系统和真实Linux虚拟机还是有点差别,考试前最好还是在虚拟机里完整过一遍。
实操练习的顺序建议按照“文件操作 → 权限用户 → 进程管理 → 磁盘挂载 → 脚本编写”来,每做完一类操作,就用history看一下自己敲了哪些命令,回头再对照教材看有没有更优写法。这个方法让我当年从“背了忘”变成“肌肉记忆”,效果非常明显。
6.3 考试中的答题顺序与时间策略
Linux期末试卷题量通常不小,命令题和脚本题特别耗时间。我分享一个比较稳的答题策略:拿到试卷先把所有题目扫一遍,标记出“一眼就会”和“完全没思路”的题,先把会做的全部做完,把该拿的分拿稳,再回头啃难题。
命令操作题写答案时要注意格式,比如多个命令之间用分号还是换行,重定向符号两边是否有空格,这些细节不影响命令执行,但阅卷时老师看到一个不规范的写法难免扣印象分。遇到不确定的题目,能把相关的命令步骤写上就尽量写,因为考试是按步骤给分的,比如挂载题你写不出mount那条命令,但写对了mkfs.ext4和创建挂载点,照样能拿一半分。
最后提醒一句:很多同学在简答题上写了一大堆废话,却漏掉了关键字。比如“如何查看系统当前运行了哪些服务”,你回答systemctl list-units --type=service,一句话就满分;你要是从“首先我们需要打开终端”开始写,写几百字依然拿不到点。按点答题、简洁准确,才是Linux期末考试拿高分的正确姿势。
我个人在复习阶段最受益的一个习惯,是把每类题目的“标准答案命令”抄在一个小本子上,考前只看这些命令和它们的关键参数。这些命令不需要多,每个知识点三到五条就够,但每一条都要清清楚楚知道它每个参数是干什么的。你会发现考场上很多题目看着陌生,实际上就是你小本子上那条命令换了个马甲。