Linux基本命令使用

Tutorial: 卓越工程师 Category: 嵌入式 Published: 2026-10-23 11:05:29 Views: 1 Likes: 0 Comments: 0

323.2.1Linux基本命令使用

一、Ubuntu系统安装完成

本节没有编写或展示 C 源码,因此标题下不添加 C 代码块。视频使用的是 VMware Workstation 中的 Ubuntu 20.04 桌面系统,用户名为 wfeng,主要讲解首次进入桌面后的设置,以及最基础的文件、目录命令。

安装结束并第一次登录后,视频依次出现了以下界面:

  1. Online Accounts:这里用于绑定 Ubuntu Single Sign-On、Google、Nextcloud、Microsoft 等在线账户。视频点击右上角 Skip。这只是跳过第三方在线账户绑定,并不是“跳过 Ubuntu 登录账号”;本地用户 wfeng 已经在安装阶段创建。
  2. Livepatch:用于配置 Canonical Livepatch。视频没有点击 Set Up Livepatch...,而是直接点击 Next 继续。转录中的“Nexus”是 Next 的识别错误。
  3. Ubuntu 22.04.3 LTS Upgrade Available:画面提示可从当前系统升级到 Ubuntu 22.04.3 LTS,视频选择 Don't Upgrade,随后确认。

课程要求暂不升级,是为了让编译器、软件包、目录和后续操作尽量与授课环境一致,而不是因为 Ubuntu 22.04“没有用”。系统发行版升级会改变内核、工具链和库版本,正确做法是先创建虚拟机快照、确认课程软件兼容性,再安排升级窗口。

还要区分“复现旧课程”和“长期联网使用”两种需求:Ubuntu 20.04 LTS 的标准安全维护已于 2025 年 5 月 31 日结束。若在当前环境中继续联网使用,应选择受支持的 Ubuntu LTS,或为 20.04 启用适用的 Ubuntu Pro/ESM;官方列出的 20.04 扩展安全维护期到 2030 年。不能把视频中的“Don't Upgrade”理解成永远不更新、不安装安全补丁。

安装后的基础检查包括:

  • 网络:视频打开 Firefox 并访问百度,证明当时的 DNS、HTTPS 和浏览器访问链路可用。桥接模式是否可用取决于主机网卡、局域网 DHCP、Wi-Fi 接入点、VPN 和防火墙等条件,并非选择桥接就一定联网;出现异常时按第 321 节分层检查。
  • 语言:保留英文界面有利于原样搜索英文报错,但这只是学习建议,不是技术要求。无论界面语言如何,都应复制完整错误信息、命令和上下文,不要只搜索自己翻译后的关键词。
  • 图形界面:Ubuntu 的 Files 文件管理器也支持右键、新建文件夹、剪切、复制、重命名和移入回收站等操作。视频中 Files 位于左侧 Dock 的第二个图标,但 Dock 顺序可以自定义,不能把图标位置当成固定规则。
  • 命令行:图形界面适合浏览,终端更适合重复操作、编译、部署和远程管理;后续嵌入式开发会频繁使用终端,因此本节重点是建立路径意识,而不是死记命令拼写。

二、思维导图

视频中的思维导图是课程提纲,不是需要在 Ubuntu 中执行的软件操作。当前画面先列出“界面”和“命令行”两种操作方式,再展开终端快捷键以及文件和目录操作:

Linux 基本操作
├─ 图形界面:Files、Firefox、右键菜单等
└─ 命令行
   ├─ 打开终端与字体缩放
   └─ 文件和目录操作
      ├─ ls / lsusb / lsmod
      ├─ cd / pwd
      └─ mkdir / touch / rm / cp / mv / cat

学习这些命令时,应始终回答三个问题:当前在哪里、操作对象是谁、执行后对象去了哪里。可分别用 pwd、ls 和执行后的再次检查来验证,不要仅凭提示符或记忆猜测。

三、命令行操作

3.1 命令示例

视频展示了三种终端操作:

  • 在桌面空白处右键,选择 Open in Terminal。这样打开的终端以桌面目录为当前工作目录,视频提示符显示为 ~/Desktop。
  • 按 Ctrl+Alt+T 打开新的终端窗口。这是 Ubuntu 桌面环境中常见且可配置的快捷键,不是所有 Linux 系统都必然相同。
  • 在已聚焦的 GNOME Terminal 窗口中按 Ctrl+Shift+T,新建一个终端标签页,并非一定启动一个完全独立的新终端窗口。再次按下可以继续增加标签页。

