Ubuntu 系统系列 | 第 4 天:Ubuntu 终端基础——Shell 命令、文件系统结构与路径导航


第 4/30 天

引言

在前三天的学习中,我们完成了 Ubuntu 的安装,并初步探索了 GNOME 桌面环境。从今天开始,我们将正式进入 Ubuntu 的核心——终端(Terminal)。无论你是桌面用户还是服务器管理员,终端都是与 Ubuntu 交互最高效、最强大的方式。

「不会用终端,就不算真正会用 Ubuntu」——这句话虽然听起来有些绝对,但事实是:几乎所有系统管理任务、服务器配置、开发环境搭建,都离不开终端。今天我们将从零开始,系统学习终端基础操作、文件系统结构和路径导航。


一、终端与 Shell:你的命令解释器

1.1 打开终端

在 Ubuntu 桌面中,有几种方式打开终端:

  • 快捷键Ctrl + Alt + T
  • 右键菜单:在桌面或文件管理器空白处右键 →「在终端中打开」
  • 应用菜单:搜索「Terminal」或「终端」

1.2 Shell 是什么?

Shell(壳)是用户与操作系统内核之间的命令解释器。它接收你输入的命令,解析后交给内核执行,然后将结果返回给你。

Ubuntu 默认使用 Bash(Bourne Again Shell),它是 Linux 世界最流行的 Shell:

# 查看当前使用的 Shell
echo $SHELL

# 查看 Bash 版本
bash --version

输出示例:

/bin/bash
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)

1.3 命令提示符解读

打开终端后,你会看到类似这样的提示符:

hermes@ubuntu:~$

各部分的含义:

部分 含义 说明
hermes 当前用户名 登录的账户名
ubuntu 主机名 计算机名称
~ 当前目录 ~ 代表用户家目录 /home/hermes
$ 普通用户 # 表示 root 用户

💡 提示~ 是家目录的缩写(/home/用户名),是终端中最常用的快捷路径之一。


二、文件系统结构:Linux 的目录树

2.1 基础概念

Linux 文件系统是一个树形结构,根目录是 /,所有文件和目录都从根开始延伸。与 Windows 不同,Linux 没有盘符(C:、D:),所有存储设备都挂载在目录树中的某个节点上。

2.2 FHS 标准目录一览

Ubuntu 遵循 FHS(Filesystem Hierarchy Standard),这是 Linux 文件系统层次结构标准。以下是 Ubuntu 最核心的目录及其用途:

# 查看根目录下的顶层目录
ls /

输出示例:

bin   dev  home  lib32  libx32  mnt  proc  run   snap  sys  usr
boot  etc  lib   lib64  media   opt  root  sbin  srv   tmp  var

各目录的功能:

目录 用途 类比 Windows
/bin 基本命令(ls、cp、mv 等) C:WindowsSystem32
/boot 内核与引导加载器文件 启动分区
/dev 设备文件(硬盘、键盘、终端等) 设备管理器
/etc 系统配置文件 注册表 + 配置文件
/home 用户家目录 C:Users
/lib 系统库文件 C:WindowsSystem32 DLL
/media 可移动设备挂载点(U盘、光驱) 自动挂载的驱动器
/mnt 临时挂载点(手动挂载)
/opt 第三方软件包 C:Program Files
/proc 虚拟文件系统,进程与内核信息 任务管理器(数据形式)
/root root 用户的家目录
/run 运行时数据(进程 PID 文件等)
/sbin 系统管理命令(管理员用)
/snap Snap 软件包
/srv 服务数据(Web、FTP 等)
/sys 内核与硬件信息(虚拟文件系统) 设备管理器
/tmp 临时文件(重启后清空) C:WindowsTemp
/usr 用户程序与数据(第二级层级) C:Program Files
/var 可变数据(日志、缓存、数据库)

💡 重点记忆/etc(配置)、/var(数据)、/home(用户文件)、/tmp(临时文件)是日常操作最频繁的目录。

2.3 绝对路径 vs 相对路径

理解路径是文件操作的基础:

# 绝对路径:从根目录 / 开始
cd /home/hermes/Documents
cat /etc/apt/sources.list

