1. 文件目录

1.1 分层文件系统

分层结构如家族的组织结构,一对夫妇可能有一个或多个孩子,而每个孩子又可能有更多孩子,该分层结构称为家族树。

Linux文件系统也称为树,由一系列相互关联的文件组成。在标准的Linux系统上,每个用户都有一个自己的目录,在此目录下,用户可以建立多个子目录,子目录下又可建立子目录。

对于文件树,向上是指靠近根,向下是指远离根,相连的两个目录,靠近根的称为父目录,远离根的称为子目录。路径名是跟踪某条从一个文件分支到另一个文件的路径所经过的节点名组成的序列。

1.2 文件名

每个文件都有文件名,文件名的最大长度与文件系统的类型有关。如今大多数文件系统要求文件名的长度不可超过255个字符,一些较老的文件系统则将文件名的长度限制在14个字符以内。同一个目录下的文件不能同名,不同目录下的文件可以重名。

根目录通常是用" / "命名,并使用" / "这唯一一个字符来引用。其他文件不能将" / "用来作为文件名中的字符,但在路径名中," / "可用作分隔符。

文件扩展名是指文件名中跟在句点后面的部分,它用来帮助描述文件内容。在文件名中可使用多个句点,如:"files.tar.gz"。文件名以句点开始的文件称为不可见文件(隐藏文件)。在每个目录下都存在两个不可见的特殊项:单句点" . "(当前目录)和双句点" .. "(父目录)。

1.3 绝对路径和相对路径

文件的绝对路径名是由从根目录到该文件节点的路径上的所有节点名组成,其中各名字之间用斜杠" / "隔开。由于根目录的名称用斜杠表示,所以绝对路径都以" / "开始。绝对路径名的另一种形式是以代字符" ~ "开始,代字符表示用户主目录。

相对路径名是指从工作目录到文件的路径名,该路径名是相对于工作目录的,与绝对路径名类似,相对路径名也可通过目录名序列描述一条路径。

1.4 重要的标准目录

1) /: 根目录。

2) /bin: 基本命令的二进制文件。

3) /boot: 引导系统加载的静态文件。

4) /dev: 设备文件。

5) /etc: 本地计算机系统配置文件。

6) /etc/X11: 对X Windows系统的本地计算机配置。

7) /etc/opt: 包含/opt目录下附加软件包的配置文件。

8) /home: 用户文件目录。

9) /lib: 共享库和内核模块。

10) /lib/modules: 可加载内核模块。

11) /mnt: 临时文件系统挂载点。

12) /opt: 附加软件包。

13) /proc: 虚拟文件系统的内核和进程信息。

14) /root: root用户的主目录。

15) /sbin: 基本的二进制系统文件。

16) /tmp: 临时文件夹。

17) /usr: 第二主文件层次。

18) /usr/bin: 大多数用户命令。

19) /usr/bin/X11: 到目录/usr/X11R6/bind的符号链接。

20) /usr/games: 游戏和教育软件。

21) /usr/include: C程序包含的头文件。

22) /usr/include/X11: 到目录/usr/X11R6/include/X11的符号链接。

23) /usr/lib: 库文件。

24) /usr/lib/X11: 到/usr/X11R6/lib/X11的符号链接。

25) /usr/local: 本地文件层次结构。

26) /usr/man: 联机手册。

27) /usr/sbin: 非关键的用于系统管理的二进制文件。

28) /usr/share: 体系结构无关数据。

29) /usr/share/doc: 各种文档。

30) /usr/share/info: GNU info系统的主要目录。

31) /usr/src: 源代码文件。

32) /usr/X11R6: X Windows系统11版的第6发布版。

33) /var: 变量数据。

34) /var/log: 日志文件。

35) /var/spool: 假脱机应用数据。

2. 目录操作

2.1 mkdir

工具mkdir用来创建目录,mkdir的参数为新创建目录的路径名,如下所示:

常用参数:

1) -m: 设置目录权限。

2) -p: 创建多级目录。

2.2 cd

工具cd是将另一个目录设置为工作目录,不带参数的cd将把用户的主目录设置为工作目录,如下所示:

2.3 rmdir

工具rmdir用来删除目录,如果要删除包含其他文件的目录,需要使用rm将其中的文件删除后,再删除该目录,如下所示:

常用参数:

1) -p: 删除多级目录。

2.4 pwd

pwd工具用来显示工作目录的路径名,如下所示:

3. 访问权限

3.1 显示访问权限

访问文件的用户共有3种类型:文件所有者、文件所有者所在组的成员用户和其他用户。每个用户访问文件有3种方式:读、写和执行。

ls带上-l选项将分行列出文件的详细信息,如下所示:

上面的信息从左到右包括:

1) 第1个字符为文件类型。

2) 第1个字符后的9个字符为文件访问权限。

3) 链接文件的数目。

4) 文件所有者的名字。

5) 文件具有组访问权限的组的名称。

6) 文件的小大(以字节为单位)。

7) 文件创建或修改时间。

8) 文件名。

文件类型分两种:普通文件和目录文件,若为普通文件用连字号" - "表示,若为目录文件就用d表示。

第1个字符后的3个字符表示文件所有者对文件的访问权限,其中r代表可读,w代表可写,x代表可执行," - "代表该文件的所有者没有对文件的相应权限。类似的,后续3个字符代表了组成员用户对文件的访问权限,再后面的3个字符为其他用户对文件的访问权限。

3.2 chmod

文件所有者可通过chmod工具来控制用户的访问权限,如下所示:

常用参数:

1) -f: 强制更改。

2) -R: 递归更改。

其中a代表所有用户,+代表增加,x代表可执行权限,s代表执行特权。相同的,u代表文件所有者,g代表组用户,o代表其他用户,-代表删除权限。当执行一个具有setuid权限的文件时,文件的执行过程将具有文件所有者的特权。setgid权限表示在文件执行过程中具有该文件所属组的特权。

对目录的执行权限定义为可使用cd转到该目录下,并可查看目录下具有读取权限的文件。

4. 链接

4.1 硬链接

链接表示指向文件的指针,当使用vim、touch、cp等方式创建文件时,对应目录下便产生一个指向该文件的指针。文件的硬链接以另一个文件形式出现在文件结构中,若文件与其链接出现在同一个目录下,那么该文件与链接的名字必须不同。

使用ln可以为已经存在的文件创建硬链接,如下所示:

ln工具为已存在的文件创建了附加的指针,而不是创建副本。所有链接文件的属性信息和内容都相同。

4.2 符号链接

符号链接或称为软链接,硬链接是指向文件的指针,符号链接是间接指向文件的指针(即指向文件硬链接的指针)。符号链接是基于文件硬链接的局限性而引入的,如无法创建目录的硬链接,文件的所有硬链接都必须在同一个文件系统中。

ln带-s选项即可创建一个符号链接,如下所示: