【Linux】文件系统结构,文件目录树及功能详解

时间:2023-02-10 12:27:13

一、文件目录树

1、Linux文件目录分配的依据FHS

Filesystem Hierarchy Standard (FHS)

Filesystem Hierarchy Standard(文件系统目录标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。

定义

FHS定义了两层规范。
  第一层是, / 下面的各个目录应该要放什么文件数据,例如/etc应该要放置设置文件,/bin与/sbin则应该要放置可执行文件等等。
  第二层则是针对/usr及/var这两个目录的子目录来定义。例如/var/log放置系统登录文件、/usr/share放置共享数据等等。

特点

  由于FHS仅是定义出最上层(/)及子层(/usr, /var)的目录内容应该要放置的文件数据,因此,在其他子目录层级内,就可以随开发人员自行配置。

2、文件目录树

定义

  在Linux中,所有的文件与目录都由根目录/ 开始。那是所有目录与文件的源头。然后再一个一个分支下来,有点像树状。
  因此,我们也称这种目录配置方式为:“目录树(directory tree)”。这个目录树主要特性有:
  目录树的起始点为根目录(/, root)。
  每一个目录不仅能使用本地端分区的文件系统,也可以使用网络上的文件系统。举例来说,可以利用网络文件系统(Network File System,NFS)服务器载入某特定目录等。
  每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。

绝对路径和相对路径

根据文件名写法的不同,也可将路径(path)定义为绝对路径(absolute)与相对路径(relative)。

  绝对路径为:由根目录(/)开始写起的文件名或目录名称,例如/home/dmtsai/.bashrc。
  相对路径为相对于当前路径的文件名写法。
  例如./home/dmtsai或../../home/dmtsai/等等。反正开头不是/ 就属于相对路径的写法。
  必须要了解,相对路径是以“当前所在路径的相对位置”来表示的。
  举例来说,当前在/home目录下,如果想要进入/var/log目录时
  cd /var/log(absolute)
  cd ../var/log(relative)
  因为在/home中,所以要回到上一层(../)之后,才能继续向/var移动。

###特别注意这两个特殊的目录:
####.:表示当前目录,也可以使用./来表示。
####..:表示上一层目录,也可以../来表示。

.与..的目录概念很重要,你常常会看到cd ..或 ./command之类的命令方式,就是表示上一层与当前所在目录的工作状态。此外,针对“文件名”与“完整文件名(由/ 开始写起的文件名)”的字符限制大小为:
单一文件或目录的最大容许文件名为255个字符。包含完整路径名称及目录(/)的完整文件名为4096个字符。

  我们知道,/var/log/下面有个文件名为message,这个message文件的最大文件名可达255个字符。var与log这两个上层目录最长也分别可达255个字符。但总的来说, /var/log/messages这样完整的文件名最长则可达4096个字符。

目录的四种交互作用形态

  FHS规定将目录分为四种交互作用的形态,分别为:
【Linux】文件系统结构,文件目录树及功能详解
四种类型分别为:
可分享的:指的是可以分享给其他系统挂载的目录
不可分享的:自己机器上面运作的装置档案或者是程序有关的 socket 档案等, 由于与自身机器有关,所以不适合分享给其他主机。
不变的:不变的数据
可变的:可变的数据

根目录

根目录是Linux下最重要的一个目录,因为其他的目录都是从根目录衍生出来的,FHS建议,根目录越小越好,因为根目录越大,所包含的东西就越多,出错的情况就会越多,所以还是给根目录分配小一点的空间较好。
  根目录下都包含以下次目录:
  【Linux】文件系统结构,文件目录树及功能详解

以下目录不可以与根目录分离:

  • /etc:配置文件
  • /bin:重要执行挡
  • /dev:所需要的装置档案
  • /lib:执行档所需要的函式库和核心模块
  • /sbin:重要的系统执行文件

    /usr

    /usr是unix software resource的缩写,是unix操作系统软件资源所放置的目录。

      根据FHS,/usr所放置的类型是可分享和不可变动的,所有系统默认软件都放在/usr下

    目录树

    目录树的特性有:

  • 目录树的起点是根目录

  • 每一个档案在此目录树中的文件名(包含完整路径)都是独一无二的