# 相对路径:从当前目录开始
cd Documents          # 当前目录下的 Documents
cd ../Downloads       # 上级目录下的 Downloads
cd ../../opt          # 上两级目录下的 opt

特殊目录符号

符号 含义 示例
. 当前目录 ./script.sh 执行当前目录的脚本
.. 上级目录 cd .. 返回上级目录
~ 当前用户家目录 cd ~/Documents
- 上一个工作目录 cd - 在两个目录间切换
/ 根目录 cd / 回到根目录

三、核心 Shell 命令实战

3.1 目录导航命令

# pwd — 打印当前工作目录(Print Working Directory)
pwd

# ls — 列出目录内容(List)
ls              # 基本列表
ls -l           # 详细列表(权限、大小、修改时间)
ls -a           # 显示隐藏文件(以 . 开头的文件)
ls -la          # 组合:详细列表 + 隐藏文件
ls -lh          # 人类可读的文件大小(KB、MB)
ls -ltr         # 按修改时间倒序排列(最新在最后)

# cd — 切换目录(Change Directory)
cd /etc         # 切换到 /etc
cd ~            # 回到家目录
cd /            # 回到根目录
cd -            # 回到上一个目录

3.2 查看文件内容

# cat — 显示文件全部内容(Concatenate)
cat /etc/hostname          # 查看主机名
cat /etc/os-release        # 查看 Ubuntu 版本信息

# less — 分页查看(支持上下翻页,推荐)
less /var/log/syslog       # 按 q 退出,按 / 搜索

# head — 查看文件开头(默认前 10 行)
head -n 20 /etc/passwd     # 查看前 20 行

# tail — 查看文件末尾(默认后 10 行)
tail -n 50 /var/log/syslog # 查看最后 50 行
tail -f /var/log/syslog    # 实时跟踪日志(Ctrl+C 退出)

# wc — 统计行数、单词数、字符数
wc -l /etc/passwd          # 统计用户数(一行一个用户)

3.3 文件与目录操作

# mkdir — 创建目录
mkdir my_project                    # 创建单个目录
mkdir -p project/src/lib            # 创建多级目录(-p = parents)

# touch — 创建空文件或更新文件时间戳
touch README.md                     # 创建一个空文件

# cp — 复制文件或目录
cp file.txt backup.txt              # 复制文件
cp -r my_project my_project_backup  # 递归复制目录(-r = recursive)

# mv — 移动或重命名
mv file.txt ~/Documents/            # 移动到 Documents
mv old_name.txt new_name.txt        # 重命名

# rm — 删除文件或目录
rm temp.txt                         # 删除文件
rm -r old_project                   # 递归删除目录
rm -rf junk_dir                     # 强制删除(⚠️ 危险!不可恢复)

⚠️ 警告rm -rf 是 Linux 最危险的命令之一。rm -rf / 会删除整个系统!永远不要在不确认路径的情况下使用。

3.4 文件搜索

# find — 查找文件(最强大)
find /home -name "*.txt"            # 按文件名查找
find /etc -type f -name "*.conf"    # 找配置文件
find / -size +100M                  # 找大于 100MB 的文件
find ~ -mtime -7                    # 最近 7 天修改过的文件

# locate — 基于数据库的快速查找(需先安装)
sudo apt update && sudo apt install mlocate -y
sudo updatedb                       # 更新数据库
locate .bashrc                      # 快速查找文件

3.5 文本搜索与处理

# grep — 文本搜索之王
grep "root" /etc/passwd             # 在文件中搜索包含 "root" 的行
grep -i "error" /var/log/syslog     # 忽略大小写搜索
grep -r "TODO" ~/project/           # 递归搜索目录中所有文件
grep -v "^#" /etc/ssh/sshd_config   # 排除注释行(显示有效配置)

# 管道(|)— 将前一个命令的输出作为后一个命令的输入
ls -la /usr/bin | grep "python"     # 列出所有包含 python 的可执行文件
cat /var/log/syslog | grep "error" | head -10  # 多级管道

3.6 获取帮助

# man — 命令手册(最权威的文档)
man ls                              # 查看 ls 的完整手册(按 q 退出)
man bash                            # Bash 的完整手册

# 常用 man 操作:
#   /keyword — 搜索关键词
#   n — 下一个匹配
#   N — 上一个匹配
#   q — 退出

