测验 1:你的第一个 Linux 终端
支持的版本:Ubuntu Server 24.04 LTS(主要),Rocky Linux 9(备用) 最后更新:2026 年 9 月 15 日
请先选择答案,再查看说明。这些情境使用第 1 课中的一次性来宾系统和私人笔记本。在题目中出现的命令仅用于帮助理解,不是让你在自己的主机上执行的指令。
cat /etc/os-release显示 Ubuntu 24.04,而uname -r打印了不同的版本号。哪项解释正确?- A) 其中一个命令一定有问题,因为 Linux 只有一个版本号
- B) Ubuntu 是一个库,而
uname用于识别终端 - C) Ubuntu 是一个发行版;
uname -r报告正在运行的内核。库和 shell 是不同的用户空间组件 - D) 安装新编辑器总会替换内核
显示答案
答案:C
说明:发行版会组合内核、库、工具、软件源和配置。内核管理资源并提供系统调用;库提供可重复使用的函数,其中一些会使用这些调用。Bash 会在用户空间解释命令。这些组件的版本不必与发行版版本相同。Debian 是 Ubuntu 派生自的发行版家族,但这种关系并不保证默认设置完全相同。
当前工作目录是你专用的临时根目录。执行
cp -i notes/draft.txt notes/copy.txt,然后执行mv -i notes/copy.txt archive/saved.txt。两条命令都成功后应有哪些文件?- A) 只剩
archive/saved.txt;cp删除了草稿 - B) 存在
notes/draft.txt和archive/saved.txt;notes/copy.txt已不存在 - C) 三个文件都存在;
mv是 copy 的另一种写法 - D) 文件位于
/notes和/archive,因为相对路径从/开始
- A) 只剩
显示答案
答案:B
说明:cp 会保留源文件并创建副本;mv 会更改副本的位置/名称。相对路径从工作目录开始,因此检查 pwd 很重要。-i 会在覆盖已存在的目标前询问,但它并不提供通用撤销历史。之后仍可通过保存的副本恢复草稿。
你想创建一个空练习文件,执行了
touch notes/draft.txt,却忘记这个文件已经包含笔记。通常touch会做什么?- A) 清空文件并保留其旧时间戳
- B) 创建同名目录
- C) 更新现有文件的时间戳,同时保留其内容
- D) 将文件移至主目录
显示答案
答案:C
说明:只有当目标路径不存在时,touch 才会创建空文件。对于已存在的文件,它通常会更改访问/修改时间戳,而不更改文本内容。使用 cat 检查内容,使用 ls -l 检查大小。这也是课程从专用目录开始的原因,不能假定熟悉的文件名尚未被使用。
你在 vi 中有未保存的编辑,并希望放弃这些修改。哪种操作正确?
- A) 在 Bash 提示符下输入
:q! - B) 按 Esc,输入
:q!,然后在 vi 中按 Enter - C) 按
i,然后输入:wq - D) 按 Ctrl+O,它会保存并退出所有编辑器
- A) 在 Bash 提示符下输入
显示答案
答案:B
说明:按 Esc 可返回 vi 普通模式;:q! 会放弃上次保存后的修改并退出。:wq 会保存并退出;:q 则会阻止丢弃未保存的工作。使用 nano 时,Ctrl+O 会在确认文件名后写入,Ctrl+X 会退出。要放弃 nano 中未保存的修改,应退出并在保存提示中选择不保存。编辑器命令必须在编辑器中输入,而不是在 shell 中输入。
某文件的基本模式为
640(-rw-r-----)。哪项解释正确?- A) 所有者可以读写,组用户可以读取,其他用户没有基本文件权限
- B) 每个人都可以读写,因为
6是最大的数字 - C) 所有者可以执行,因为
6表示读取加执行 - D) 因为没有执行位,所以任何人都无法删除该文件
显示答案
答案:A
说明:读取=4、写入=2、执行=1,因此所有者的 6 表示读+写,组用户的 4 表示读取。目录权限和其他控制也会影响访问及目录项删除;文件的写权限本身并不决定能否删除。撤销课程中的 chmod 600 时,应恢复已记录的原始数字模式,而不要假定为 644。
保存笔记时报告“Permission denied”。最好的第一步是什么?
- A) 对
/home递归更改权限 - B) 启动 root shell,并重做后续所有课程命令
- C) 检查
pwd、id以及相关目录/文件的所有权和权限 - D) 禁用来宾系统的防火墙
- A) 对
显示答案
答案:C
说明:你可能位于错误目录中,也可能正在编辑由其他账户拥有的文件。笔记本位于你自己的临时目录中,通常无需提权。默认情况下,sudo 会以 root 身份执行获得许可的命令;它不是诊断工具。依次运行 sudo whoami 和 whoami 可以看到,单条提权命令不会让普通 shell 永久变成 root。
在 Ubuntu 上,
sudo apt update成功完成。这是否表示所有已安装软件包都已升级,并且 nano 已安装?- A) 是;
update表示安装所有可用更新和缺失的编辑器 - B) 否;它刷新了软件源的软件包索引。安装或升级软件需要单独的软件包事务
- C) 它只更改了当前运行的内核
- D) 它启用了所有新发现的服务
- A) 是;
显示答案
答案:B
说明:apt update 会刷新可用软件包的信息;apt install nano 会请求安装并解析依赖,而 apt upgrade 的用途不同。在来宾系统上,应先检查建议执行的事务,再确认。可通过本地 dpkg-query 检查已安装软件包记录。之后删除软件包并不能精确撤销所有依赖、缓存、日志或配置变更;可选安装的完整恢复要使用已记录的 VM 快照。
Rocky Linux 9 来宾系统需要一个编辑器。哪种准备方式符合课程说明?
- A) 添加 Ubuntu 软件源并运行 APT
- B) 使用
rpm -q查看本地软件包清单,并使用 DNF 安装;虽然提供yum兼容接口,但无需两者都运行 - C) 使用
systemctl install nano,因为所有软件都是服务 - D) 安装任何软件包之前先重新构建内核
显示答案
答案:B
说明:Rocky 使用 RPM 软件包和 DNF 依赖管理。课程中备用的编辑器软件包是 nano 和 vim-minimal;Ubuntu 使用自己的软件包系列和名称。熟悉发行版有助于选择工具,但这并不意味着可以混用软件源,也不能假定服务/网络默认设置相同。
ps -p $$ -o pid,ppid,user,comm和sleep 30练习可以帮助你观察什么?- A) shell 的进程身份,以及一个会暂时占用 shell 的前台进程
- B) 来宾系统中安装的所有软件包
- C) 每条 shell 命令都会创建的永久服务
- D) 在两台 VM 上以及每次重启后都会相同的 PID
显示答案
答案:A
说明:$$ 会展开为当前 Bash 的 PID;PPID 标识其父进程。进程是正在执行的程序实例,而软件包是安装在磁盘上的软件。sleep 会在 30 秒后结束,也可以使用 Ctrl+C 中断。没有启用任何服务;不要使用从文档复制来的 PID 终止未知进程。
systemctl is-active systemd-journald.service报告active,而is-enabled报告static。可以得出什么结论?
- A) 由于服务未被
enabled,所以日志服务已失败 - B) 该单元当前处于活动状态,且没有常规的启用配置节;依赖关系/激活路径仍可启动它
- C)
static表示日志已永久冻结 - D) 必须反复运行
enable,直到两个命令返回相同单词
显示答案
答案:B
说明:运行状态与启用状态是分开的。start 会影响当前运行;enable 会创建启用链接,但除非与 --now 一起使用,否则本身不会启动单元。静态单元并不意味着它有故障。应查看 Loaded、Active 和相关日志,而不是为了得到特定显示结果而更改系统服务。
sudo journalctl -b -u systemd-journald.service -n 20 --no-pager会选择什么?
- A) 所有启动周期中所有日志文件的前 20 行
- B) 当前启动周期中,该单元最近保留的 20 条匹配记录,并且不使用分页器显示
- C) 所有记录,然后删除最后 20 条
- D) 仅显示错误,因为每条 journal 消息都是错误
显示答案
答案:B
说明:-b 限定当前启动周期,-u 限定单元,-n 指定最近记录的数量。这是读取操作。应结合时间戳和消息上下文进行解读;信息性事件不等于失败。没有匹配记录可能是筛选条件或保留策略所致;权限较低的读取者也可能看不到全部内容。在断定日志功能故障前,应先比较服务状态。
- 你重新打开了 VM 控制台,发现
LAB_DIR为空。正确的清理流程是什么?
- A) 删除所有名称以 network-beginner 开头的目录
- B) 假设上一个 shell 的当前目录未变,然后递归删除
- C) 从确切的已记录路径恢复
LAB_DIR,检查该目录,只删除指定的练习文件,然后删除空目录 - D) 删除
/tmp以移除所有可能的临时文件
显示答案
答案:C
说明:变量不会自动跨会话保留。已记录的唯一路径和明确列出的文件会限定操作范围。如果 rmdir 因目录非空而拒绝操作,这是有用的证据:应检查剩余的编辑器文件或未完成步骤,而不是扩大删除范围。test ! -e "$LAB_DIR" 成功时返回状态 0,证明该确切路径已不存在。