当前位置:首页>Linux>Linux 从0到1 : 02 · 文件系统与路径

Linux 从0到1 : 02 · 文件系统与路径

  • 2026-10-10 16:01:25
Linux 从0到1 : 02 · 文件系统与路径
  欢迎来到罐子的实验室
    今天我们来学习文件系统与路径
    本次目标:

    建立「文件系统是一棵树」「路径是地址」的核心心智模型,能在任意位置精准定位文件。

学完你能做什么:

  • 理解 Linux 文件系统的树状结构
  • 区分绝对路径和相对路径
  • 用 cd 在目录间穿梭,用 pwd 确认自己在哪
  • 看懂 .、..、~ 这几个特殊路径符号

1. 文件系统是一棵树

Linux 的所有文件和目录,组织成一棵倒挂的树。这棵树的「根」是一个目录,写作单独一个斜杠 /,叫做根目录(root directory)。

/ ← 根目录├── home/ ← 用户家目录的总目录│ ├── user/ ← user 的家目录│ └── alice/├── etc/ ← 系统配置文件├── usr/│ └── bin/ ← 大量可执行程序├── tmp/ ← 临时文件└── ...

关键点:

  • 根目录是 /,不是C:\。Linux 没有盘符概念,整个系统只有一个根。
  • 每个目录里可以装文件和子目录,子目录又可以再套子目录,层层嵌套。
  • 你通过**路径(path)**来引用任何一个文件或目录。

2. 路径:从根说起

路径就是「到达某个文件的路线说明」。从根目录 / 开始的路径,叫绝对路径(absolute path),因为它不管你在哪、结果都一样。

比如 /home/user 表示:从根 / 进去,先到 home,再到 user。每一段之间用 / 分隔。

user@host:~$ echo /home/user/home/user

💡 注意 / 的双重身份:路径开头的 / 表示「根目录」,路径中间的 / 表示「目录分隔符」。看到 /home/user 时,开头的 / 是根,后面的两个 / 是分隔。

动手练习 1:认识根目录

任务:列出根目录 / 下面有哪些东西。

思路引导:列出目录内容的命令是 ls,把目录路径作为参数传给它(ls 详见《03》,这里先用一下)。

参考答案:

user@host:~$ ls /bin boot dev etc home lib lib64media mnt opt proc root run sbinsrv sys tmp usr var

(你的机器上看到的可能略有不同。)这些都是根目录下的子目录,每个都有专门用途,比如:

  • /home
     —— 普通用户的家目录
  • /etc
     —— 系统配置文件
  • /tmp
     —— 临时文件
  • /usr
     —— 系统软件资源

常见错误:把 ls / 误写成 ls // 或 ls /\——多打斜杠会报错或行为异常。


3. 切换目录:cd 与当前工作目录

每个正在运行的程序(包括你的 Shell)都有一个当前工作目录(cwd),可以理解为「你现在站在哪个目录里」。

用 cd(change directory)命令切换:

user@host:~$ cd /etcuser@host:/etc$# 注意提示符变了,现在显示 /etc

注意:提示符里的目录部分会跟着变,这就是 ~ 之所以是 ~ 的原因——它代表「家目录」。

切回根目录试试:

user@host:/etc$ cd /user@host:/$

pwd:我在哪?

如果提示符没显示完整路径(比如只显示 ~),你想确切知道自己在哪,用 pwd(print working directory):

user@host:~$ pwd/home/user

——原来 ~ 就是 /home/user 的简写。

动手练习 2:穿梭与定位

任务:

  1. 切到 /etc 目录。
  2. 用 pwd 确认你现在确实在 /etc。
  3. 切回你的家目录。

思路引导:cd /etc → pwd → cd ~(或直接 cd,不带参数默认回家)。

参考答案:

user@host:~$ cd /etcuser@host:/etc$ pwd/etcuser@host:/etc$ cduser@host:~$

💡 cd 不带参数 = cd ~ = 回家。这是最常用的快捷方式之一。

常见错误:

  • ❌ cd etc(没加 /)——Shell 会去当前目录里找叫 etc 的子目录,而当前目录里通常没有,于是报 No such file or directory。想从根开始,必须写 /etc。
  • ⚠️ 大小写敏感:/etc 正确,/ETC 不存在。

4. 绝对路径 vs 相对路径

绝对路径:从根 / 开始,全世界唯一,与你在哪无关。例:/home/user/docs/report.txt。

相对路径:从当前工作目录开始,你在不同地方写同一个相对路径,指向的文件可能完全不同。