视频中的提示符形如:

wfeng@ubuntu:~/Desktop$

各部分含义如下:

部分含义
wfeng当前登录用户名
ubuntu主机名
~当前用户家目录;这里展开后是 /home/wfeng
~/Desktop家目录下的 Desktop 子目录
$普通用户 Shell 的常见提示符;它不是命令的一部分,不要照抄

在提示符后输入 ls 并按 Enter,会列出当前目录中默认可见的条目。命令通常区分大小写,命令名、选项和参数之间需要空格。

终端还支持用 ↑、↓ 浏览本次 Shell 会话的命令历史。视频利用方向键找回了之前输入的 touch 命令。调用历史命令后,应在按 Enter 前重新检查参数,尤其是 rm、mv 等会改变文件的命令。

3.2 字体缩放

这一小节调整的是 GNOME Terminal 中的文字显示比例,不是思维导图缩放,也不会修改文件内容或系统显示分辨率。

操作默认快捷键键盘上的实际按法
放大终端文字Ctrl++许多键盘的 + 与 = 共用按键,因此通常按 Ctrl+Shift+=
缩小终端文字Ctrl+-按 Ctrl 加减号键
恢复默认比例Ctrl+0视频未演示,但适合在多次缩放后复位

视频思维导图中的 Ctrl+Shift+(+=) 表达的是按出加号所需的物理按键组合。快捷键可能被用户修改,可在 GNOME Terminal 的 Preferences → Shortcuts 中查看实际绑定。

3.3 基本命令

以下命令都在终端中执行。路径和文件名区分大小写,例如视频中的 Documents、Music、Videos 首字母均为大写;documents 与 Documents 是两个不同名称。

3.3.1 ls命令

ls 用于列出目录内容。不给路径参数时,它查看当前目录:

# 列出当前目录中默认可见的条目。
ls

# 使用长格式显示详细信息。
ls -l

# 显示所有条目,包括以点开头的隐藏条目以及 . 和 ..。
ls -a

# 常用组合:既显示隐藏条目,又使用长格式。
ls -la

视频先从 ~/Desktop 执行 ls,桌面目录没有普通文件,所以没有输出;随后执行 cd .. 回到家目录,ls 才列出 Desktop、Documents、Downloads、Music、Pictures、Public、Templates 和 Videos。没有输出不等于命令失败,也可能只是没有符合显示条件的条目。

ls -l 每行常见字段依次为:

文件类型与权限  硬链接数  所有者  所属组  字节数  修改时间  名称
drwxr-xr-x       2         wfeng   wfeng   4096    Apr 23 09:45  Documents
  • 第一个字符 d 表示目录,普通文件通常是 -;后面的九位才是所有者、组和其他用户的读/写/执行权限。
  • 原笔记把整段都称为“执行权限”不准确,其中还包含文件类型及读、写权限。
  • ls -a 中的 . 表示当前目录,.. 表示父目录;其他以 . 开头的名称通常是配置文件或隐藏目录。

视频又演示了两个以 ls 开头、但不是 ls 选项的独立程序:

# 列出当前内核已经加载的模块。
lsmod

# 列出客户机操作系统识别到的 USB 总线和 USB 设备。
lsusb
  • lsmod 是对 /proc/modules 的格式化展示,常见列为模块名、大小、引用次数以及使用者。它显示的是当前已加载的可加载内核模块,不是“系统中的全部驱动”;编译进内核的驱动不会因为运行 lsmod 就全部出现。
  • lsusb 显示总线号、设备号、厂商 ID、产品 ID 和可识别的名称。虚拟机中的画面出现 Linux Foundation Root Hub、VMware Virtual USB Hub/Mouse 等虚拟设备,并不等于 Windows 主机上的每个物理 USB 设备都已经直通给 Ubuntu。
3.3.2 cd命令

cd 是 Shell 内建命令,用于更改当前工作目录。基本语法是 cd 路径,不是“进入文件夹的命令行操作”这么简单;路径既可以是绝对路径,也可以相对当前位置书写。

