3. Linux 基础操作:文件系统结构、常用命令与用户权限管理
说实话,很多刚接触嵌入式 Linux 的朋友,第一关就卡在“不知道文件在哪”和“怎么操作文件”上。Windows 用惯了,突然面对一个黑乎乎的终端,确实有点懵。
我个人习惯把 Linux 文件系统想象成一棵树。根是 /,然后不断分叉。你只要记住几个关键目录,后面就顺了。
3.1 文件系统结构:先认路
嵌入式 Linux 和桌面 Linux 的文件系统结构基本一致。我当年第一次编译内核时,就是因为没搞懂 /usr 和 /opt 的区别,把交叉编译器装错了地方,折腾了一整天。
下面这几个目录,你必须记住:
| 目录 | 作用 | 我的经验 |
|---|---|---|
/bin |
存放基本用户命令(ls, cp 等) | 系统启动就要用的,别乱动 |
/sbin |
系统管理命令(fdisk, ifconfig 等) | 一般只有 root 能用 |
/etc |
配置文件集中营 | 改网络、改服务,都在这 |
/dev |
设备文件(串口、LED 等) | 嵌入式开发天天打交道 |
/proc |
内核和进程的虚拟文件系统 | 查看 CPU、内存信息的神器 |
/sys |
更现代的设备和驱动接口 | 控制 GPIO、I2C 全靠它 |
/home |
普通用户的家目录 | 你的代码、项目放这里 |
/root |
超级用户的家目录 | 别用 root 干日常活 |
小技巧: 用
ls -l / 看看根目录下都有什么。你会发现,Linux 的目录结构其实很有逻辑。
为了让你更直观地理解,我画了一张图:
3.2 常用命令:手上得有活
命令不在多,够用就行。我总结了嵌入式开发中最常用的几个,你练熟了,效率翻倍。
3.2.1 文件浏览与定位
pwd:显示当前目录。迷路了?先敲这个。ls:列出文件。我几乎每次都加-l看详细信息。cd:切换目录。cd ..回上级,cd ~回家。
实战组合:
# 查看当前目录
pwd
# 列出所有文件(包括隐藏文件),并显示详细信息
ls -la
# 进入 /etc 目录看看配置文件
cd /etc
3.2.2 文件操作:增删改查
| 命令 | 作用 | 常用参数 |
|---|---|---|
cp |
复制文件或目录 | -r 递归复制目录 |
mv |
移动或重命名 | 源和目标在同一目录就是改名 |
rm |
删除文件或目录 | -rf 强制递归删除(慎用!) |
mkdir |
创建目录 | -p 创建多级目录 |
touch |
创建空文件或更新文件时间 | 常用于快速创建测试文件 |
我曾经犯过的错: 在嵌入式开发板上,用
rm -rf / 想删除当前目录,结果手滑多打了个空格。系统直接挂了。记住:rm -rf 后面一定要再三确认路径!
3.2.3 文件内容查看
嵌入式开发中,经常要看日志、配置文件。这几个命令够用了:
cat:显示整个文件。适合小文件。head/tail:只看头几行或尾几行。tail -f可以实时跟踪日志,调试时特别有用。less:分页查看。按q退出,按/搜索。
调试技巧: 在开发板上运行程序时,用
./myapp && tail -f /var/log/syslog,可以一边跑程序一边看系统日志,问题出在哪一目了然。
3.3 用户与权限管理:别乱动系统文件
Linux 是多用户系统,权限管得很严。你想想看,如果谁都能改 /etc/passwd,那系统还安全吗?
3.3.1 用户与组
每个文件都有三个权限组:
- 所有者(u):文件的主人
- 所属组(g):同组的其他用户
- 其他用户(o):八竿子打不着的
查看用户信息:
# 查看当前用户
whoami
# 查看所有用户(在嵌入式系统中常用)
cat /etc/passwd
# 切换用户
su - username
3.3.2 文件权限:rwx 到底是什么意思?
用 ls -l 看到的 -rwxr-xr--,其实分四段:
| 位置 | 含义 | 示例 |
|---|---|---|
| 第1位 | 文件类型(- 普通文件,d 目录) | - |
| 第2-4位 | 所有者权限(rwx) | rwx |
| 第5-7位 | 所属组权限(r-x) | r-x |
| 第8-10位 | 其他用户权限(r--) | r-- |
r 读,w 写,x 执行。数字表示法:r=4, w=2, x=1。所以 rwxr-xr-- 就是 754。
3.3.3 修改权限与所有者
这两个命令你必须会:
# 修改权限:给所有者加执行权限
chmod u+x myscript.sh
# 修改权限:设置成 755(所有者全权限,其他人只读执行)
chmod 755 myscript.sh
# 修改所有者
chown root:root myscript.sh
注意: 在嵌入式开发板上,很多系统文件是只读的。别想着用
chmod 777 暴力解决,那样只会让系统变得不安全。我曾经见过有人把 /dev 下的设备文件改成 777,结果程序跑着跑着就崩溃了。
3.4 实战:搭建一个嵌入式开发工作目录
说了这么多,我们来动手做点实际的。假设你要为一个 ARM 开发板写程序:
# 1. 创建项目目录
mkdir -p ~/arm_project/src ~/arm_project/build ~/arm_project/output
# 2. 创建一个测试文件
touch ~/arm_project/src/main.c
# 3. 给脚本加执行权限(假设你有个编译脚本)
chmod +x ~/arm_project/build.sh
# 4. 查看最终结构
ls -la ~/arm_project/
嗯,到这里,你已经掌握了嵌入式 Linux 开发中最基础的文件操作和权限管理。这些命令我会在后面的课程中反复用到,所以现在练熟,后面就轻松了。