Linux 没有 C 盘。两种文件系统的差别,不在命令行,在组织世界的方式。
很多人从 Windows 转 Linux,以为最难的是命令行。用上一阵子才发现,命令行能查、能背,唯独有一件事让人持续别扭——文件,到底存在哪?
这个别扭的根源,是两种操作系统用了两套完全不同的文件组织哲学。Windows 以存储设备为中心,Linux 以逻辑位置为中心。看懂这件事,Linux 那张陌生的目录地图,立刻就清楚了。

Windows:一片片盘,每个分区一座孤岛
Windows 的文件系统直接映射物理分区。你装了几块硬盘、分了几个区,就有几个盘符:C、D、E……每个盘符背后是一个独立的分区,每个分区各自为政,拥有自己的根目录。
这带来一个直观好处:路径自带「磁盘坐标」。看到 E:\Backup\photos.zip,你立刻知道它在 E 盘的 Backup 文件夹里。想换块盘存,换个字母就行。
代价是分区之间天然割裂。一个程序要同时读 C 盘的系统文件和 D 盘的数据,得自己处理两套根。在这里,路径就是物理位置——盘符已经把文件钉死在某块硬件上。
Linux:一棵树,所有分区都嫁接上来
Linux 走了相反的路:整个系统只有一棵目录树,根是斜杠 /。
所有的文件、目录、设备、外接磁盘,全部挂在这同一棵树上。路径 /home/ironlambda/demo.txt 告诉你文件在逻辑结构里的位置,但完全看不出它躺在哪块硬盘、哪个分区上。
想知道分区和目录的对应关系,得直接问系统:
df -h
这条命令列出所有分区、它们的挂载点、容量和用量。所谓挂载点,就是某个分区「嫁接」进目录树的那个位置。
挂载:两种哲学的分水岭
理解 Linux 文件系统的关键是挂载(mount)。
挂载做的事,是把一个分区的入口,钉到目录树的某个节点上。钉好之后,你访问那个节点,访问的就是那个分区。这里有个反直觉的细节:如果挂载点本来就有文件,挂载后这些文件会被临时遮蔽,看到的是新分区的内容,卸载后才会重新出现——这也是为什么新硬盘建议挂到空目录。一块新硬盘插上来,Linux 不会给你分配盘符,而是让你把它挂到 /mnt 或 /media 下某个空目录——从此它就是这棵树的一部分。

打个比方。Windows 像一排各自带锁的仓库,每间有独立门牌(C 仓、D 仓),门牌从 1 开始各自编号,你要找货先认门牌。Linux 像一栋大楼只有一个统一目录大厅,所有仓库的入口都登记进同一张楼层索引,你按楼层和房间号找,不用关心货物理上堆在哪个库房。
一句话收口:Windows 的路径是物理位置,Linux 的路径是逻辑位置。 物理分区藏在路径背后,由挂载点负责翻译。
FHS:单根树也得有规矩
一棵树如果乱长,照样找不到东西。所以 Linux 社区定了个约定——FHS(Filesystem Hierarchy Standard,文件系统层次标准),规定每个常见目录该放什么。Ubuntu 等绝大多数发行版都遵循它。
有了 FHS,你换一台 Linux 机器,配置文件永远在 /etc,用户数据永远在 /home,日志永远在 /var,不会扑空。盘符时代那种「这个文件到底在哪个盘的哪个角落」的迷茫,在这里不存在——你只需记住「哪个目录放什么」。
常见目录一览:
/home:用户主目录,相当于 Windows 的用户文件夹
/dev 这一项值得多看一眼。在 Linux 的世界观里,不只是外接磁盘,连硬盘本身、键盘、网卡,统统被表示成 /dev 下的文件。这是 Unix「一切皆文件」哲学的落地——统一命名空间,让读写设备与读写普通文件共用同一套接口。
写在最后
盘符和挂载,表面是两种路径写法,背后是两种组织世界的思路。Windows 让物理设备站在前台,你看得到每一块盘;Linux 让物理设备退到幕后,只留给你一棵干净的逻辑树。
理解了这棵树,Linux 就不再陌生——命令行只是它的手,目录树才是它的骨架。下次插上 U 盘,别再去找「新加的盘符」,去 /media 看一眼,那棵树上又多了一根枝条。
公众号私信「加群」,加入读者交流群