视频实际演示的核心用法是:

# 从家目录进入 Documents;名称区分大小写。
cd Documents/

# 返回当前目录的父目录。
cd ..

# 进入文件系统根目录。
cd /

# 回到当前用户的家目录 /home/wfeng。
cd ~

# 使用绝对路径直接进入 Documents。
cd /home/wfeng/Documents/

# 先回到 Documents 的父目录,再进入同级的 Music。
cd ../Music/

几个路径符号必须分清:

写法含义以视频用户为例
/整个 Linux 文件系统的根目录/
~当前用户的家目录,由 Shell 展开/home/wfeng
.当前目录随当前工作目录变化
..当前目录的父目录在 /home/wfeng/Documents 中表示 /home/wfeng
/home/wfeng/Documents从 / 开始的绝对路径无论当前在哪里都指向同一目录
Documents相对路径从当前目录下寻找 Documents

/ 叫根目录,/home/wfeng 才是用户 wfeng 的家目录,两者不能都简称“根文件”。视频从 /home/wfeng 连续执行两次 cd ..,第一次到 /home,第二次才到 /。

输入名称前几个字符后按 Tab 可以自动补全。只有一个匹配项时通常补全整个名称;存在多个匹配项时可能只补到公共前缀,再按一次 Tab 可列出候选。自动补全能减少拼写错误,但仍需确认选中的路径是否正确。

3.3.3 pwd命令

pwd 是 print working directory 的缩写,用于输出当前工作目录的完整路径。它不会“分析路径”,只报告 Shell 当前所在位置。

视频用以下路径变化说明 cd 与 pwd 的配合:

# 从 /home/wfeng 返回 /home,并显示结果。
cd ..
pwd

# 再返回根目录 /,并显示结果。
cd ..
pwd

# 从任意位置使用绝对路径进入用户目录。
cd /home/wfeng/
pwd

# 直接进入 Documents 并确认完整路径。
cd /home/wfeng/Documents/
pwd

# 从 Documents 返回父目录,再进入 Music。
cd ../Music/
pwd

对应输出依次可出现 /home、/、/home/wfeng、/home/wfeng/Documents 和 /home/wfeng/Music。原笔记中的 dockerment 是对 Documents 的错误识别;真实用户名也不是通用占位符 username,而是画面中的 wfeng。

在执行复制、移动、删除和编译前,先运行 pwd 与 ls 是非常实用的安全习惯。命令成功时往往没有额外提示,必须通过当前路径和执行后状态确认结果。

3.3.4 mkdir命令

mkdir 用于创建目录。视频从家目录创建 test,再进入其中验证:

# 在当前目录创建名为 test 的目录。
mkdir test

# 查看 test 是否出现。
ls

# 进入新目录并确认当前位置。
cd test/
pwd

视频中的最终路径为 /home/wfeng/test。若目标目录已存在,普通 mkdir test 会报错,而不会清空或覆盖旧目录。需要一次创建多层目录时可以使用 mkdir -p path/to/dir,但本节没有演示该选项。

3.3.5 touch命令

视频在 ~/test 中创建了三个空文件:

# 文件不存在时,创建空的 a.c。
touch a.c

# 再创建空的 b.c 和 c.txt。
touch b.c
touch c.txt

# 验证三个名称均已出现。
ls

touch 更准确的功能是更新文件的访问时间和修改时间;指定文件不存在时,默认才会创建空文件。因此它不等同于只能“新建文件”。再次对已有文件执行 touch,通常只更新时间戳,不会清空已有内容。

文件扩展名也不会自动赋予内容或格式:touch a.c 只得到名为 a.c 的零字节文件,并不会生成 C 程序;touch c.txt 也不会写入任何文本。本节没有展示 C 源码,不能根据 .c 后缀凭空补写代码。

3.3.6 rm命令

rm 用于移除文件。视频先删除指定文件,再通过通配符批量删除:

# 只删除当前目录中的 c.txt。
rm c.txt

# 星号由 Shell 展开;这里删除当前目录中所有名称以 .c 结尾的非隐藏条目。
rm *.c

# 查看删除后的目录内容。
ls

