3、Linux基础操作:文件系统结构、常用命令、vim编辑器入门

说实话,很多刚入行的朋友觉得Linux就是个黑乎乎的终端窗口。但我做了这么多年嵌入式,可以负责任地告诉你——Linux是你和硬件之间的翻译官。不懂它,你连编译环境都搭不起来。

这一章,我带你过一遍最核心的东西。不扯虚的,全是干活用得上的。

3.1 文件系统结构——你得知道东西放哪

Linux的文件系统,说白了就是一棵倒挂的树。根是/,所有东西都从它长出来。我第一次接触时也觉得乱,但用久了就会发现——这结构其实很讲究。

我挑几个你一定会碰到的目录说说:

目录 作用 我的经验
/bin 存放常用命令(ls、cp等) 别手贱删这里的东西,系统会崩
/etc 系统配置文件 改网络配置、源列表都在这
/home 用户的家目录 你的代码、项目都放这下面
/usr 用户安装的程序和库 交叉编译工具链经常装在这
/opt 第三方软件 我习惯把SDK解压到这里
/tmp 临时文件 重启就清空,别放重要东西
我的小习惯:我会在 /home 下建一个 workspace 文件夹,所有项目按日期命名。比如 workspace/2025-03-21_uart_driver。找东西特别快。

3.2 常用命令——每天敲几百遍的那种

这些命令我闭着眼都能打。你想想看,嵌入式开发中90%的操作都靠它们。

3.2.1 ls —— 看看目录里有什么

ls                    # 列出当前目录
ls -l                 # 详细信息(权限、大小、时间)
ls -a                 # 显示隐藏文件(以.开头的)
ls -lh                # 人性化显示大小(K、M、G)

我个人最常用的是 ls -lh。为什么?因为一眼就能看出文件多大。有一次我在调试一个固件,发现bin文件只有几百字节,明显不对——原来是编译失败了。嗯,ls -lh 救了我一命。

3.2.2 cd —— 在目录间跳来跳去

cd /home/workspace    # 绝对路径跳转
cd ..                 # 返回上一级
cd ~                  # 回到用户家目录
cd -                  # 回到上一个目录
避坑指南:我曾经在编译内核时,用 cd .. 退错了层级,结果make clean把整个源码目录删了。后来我养成了习惯——每次cd之后先 pwd 确认一下位置。

3.2.3 cp —— 复制文件

cp file1.txt file2.txt          # 复制并重命名
cp -r dir1/ dir2/               # 递归复制整个目录
cp -i file1.txt file2.txt       # 覆盖前先询问(安全!)

这里有个坑——复制目录一定要加 -r。我见过新手用 cp src/ dst/ 结果只复制了个空目录,里面的代码全没了。你想想看,那得多崩溃。

3.2.4 mv —— 移动或重命名

mv old.txt new.txt              # 重命名
mv file.txt /home/workspace/    # 移动到其他目录
mv -i file.txt /target/         # 覆盖前询问

说白了,mv 就是剪切+粘贴。我在项目中经常用它来整理编译产物——把 .o 文件移到 build/ 目录,保持源码目录干净。

3.2.5 rm —— 删除(小心!)

rm file.txt                     # 删除文件
rm -r dir/                      # 删除目录及其内容
rm -f file.txt                  # 强制删除(不询问)
rm -rf /                        # 千万别执行这个!!!
血的教训:我曾经在服务器上执行 rm -rf ./build/,结果手滑打成了 rm -rf / build/(多了个空格)。系统直接崩了。从那以后,我每次用 rm -rf 之前都会先 ls 确认路径。

3.3 vim编辑器入门——嵌入式工程师的标配

你可能听说过vim很难学。但我想说——一旦你习惯了,就再也回不去了。在嵌入式开发中,很多时候你只有终端,没有图形界面。这时候vim就是你的救命稻草。

3.3.1 vim的三种模式

这是新手最容易懵的地方。vim有三种模式,你得搞清楚:

模式 作用 怎么进入
普通模式 移动光标、复制粘贴、删除 启动vim默认进入,按 Esc 返回
插入模式 输入文字 按 i(在光标前插入)或 a(在光标后插入)
命令模式 保存退出、搜索替换 在普通模式下按 :

3.3.2 最常用的操作

别想着一下子学会所有功能。你先记住这几个,够用了:

# 打开文件
vim main.c

# 进入插入模式
i               # 在光标前插入
o               # 在下一行插入新行

# 保存退出(在命令模式下)
:w              # 保存
:q              # 退出
:wq             # 保存并退出
:q!             # 强制退出(不保存)

# 移动光标(普通模式下)
h j k l         # 左 下 上 右
0               # 跳到行首
$               # 跳到行尾
gg              # 跳到文件开头
G               # 跳到文件末尾

# 复制粘贴
yy              # 复制当前行
p               # 粘贴到光标下方
dd              # 删除当前行
我的建议:刚开始用vim时,你可能会觉得「这什么鬼,连退出都不会」。别急,我当初也是这么过来的。给自己一周时间,每天用vim写点东西。一周后你会发现——鼠标是什么?不需要了。

3.3.3 一个真实场景

有一次我在调试一个STM32的UART驱动,需要修改 stm32f4xx_hal_uart.c 里的波特率配置。服务器上没有图形界面,我直接用vim打开:

vim stm32f4xx_hal_uart.c

然后:

  1. 按 /115200 搜索波特率配置
  2. 按 n 跳到下一个匹配项
  3. 按 i 进入插入模式,改成 9600
  4. 按 Esc 回到普通模式
  5. 输入 :wq 保存退出

整个过程不到10秒。你想想看,如果用图形界面的编辑器,光打开文件就要等半天。

3.4 本章知识体系

下面这张图,是我梳理的本章核心逻辑。你照着这个思路去学,不会乱:

Linux基础操作知识体系 Linux基础操作 文件系统结构 常用命令 vim编辑器 /bin /etc /home /usr /opt /tmp 等核心目录 ls cd cp mv rm 常用参数与避坑 三种模式切换 插入/保存/退出 搜索/复制/粘贴 掌握这些,嵌入式开发环境搭建就稳了

嗯,这一章的内容就这些。文件系统结构让你知道东西放哪,常用命令让你能操作文件,vim让你能编辑代码。这三样东西,是嵌入式开发的基本功。

别贪多,先把今天讲的这几个命令练熟。每天敲一敲,一周后你会发现自己已经离不开终端了。

一句话总结:Linux不是用来「学」的,是用来「用」的。多用,自然就熟了。

可可精品资料库