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 的目录结构其实很有逻辑。

为了让你更直观地理解,我画了一张图:

Linux 文件系统核心结构 / (根) /bin /etc /dev /proc /sys /home 💡 嵌入式开发重点关注: • /dev:操作硬件设备(串口、GPIO)的入口 • /proc & /sys:读取内核信息、控制硬件状态 • /etc:配置网络、服务、启动项

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 开发中最基础的文件操作和权限管理。这些命令我会在后面的课程中反复用到,所以现在练熟,后面就轻松了。