画面中的 rm *.c 实际匹配了 a.c 和 b.c。它不是 rm .c,星号不能省略。通配符由 Bash 在启动 rm 前展开成匹配到的多个路径;默认情况下,*.c 不匹配以点开头的隐藏文件,也不递归进入子目录。

必须牢记以下安全边界:

  • 终端中的 rm 默认不会把文件移入桌面回收站,删除通常不能靠“撤销”恢复。
  • rm 文件名 默认不能删除目录。空目录可用 rmdir 目录名;递归删除目录需要 rm -r,风险明显更高,本节没有演示。
  • 执行通配符删除前,先用同一模式预览;初学阶段可增加交互确认:
# 先查看 *.c 实际会匹配哪些名称;-- 表示后续内容不再按选项解析。
ls -- *.c

# 逐项询问是否删除,仍须认真核对当前路径。
rm -i -- *.c

不要把不理解的 sudo rm、rm -r 或 rm -rf 命令直接粘贴执行。先用 pwd 确认位置、用 ls 确认对象,并保留重要文件备份。

3.3.7 cp命令

cp 用于复制文件或目录,基本形式为 cp 源 目标。视频先重新创建 c.txt,然后从 /home/wfeng/test 执行:

# 将当前目录的 c.txt 复制到父目录,并保留文件名。
cp c.txt ../

# 源文件仍应留在 test 中。
ls

# 回到父目录 /home/wfeng,再确认复制品出现。
cd ..
ls

正确命令是 cp c.txt ../,三个部分之间都有空格;原笔记中的 cp c.txt../ 会把参数黏在一起,含义错误。这里的 ../ 指当前 test 目录的父目录 /home/wfeng,所以执行后有两个彼此独立的 c.txt:一个在 test 中,一个在家目录中。

若目标目录中已经存在同名文件,普通 cp 可能直接覆盖。重要文件可先使用 cp -i 源 目标 请求覆盖确认。复制目录需要递归选项,例如 cp -r 源目录 目标目录;本节只演示了单个普通文件。

3.3.8 mv命令

mv 用于移动或重命名文件/目录。视频在家目录中执行:

# 把家目录中的 c.txt 移入已经存在的 Videos 目录。
mv c.txt Videos/

# 进入 Videos 并确认文件已经到达。
cd Videos/
ls

原笔记写成“先进入目标目录再执行移动”与画面不符。执行 mv 时视频仍位于 /home/wfeng,目标参数 Videos/ 是相对当前目录的路径。成功后,家目录中的原文件名消失,只在 /home/wfeng/Videos/c.txt 保留该文件。

如果第二个参数是不存在的新名称,mv 也可完成重命名,例如 mv old.txt new.txt。目标已存在时可能发生覆盖,重要文件可使用 mv -i 请求确认。cp 会保留源对象,而同一文件系统内的 mv 通常只是改变名称或目录位置,这是二者最直观的区别。

3.3.9 cat命令

cat 的核心用途是把一个或多个文件内容连接后写到标准输出,常被用来快速查看较短的文本文件。视频最终在 ~/Videos 中执行:

# 将 c.txt 的内容输出到终端。
cat c.txt

终端没有显示正文,随后直接回到提示符。这不是 cat 失效,而是因为 c.txt 由 touch 创建后从未写入内容,是零字节空文件。原转录把 cat c.txt 连续识别成“C.TXT”,必须把命令 cat 与参数 c.txt 分开理解。

只输入 cat 而不给文件名时,程序会从标准输入等待内容,按 Ctrl+D 才表示输入结束;因此初学者不应把“光标不返回”误认为死机。对于很长的文本,更适合用 less 文件名 分页查看;二进制文件也不适合直接 cat 到终端。

四、把本节命令串成完整流程

视频后半段实际形成了以下状态变化:

/home/wfeng
├─ test/                         ← mkdir test
│  ├─ a.c                       ← touch a.c
│  ├─ b.c                       ← touch b.c
│  └─ c.txt                     ← touch c.txt
│
├─ c.txt                         ← cp c.txt ../ 后得到副本
└─ Videos/
   └─ c.txt                      ← mv c.txt Videos/ 后,家目录副本移动到这里

