CSDN博客-第二篇-Linux基础Day2
Linux 基础 Day2:终端快捷键 · 文件系统 · 路径 · 文件类型 · 目录操作
系列:粤嵌嵌入式培训学习笔记 (第 2 篇)
上一篇:从零搭建 Ubuntu 开发环境(VMware + 工具链)
下一篇:文件操作(touch / cp / mv / rm)
环境:Ubuntu 22.04 · bash | 2026年7月22日
① 概览
正式进入 Linux 系统实际操作。所有操作在终端中进行——后续 C 代码的编写、编译、调试全在这里。
| 模块 | 一句话 |
|---|---|
| 终端常用快捷键 | 9 组,重点 5 组 |
| 提示符解析 | zhaolin@ubuntu:~$六段拆解 |
| Linux 文件系统 | “万物皆文件” + 倒树状目录 + 核心目录嵌入式用途表 |
| 路径概念 ⭐ | 绝对 vs 相对,./../../../~ |
| Linux 文件类型 | 7 种,ls -l首字符识别 |
| 目录操作 ⭐ | pwdlscdmkdirrmdir+ 通配符* |
② 终端常用快捷键
⚠️ 一定要在英文输入法下操作,通过 Shift 切换中英文。
| 快捷键 | 功能 | 嵌入式使用场景 |
|---|---|---|
Ctrl + Shift + + | 放大终端字体 | 查看长指令、编译日志时清晰显示 |
Ctrl + - | 缩小终端字体 | 终端内容过多时精简显示 |
Ctrl + L | 清理终端屏幕 | 实操作后清空冗余输出 |
Ctrl + S | 锁定终端内容 | 调试驱动、查看关键日志时防止误操作 |
Ctrl + Q | 解除终端锁定 | 锁定后恢复操作 |
Ctrl + C | 终止当前进程 | 终止卡死的调试程序、无限循环 |
Ctrl + Alt + T | 打开新终端 | 多任务:编译 + 调试 + 日志查看同时进行 |
Ctrl + D | 退出终端会话 | 完成操作后安全退出 |
Tab | 命令/文件名补全 | 输入cd /ho+ Tab →cd /home |
# 演示:Tab 补全zhaolin@ubuntu:~$cd/ho# 此时按 Tabzhaolin@ubuntu:~$cd/home/# 自动补全!⚠️Ctrl+S 踩坑预警:按下后终端像死了一样,新手第一反应关窗口。其实只是输出冻结,
Ctrl+Q就恢复。这是历史遗留的 XON/XOFF 硬件流控设计。
③ 终端提示符解析
zhaolin@ubuntu:~$| 部分 | 含义 |
|---|---|
zhaolin | 当前登录用户名 |
@ | 分隔符,无实际意义 |
ubuntu | 主机名(系统安装时配置) |
~ | 当前工作目录(家目录 =/home/zhaolin) |
$ | 权限标识:$= 普通用户,#= root 超级用户 |
用户权限(嵌入式开发重点)
| 用户类型 | 权限范围 | 嵌入式使用场景 |
|---|---|---|
| 普通用户($) | 仅操作个人目录、普通指令 | 日常开发、C/C++ 编译优先使用,避免误改系统 |
| 超级用户(#) | 最高权限,可执行任何操作 | 驱动开发、系统配置、安装依赖,用完立即退出 |
④ Linux 文件系统
Linux 遵循"万物皆文件"设计哲学,采用层级式倒树状目录结构。
# 看看根目录下有什么zhaolin@ubuntu:~$ls/ bin cdrom etc lib lib64 lost+found mnt proc run snap swapfile tmp var boot dev home lib32 libx32 media opt root sbin srv sys usr核心目录(嵌入式视角)
| 目录 | 功能 | 嵌入式核心用途 | 重要度 |
|---|---|---|---|
/ | 根目录,所有绝对路径的起点 | 一切文件和目录的顶层入口 | ⭐⭐⭐⭐⭐ |
/dev | 硬件设备文件 | 外设驱动开发、串口调试、GPIO 访问 | ⭐⭐⭐⭐⭐ |
/etc | 系统/应用配置文件 | 环境变量配置、驱动开机加载配置 | ⭐⭐⭐⭐⭐ |
/home | 普通用户家目录 | 代码存放、项目管理、编译输出 | ⭐⭐⭐⭐⭐ |
/bin | 普通用户指令(ls, cd, cp, cat) | 终端基础操作 | ⭐⭐⭐⭐ |
/usr | 软件安装路径(bin, lib, include) | 交叉编译器、开发工具安装位置 | ⭐⭐⭐⭐ |
/mnt | 外设临时挂载目录 | U盘、共享文件夹、NFS 网络目录 | ⭐⭐⭐⭐ |
/boot | 引导程序(内核、grub) | 系统移植、内核裁剪 | ⭐⭐⭐ |
/lib | 系统/应用依赖库 | C/C++ 程序链接驱动库 | ⭐⭐⭐ |
/proc | 运行时虚拟文件系统 | 性能调试、进程监控 | ⭐⭐⭐ |
/var | 日志、缓存、备份 | 运行日志存储 | ⭐⭐⭐ |
/sbin | 超级用户特权指令(fdisk, mount, insmod) | 驱动安装、磁盘分区 | ⭐⭐⭐ |
⑤ 路径概念 ⭐
绝对路径 vs 相对路径
| 路径类型 | 核心定义 | 举例 |
|---|---|---|
| 绝对路径 | 以根目录/为起点的完整路径,全局唯一 | /mnt/hgfs/share/demo01.c |
| 相对路径 | 以当前工作目录./为起点,随工作目录变化 | ./demo01.c |
核心操作符
| 操作符 | 含义 | 示例 |
|---|---|---|
./ | 当前工作目录 | ./uart_app(运行当前目录下的串口应用) |
../ | 上一级目录 | cd ../app(切换到同级 app 目录) |
../../ | 上两级目录 | cd ../../(从/home/zhaolin/code到/home) |
~ | 当前用户家目录 | cd ~/code(切到家目录下的 code 文件夹) |
实操演示
# 假设目录结构:# /home/zhaolin/practice# ├── day01/# └── day02/# 绝对路径:从 / 开始写完整→不管你在哪都能找到zhaolin@ubuntu:~$cd/home/zhaolin/practice/day01 zhaolin@ubuntu:~/practice/day01$pwd/home/zhaolin/practice/day01# 相对路径:从当前位置走→换个目录就不对了zhaolin@ubuntu:~/practice/day01$cd../day02 zhaolin@ubuntu:~/practice/day02$pwd/home/zhaolin/practice/day02# ./ 表示当前目录,通常可以省略zhaolin@ubuntu:~/practice/day02$ls./# (列出当前目录内容,跟直接 ls 一样)⑥ Linux 文件类型
Linux不靠后缀名判断文件类型(.txt只是给人看的),靠ls -l第一列首字符:
| 标识 | 文件类型 | 嵌入式核心用途 |
|---|---|---|
d | 目录文件 | 存放项目代码、驱动文件、工程子目录 |
- | 普通文件 | C/C++ 源码(.c/.cpp)、可执行文件、配置文件 |
l | 符号链接文件 | 驱动库快捷方式、头文件软链接 |
c | 字符设备文件 | 串口、终端、GPIO、显示屏(按字符流交互) |
b | 块设备文件 | 硬盘、U盘、Flash、EMMC(按数据块交互) |
s | 套接字文件 | 进程间网络通信,嵌入式网络编程高频 |
p | 管道文件 | 多进程间数据传输(传感器数据、控制指令) |
# 在根目录找 d、l、- 开头的内容zhaolin@ubuntu:~$ls-l/ drwxr-xr-x2root root40967月2022:00 bin# d = 目录drwxr-xr-x4root root40967月2022:00 boot drwxr-xr-x20root root42607月2214:30 dev drwxr-xr-x140root root122887月2214:30 etc drwxr-xr-x3root root40967月2022:00 home lrwxrwxrwx1root root77月2022:00 lib ->usr/lib# l = 符号链接drwxr-xr-x2root root40967月2022:00 mnt# /dev 下全是设备文件,c = 字符设备,b = 块设备zhaolin@ubuntu:~$ls-l/dev|head-10crw-r--r--1root root10,2357月2214:30 autofs# c = 字符设备crw-------1root root10,2347月2214:30 btrfs-control brw-rw----1root disk8,07月2214:30 sda# b = 块设备(硬盘)brw-rw----1root disk8,17月2214:30 sda1# b = 块设备(分区)crw-rw----1roottty4,07月2214:30 tty0# c = 字符设备(终端)⑦ 目录操作 ⭐ 重点
命令格式
指令[选项][操作的文件或者目录]# [] 表示可选参数7.1 pwd — 查看当前目录
zhaolin@ubuntu:/mnt/hgfs/share$pwd/mnt/hgfs/share zhaolin@ubuntu:/mnt/hgfs/share$cd~ zhaolin@ubuntu:~$pwd/home/zhaolin7.2 ls — 列出目录内容
基础用法:
zhaolin@ubuntu:~$ls# 当前目录公共的 模板 视频 图片 文档 下载 音乐 桌面 demo01.c zhaolin@ubuntu:~$ls/# 指定路径bin cdrom etc lib lib64 lost+found mnt proc run snap swapfile tmp var boot dev home lib32 libx32 media opt root sbin srv sys usr zhaolin@ubuntu:~$ls./# 等价于 ls(./ 可省略)-a:显示所有文件(含隐藏文件)
zhaolin@ubuntu:~$ls-a....bash_history .bashrc .profile .vimrc 公共的 模板 视频 图片 文档 下载 音乐 桌面 demo01.c snap .cache💡 Linux 隐藏文件/目录以
.开头,如.bashrc、..。
-l:长格式显示详细信息
zhaolin@ubuntu:~$ls-ldrwxr-xr-x2zhaolin zhaolin409610月122025公共的 drwxr-xr-x2zhaolin zhaolin409610月122025模板 drwxr-xr-x2zhaolin zhaolin409610月122025视频 -rw-rw-r--1zhaolin zhaolin3587月22 09:14 demo01.c drwx------3zhaolin zhaolin40967月2114:46 snapls -l输出逐列解读:
d rwxr-xr-x 2 zhaolin zhaolin 4096 10月12 13:27 桌面 | | | | | | | | 文件类型 权限 硬链接数 所有者 所属组 文件大小 修改时间 文件名-r:反向排序
zhaolin@ubuntu:~$ls-ldrwxr-xr-x2zhaolin zhaolin409610月122025公共的 drwxr-xr-x2zhaolin zhaolin409610月122025模板 drwxr-xr-x2zhaolin zhaolin409610月122025视频 drwx------3zhaolin zhaolin40967月2114:46 snap# 文件名 A→Zzhaolin@ubuntu:~$ls-lrdrwx------3zhaolin zhaolin40967月2114:46 snap drwxr-xr-x2zhaolin zhaolin409610月122025视频 drwxr-xr-x2zhaolin zhaolin409610月122025模板 drwxr-xr-x2zhaolin zhaolin409610月122025公共的# 文件名 Z→A-t:按修改时间排序
zhaolin@ubuntu:~$ls-lt-rw-rw-r--1zhaolin zhaolin3587月2214:24 demo02.c# 最新-rw-rw-r--1zhaolin zhaolin3587月22 09:14 demo01.c drwxr-xr-x3zhaolin zhaolin40967月2114:46 snap drwxr-xr-x2zhaolin zhaolin409610月122025公共的# 最旧 → 降序zhaolin@ubuntu:~$ls-ltrdrwxr-xr-x2zhaolin zhaolin409610月122025公共的# 最旧drwxr-xr-x3zhaolin zhaolin40967月2114:46 snap -rw-rw-r--1zhaolin zhaolin3587月22 09:14 demo01.c -rw-rw-r--1zhaolin zhaolin3587月2214:24 demo02.c# 最新 → 升序组合:选项可以合并写
zhaolin@ubuntu:~$ls-l-t-r# 逐个写zhaolin@ubuntu:~$ls-ltr# 合并写,效果一样指定路径:
zhaolin@ubuntu:~$ls/mnt/hgfs/share# 看共享文件夹zhaolin@ubuntu:~$ls/home# 看所有用户家目录zhaolin7.3 cd — 切换目录
| 命令 | 功能 | 示例 |
|---|---|---|
cd ~ | 切换到当前用户家目录 | cd ~→/home/zhaolin |
cd - | 返回上一次操作的目录 | 在两个目录间横跳 |
cd / | 切换到根目录 | cd /→/ |
cd .. | 切换到上一级目录 | cd ..→ 父目录 |
cd ../.. | 切换到上两级目录 | cd ../..→ 祖父目录 |
# 演示zhaolin@ubuntu:~$cd/home/zhaolin# 绝对路径zhaolin@ubuntu:~$cd/home&&cdzhaolin# 相对路径(等价于 cd ./zhaolin)zhaolin@ubuntu:~$cd/mnt/hgfs# 去共享文件夹zhaolin@ubuntu:/mnt/hgfs$cd-# 回上一个目录/home/zhaolin zhaolin@ubuntu:~$cd-# 再按一次,又回去了/mnt/hgfs7.4 mkdir — 创建目录
创建单个目录:
zhaolin@ubuntu:~$mkdir20260722# 等于 mkdir ./20260722zhaolin@ubuntu:~$ls20260722公共的 模板 视频 图片 文档 下载 音乐 桌面批量创建(空格分隔):
zhaolin@ubuntu:~$mkdir2026072320260724zhaolin@ubuntu:~$ls202607222026072320260724公共的 模板 视频 图片 文档 下载 音乐 桌面-p:创建嵌套目录(中间不存在的自动补)
zhaolin@ubuntu:~$mkdir-pa1/b1/c1# 单个嵌套zhaolin@ubuntu:~$mkdir-pa2/b2/c2 a3/b3/c3# 批量嵌套zhaolin@ubuntu:~$mkdir-pa4/b4/c4 aDir# 嵌套 + 非嵌套混建# 验证嵌套结果zhaolin@ubuntu:~$ls-Ra1 a1: b1 a1/b1: c1 a1/b1/c1: (空目录,无内容)⚠️ 不加
-p,父目录不存在直接报错:zhaolin@ubuntu:~$mkdirx/y/z mkdir: 无法创建目录"x/y/z":没有那个文件或目录
7.5 rmdir — 删除空目录
限制:只能删空目录!目录非空就报错。
zhaolin@ubuntu:~$mkdirCC AA BB zhaolin@ubuntu:~$rmdirCC# 删单个空目录 → 成功,无提示zhaolin@ubuntu:~$rmdirAA BB# 批量删空目录# 删非空目录会报错zhaolin@ubuntu:~$mkdir-pproject/src zhaolin@ubuntu:~$rmdirproject rmdir: 删除'project'失败: 目录非空# 因为里面还有 src/7.6 通配符*
*匹配 0 到多个任意字符,rmdir的高频搭档:
zhaolin@ubuntu:~$mkdirtestDir testDir1 testFile aDir bDir zhaolin@ubuntu:~$rmdirtest*# 删所有 test 开头的空目录# testDir、testDir1、testFile 全部删除zhaolin@ubuntu:~$rmdir*Dir# 删所有 Dir 结尾的空目录# aDir、bDir 全部删除zhaolin@ubuntu:~$rmdir*# 删当前目录下所有空目录# 非空目录会跳过并报错,不影响💡 通配符也可用在其他指令中,不限于
rmdir。
⑧ 踩坑记录 ⭐
坑1:Ctrl+S按完终端没反应
- 现象:终端按键无反应,像死机
- 排查:
Ctrl+C没用 → 不是程序卡住 → 想起 Ctrl+S - 根因:
Ctrl+S是 XON/XOFF 硬件流控遗留下的"暂停输出"信号 - 解决:按
Ctrl+Q,不要关终端
坑2:mkdir a/b/c报错
- 现象:
mkdir: 无法创建目录 "a/b/c": 没有那个文件或目录 - 根因:中间目录 a、b 不存在,
mkdir默认不自动创建父目录 - 解决:
mkdir -p a/b/c
坑3:rmdir project报"目录非空"
- 现象:
rmdir: 删除 'project' 失败: 目录非空 - 根因:
rmdir只能删空目录 - 解决:非空目录用
rm -r(下篇),或先手动清空所有子目录
⑨ 小结
今天完成:终端 9 组快捷键 → 提示符拆解 → “万物皆文件” + 12 个核心目录 → 绝对/相对路径 → 7 种文件类型 →pwdlscdmkdirrmdir+ 通配符。
下一篇:文件操作(touchcpmvrm)。
本文首发于 CSDN,转载请注明出处。