# --help — 快速帮助
ls --help                           # 显示 ls 的简要帮助
grep --help | head -20              # 查看 grep 帮助的前 20 行

# whatis — 命令简介
whatis ls                           # 一行说明

四、Shell 实用技巧

4.1 Tab 自动补全

Tab 键是终端中最节省时间的技巧:

# 输入前几个字符后按 Tab
cd /et[Tab]        # 自动补全为 /etc/
ls /etc/apt/sour[Tab]  # 补全为 /etc/apt/sources.list

# 按两次 Tab 显示所有匹配
cd /etc/[Tab][Tab]  # 列出 /etc 下所有目录

4.2 命令历史

# history — 查看命令历史
history             # 显示所有历史命令
history | grep apt  # 搜索历史中的 apt 命令

# 快捷键
#  ↑/↓ — 浏览历史命令
#  Ctrl+R — 搜索历史(输入关键词后按 Ctrl+R 继续搜索)
#  !! — 执行上一条命令
#  !apt — 执行最近一条以 apt 开头的命令

4.3 快捷键

快捷键 功能
Ctrl + C 终止当前运行的命令
Ctrl + D 退出终端或 EOF
Ctrl + L 清屏(等价于 clear
Ctrl + A 光标移到行首
Ctrl + E 光标移到行尾
Ctrl + U 删除光标前所有内容
Ctrl + K 删除光标后所有内容
Ctrl + W 删除光标前一个单词
Ctrl + R 搜索命令历史

4.4 通配符

# * — 匹配任意字符
ls *.txt            # 所有 .txt 文件
rm backup_*         # 删除所有以 backup_ 开头的文件

# ? — 匹配单个字符
ls file?.txt        # 匹配 file1.txt、fileA.txt(不匹配 file10.txt)

# [...] — 匹配字符集合
ls file[0-9].txt    # 匹配 file0.txt 到 file9.txt

五、常见问题

Q1:提示「command not found」怎么办?

通常是因为命令未安装或路径不对:

# 检查命令是否安装
which python3          # 显示命令的路径(如果安装了)
apt search python3     # 搜索软件包

# 如果未安装
sudo apt update && sudo apt install python3 -y

Q2:ls 命令显示的文件颜色代表什么?

在默认配置下:
蓝色:目录
绿色:可执行文件
红色:压缩包或归档文件
青色:符号链接
白色:普通文件

Q3:不小心删除了重要文件怎么办?

rm 删除的文件不会进入回收站,直接不可恢复。建议:
1. 用 rm -i 让删除前确认(alias 可设为默认)
2. 安装 trash-cli 代替 rm:

sudo apt install trash-cli -y
trash-put file.txt     # 放入回收站
trash-list             # 查看回收站
trash-restore          # 恢复文件

Q4:路径太长,输入很麻烦怎么办?

使用 Tab 自动补全和通配符,或设置符号链接:

# 创建快捷方式
ln -s /very/long/path/to/project ~/project
cd ~/project           # 等价于 cd /very/long/path/to/project

总结

今天我们学习了 Ubuntu 终端的核心基础知识:

  1. Shell 基础:终端与 Bash 的关系,命令提示符的含义
  2. 文件系统结构:FHS 标准目录树,每个目录的用途
  3. 路径导航:绝对路径 vs 相对路径,特殊目录符号
  4. 核心命令pwdlscdcatgrepfind
  5. 实用技巧:Tab 补全、命令历史、快捷键、通配符

今日作业:打开终端,用 ls -la 查看你的家目录,用 tree(需安装:sudo apt install tree -y)查看 /etc 的目录结构,再用 find /home -name "*.txt" 搜索你所有的文本文件。

💡 记住:终端操作的熟练度来自于反复练习。从今天开始,尽量用终端完成日常操作,而不是图形界面——这是成为 Ubuntu 高手的必经之路。


下期预告

第 5 天:用户与权限管理——useradd、usermod、sudo、chown、chmod 详解

Ubuntu 的多用户权限模型是系统安全的第一道防线。明天我们将深入学习如何管理用户、用户组,以及 Linux 文件权限系统(rwx 三剑客),让你彻底掌握 Ubuntu 的权限控制。


📖 系列目录

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容