随后 rm c.txt 删除 test 中第一次创建的文本文件,rm *.c 删除 test 中的两个 C 后缀空文件;视频又在 test 中重新 touch c.txt,因此课程结束时可能同时存在:

  • /home/wfeng/test/c.txt:复制操作保留下来的源文件;
  • /home/wfeng/Videos/c.txt:先复制到家目录、再移动到 Videos 的文件。

这条链路说明:

命令是否保留源对象视频中的结果
cp c.txt ../保留test/c.txt 与家目录中的 c.txt 同时存在
mv c.txt Videos/不在原位置保留家目录副本移动到 Videos/c.txt
rm *.c不保留,也不进回收站test 中的 a.c、b.c 被删除
cat c.txt不修改文件空文件没有正文输出

五、本节关键纠正与练习原则

原笔记或容易误解的说法精校后的结论
Skip 是跳过登录账号它跳过 Online Accounts 绑定;本地登录用户早已创建
Ubuntu 22.04 没用,必须永远不升级视频暂不升级是为保持课程环境一致;长期联网系统仍需受支持版本或 ESM
桥接模式大概率一定能联网桥接仍受主机网卡、DHCP、Wi-Fi、VPN、防火墙和网络策略影响
Ctrl+Shift+T 打开一个新的独立终端在 GNOME Terminal 中默认是新建标签页;Ctrl+Alt+T 才是常见的新窗口启动快捷键
ls -l 显示“日期、执行权限、用户组”还包含文件类型、完整权限、硬链接数、所有者、字节数、修改时间和名称
lsmod 查看系统全部驱动它列出当前已加载的可加载内核模块,编译进内核的驱动不一定出现
/ 和 ~ 都是“根文件”/ 是文件系统根目录;~ 是当前用户家目录,本视频中为 /home/wfeng
touch 就是新建空文件它本质上更新时间戳;文件不存在时才默认创建空文件
rm 可以直接删除文件夹普通 rm 删除文件;目录需要 rmdir 或递归选项,且递归删除风险更高
rm *.c 是 rm 自己寻找所有 C 文件*.c 先由 Bash 展开成路径列表,再交给 rm
复制命令是 cp c.txt../正确命令为 cp c.txt ../,源和目标之间必须有空格
先进入 Videos 再执行 mv c.txt videos视频在家目录执行 mv c.txt Videos/,并且名称区分大小写
“C.TXT”是查看命令命令是 cat,文件参数是 c.txt;无输出是因为文件为空

练习时建议使用专门的测试目录,不要在包含课程源码、个人文件或系统文件的目录练习删除。每一步都按以下顺序确认:

  1. 用 pwd 查看当前位置。
  2. 用 ls 查看操作对象。
  3. 输入命令后,在按 Enter 前再次核对空格、大小写、路径和通配符。
  4. 执行后再次用 ls 或 pwd 验证结果。
  5. 不理解命令时先运行 命令 --help 或 man 命令,不要试探性加 sudo。

核对依据

  • 本地 videos/323.2.1Linux基本命令使用.mp4:逐帧核对 Online Accounts、Livepatch、Ubuntu 22.04.3 LTS 升级提示、Firefox 联网、终端快捷键、提示符、全部命令与最终文件状态;视频文件时长约 17 分 12 秒。
  • 本地 transcripts/323.2.1Linux基本命令使用.txt 与 .srt:核对教师讲述,并结合画面纠正“scape”“Nexus”“opening them”“dockerment”“RMA.C”“C.TXT”等语音识别错误。
  • Ubuntu 官方发布周期及Ubuntu 20.04 支持说明:核对 Ubuntu 20.04 标准维护结束日期、ESM 时间范围以及长期联网环境的版本维护建议。
  • GNOME Terminal 官方快捷键说明:核对新建标签页、复制粘贴、终端字体放大、缩小和复位的默认快捷键。
  • GNU Coreutils 官方手册:核对 ls、pwd、mkdir、touch、rm、cp、mv 和 cat 的标准语义,尤其是 touch 更新时间戳及复制、移动、删除的边界。
  • GNU Bash:波浪号展开及文件名展开:核对 ~ 如何展开为家目录,以及 *.c 等模式如何在执行命令前展开。
  • Ubuntu lsusb 手册及kmod 项目:核对 USB 设备枚举与当前已加载内核模块的含义。