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 # 删除当前行
3.3.3 一个真实场景
有一次我在调试一个STM32的UART驱动,需要修改 stm32f4xx_hal_uart.c 里的波特率配置。服务器上没有图形界面,我直接用vim打开:
vim stm32f4xx_hal_uart.c
然后:
- 按
/115200搜索波特率配置 - 按
n跳到下一个匹配项 - 按
i进入插入模式,改成9600 - 按
Esc回到普通模式 - 输入
:wq保存退出
整个过程不到10秒。你想想看,如果用图形界面的编辑器,光打开文件就要等半天。
3.4 本章知识体系
下面这张图,是我梳理的本章核心逻辑。你照着这个思路去学,不会乱:
嗯,这一章的内容就这些。文件系统结构让你知道东西放哪,常用命令让你能操作文件,vim让你能编辑代码。这三样东西,是嵌入式开发的基本功。
别贪多,先把今天讲的这几个命令练熟。每天敲一敲,一周后你会发现自己已经离不开终端了。
可可精品资料库