目录
1.引言
对于Linux,文件系统的结构层次是一个关键的概念。Linux的文件系统以层次结构组织,类似于一棵树,其中每个节点都是文件或目录。理解这个结构有助于更好地组织、访问和管理文件。本篇博客将介绍Linux文件系统的层次结构,帮助你更好地掌握这个基础概念。
2.Linux文件系统层次结构剖析
系统目录概述及FHS标准
树形图简述Linux文件系统,最顶层的目录被称为根目录,用斜杠(/)表示。根目录是整个文件系统的起点,所有其他的文件和目录都是从根目录开始的。它类似于大树的树干,为整个文件系统提供了基础。

FHS标准
FHS 标准主要是希望使软件在安装时,或用户自己能够判断安装和存放文件的位置。
所以,FHS 标准的核心在于确定每个特定的目录下应该放什么内容的文件和数据,并希望 Linux 用户能够遵循该准则。
FHS 标准根据文件系统使用的频繁与否以及是否允许用户随意改动,将目录定义为四种交互作用形态。
- 可分享的:可以分享给其他系统挂载使用的目录
- 不可分享的:与自身机器直接相关的设备文件等,不能分享给其他主机
- 不变的:数据不常变动的文件
- 可变动的:经常改变的数据,如登录文件、新闻组等。
关键系统目录功能介绍
Linux文件系统包含许多标准目录,用于组织不同类型的文件和数据。以下是一些常见的标准目录:
/bin:存放所有用户都可以使用的linux基本操作命令(目录中多是可执行的二进制文件)。
/boot:该目录存放的是启动Linux时的一些核心文件,具体包含一些镜像文件和链接文件,因此这个目录非常重要,如果遭到破坏,系统将无法启动。
/dev:设备文件目录,虚拟文件系统,主要存放所有系统中device的相关信息,不论是使用的或未使用的设备,只要有可能使用到,就会在/dev中建立一个相对应的设备文件。
/etc:这个目录是存放所有的系统管理所需要的配置文件和子目录。比如:我们使用yum安装的mysql,redis,PHP,nginx的配置文件都会在etc这个目录下。
/home:该目录是系统中每个用户的工作目录(除了root用户)。在Linux系统中,每个用户都有自己的一个目录,而该目录一般是由用户的账号命名的。例如,如果有一个用户ixdba,那么它的默认目录就是/home/ixdba。
/lib:需要共享的函数库与kernel模块,系统kernel启动所使用的函数库,或者当执行一些在/bin和/sbin中的命令时使用的函数库。
/media:Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入目录就可以查看光驱里的内容了。
/opt:用来安装附加软件包,是用户级的程序目录,可以理解为D:/Software。安装到/opt目录下的程序,它所有的数据、库文件等等都是放在同个目录下面。opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用。
/proc:此目录是一个虚拟目录,目录中所有信息都是内存的映射,通过这个虚拟的内存映射目录,可以和内核内部数据结构进行交互,获取有关进程的有用信息,同时也可以在系统运行中修改内核参数。与其他目录不同,/proc存在于内存中,而不是硬盘上。
/root:该目录是Linux超级用户root的默认主目录。如果通过root登录系统,就会自动进入此目录,一般用户没有进入这个目录的权限。
/sbin:/sbin中的s是Super User的意思,也就是说,只有超级用户才能执行这些命令。常见的如磁盘检查修复命令fcsk、磁盘分区命令fdisk、创建文件系统命令mkfs、关机命令shutdown和初始化系统命令init等。
/tmp:该目录为临时文件目录,文件仅保存十天。
/usr:主要存放一些应用程序,可以理解为C:/Windows/。/usr下的/local目录为用户级的程序目录,可以理解为C:/Progrem Files/。用户自己编译的软件默认会安装到这个目录下。
/var:动态文件或数据存放目录,默认日志文件都存放在这个目录下。
路径寻址机制深度解析
绝对路径的确定性:从根目录开始的完整导航
绝对路径以根目录(/)为唯一起点,通过 “根→子目录→目标” 的完整层级链,构建全局唯一的定位标识。无论进程处于哪个工作目录,/etc/nginx/nginx.conf 这类绝对路径始终指向同一文件 —— 这种 “确定性” 源于文件系统的树状拓扑结构,根目录作为树的根节点,每个目录是分支,绝对路径如同从根到叶子的 “基因序列”,与 FHS 规范深度耦合(如/var/log固定存储日志),确保系统服务(如开机启动的systemd)能精准加载核心配置,彻底摆脱 “当前位置” 的干扰。
相对路径的上下文依赖:当前工作目录的意义
相对路径以当前工作目录(CWD)为 “临时原点”,通过 “近程关系” 描述目标位置(如./src/index.html 表示 CWD 下的src子目录)。其核心是环境依赖性:同一相对路径(如../config)在/home/user下指向/home/config,在/var/log下却指向/var/config。当前工作目录是进程的动态属性(每个终端或程序可独立设置),它让用户能以 “就近原则” 简化操作(如项目内用assets/logo.png替代全路径),但也埋下 “环境敏感” 的隐患 —— 切换目录后路径可能失效。系统解析时,会从 CWD 出发,逐层解析目录组件(如../../data需连续向上跳转两级),最终拼接为绝对路径供内核访问。
特殊路径符号的魔法(., .., ~)
Linux 用符号约定赋予路径 “语法糖”:
.(当前目录):显式指代 “当前工作目录”,既用于消除歧义(如./app强制运行当前目录的程序,避免与系统命令冲突),也在脚本中明确相对路径的起点。..(父目录):指向当前目录的直接上级目录,是 “向上导航” 的快捷键(如cd ..返回上一级,rm -r ../old_data删除父目录的文件夹)。其本质是目录的硬链接特性:每个目录默认包含.(自身)和..(父目录)两个隐藏项,构成目录树的层级关联。~(家目录):自动展开为当前用户主目录。这一符号让用户摆脱主目录路径记忆负担,还支持跨用户导航(如sudo cp ~/backup /root复制普通用户备份到根用户目录)。这些符号由 Shell 预先 “路径展开” 为绝对路径,再交付内核处理,大幅提升命令行效率。
三者共同构建了 Linux 路径寻址的弹性体系:绝对路径保障 “全局唯一”,相对路径实现 “近程便捷”,特殊符号则用极简语法压缩操作成本,最终让文件系统的访问既精准又高效。
3.总结
Linux文件系统的层次结构是一个关键概念,有助于我们更好地理解和组织文件。从根目录开始,标准目录和子目录形成了一个树状结构,使得文件系统的管理和访问更加有序和高效。掌握绝对路径和相对路径的使用方式可以帮助我们在文件系统中准确地定位文件和目录。通过理解这些概念,我们将能够更自信地在Linux环境中工作,更好地管理和操作文件。
2547

被折叠的 条评论
为什么被折叠?