假设目标文件是 /tmp/a/b/my_file:

你当前在哪
它的相对路径
/tmp/a/b/my_file
/tmpa/b/my_file
/tmp/a/bmy_file

判断方法很简单:以 / 开头 = 绝对路径,不以 / 开头 = 相对路径。

动手练习 3:体会相对

任务:你现在在家目录 /home/user。

  1. 用绝对路径切换到 /tmp。
  2. 再用相对路径(不带开头的 /)切回 home/user(提示:从 /tmp 出发,相对路径是 ../home/user,下节解释 ..)。

思路引导:cd /tmp 是绝对的;cd ../home/user 中 .. 表示「上一级」,从 /tmp 上一级是 /,再进 home 进 user。

参考答案:

user@host:~$ cd /tmpuser@host:/tmp$ cd ../home/useruser@host:~$

常见错误:分不清时,就用绝对路径——绝对路径永远正确,新手初期建议多用绝对路径。


5. 两个特殊目录:. 和 ..

每个目录里(哪怕它空无一物)都隐含着两个「虚拟条目」:

  • .
     —— 表示当前目录本身。
  • ..
     —— 表示上一级目录(父目录)。

用 ls -a 能看到它们(-a 表示 all,详见《模块 03》):

user@host:~$ cd /tmpuser@host:/tmp$ ls -a. .. somefile.txt

. 和 .. 不是真实文件,而是路径中的「指路标」。比如你在家目录 /home/user:

  • .
     = /home/user
  • ..
     = /home
  • ../..
     = /
  • ../alice
     = /home/alice(如果存在的话)

这两条等价的命令都表示「切到家目录」(一个绝对,一个相对):

user@host:/tmp$ cd /home/useruser@host:~$ cd /tmpuser@host:/tmp$ cd ../home/useruser@host:~$

. 单独用似乎没意义,但它有妙用——比如「运行当前目录下的某个脚本」(详见《模块 11》):./my_script。

动手练习 4:上下楼梯

任务:从家目录 /home/user 出发:

  1. 用 .. 切到 /home。
  2. 再用 .. 切到 /。
  3. 用 pwd 确认。

思路引导:每次 cd .. 上升一级。

参考答案:

user@host:~$ pwd/home/useruser@host:~$ cd ..user@host:/home$ cd ..user@host:/$ pwd/

常见错误:

  • ❌ cd . —— 切到「当前目录」,等于没切。它本身不报错,只是没意义(特定场景才有用)。
  • ⚠️ 不要把 .. 和 ./ 搞混:.. 是上一级,./ 是当前目录。

6. 家目录 ~:你最常待的地方

每个用户都有一个家目录(home directory),普通用户的家目录通常在 /home/用户名。比如你是 user,家目录就是 /home/user。

Shell 启动时默认把你放在家目录,所以提示符里的 ~ 就是它。~ 是家目录的简写:

user@host:~$ echo ~/home/useruser@host:~$ cd /tmpuser@host:/tmp$ cd ~# 用 ~ 回家user@host:~$ cd ~/Documents# 家目录下的 Documents 子目录user@host:~/Documents$

注意:~ 只在路径开头才会被展开成家目录。~/~ 会被理解成「家目录下叫 ~ 的文件」,而不是「家目录的家目录」。

动手练习 5:用 ~ 导航

任务:

  1. 切到 /tmp。
  2. 用 cd ~ 回家。
  3. 用 echo ~ 看看 ~ 展开成什么。

参考答案:

user@host:~$ cd /tmpuser@host:/tmp$ cd ~user@host:~$ echo ~/home/user

常见错误:把 ~ 当成「根目录」——不是!~ 是家目录,/ 才是根。


速查表

命令 / 符号
作用
示例
pwd
打印当前工作目录
pwd
 → /home/user
cd 路径
切换到某目录
cd /etc
cd
回家目录
cd
cd ~
回家目录
cd ~
cd ..
回上一级
cd ..
/
根目录 / 路径分隔符
/home/user
.
当前目录
./script.sh
..
上一级目录
cd ../..
~
家目录简写
cd ~/Documents

绝对 vs 相对 一图流

绝对路径: /home/user/docs/report.txt ← 从 / 开始,唯一确定相对路径: docs/report.txt ← 从当前目录开始,取决于你在哪 ../user/docs/report.txt ← 用 .. 也能写相对路径

下一步

现在你知道「自己在哪、文件在哪」了。但光知道地址还不够——你得能查看、创建、删除、搬动文件。

最新文章

随机文章