从实践中学嵌入式Linux操作系统
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.6 Linux文件及文件系统

在安装完Linux之后,首先对Linux中一些非常重要的概念进行简要介绍,以便进一步学习使用Linux。

1.6.1 文件类型及文件属性

1.文件类型

Linux中的文件类型与Windows有显著的区别,其中最显著的区别在于Linux对目录和设备都当做文件进行处理,这样就简化了对各种不同类型设备的处理,提高了效率。Linux中主要的文件类型分为4种:普通文件、目录文件、链接文件和设备文件。

1)普通文件

普通文件如同Windows中的文件一样,是用户日常使用最多的文件,包括文本文件、Shell脚本、二进制的可执行程序和各种类型的数据。

2)目录文件

在Linux中,目录也是文件,它们包含文件名和子目录名及指向那些文件和子目录的指针。目录文件是Linux中存储文件名的唯一地方,当把文件和目录相对应起来时,也就是用指针将其链接起来之后,就构成了目录文件。因此,在对目录文件进行操作时,一般不涉及对文件内容的操作,而只是对目录名和文件名的对应关系进行了操作。

另外,在Linux系统中的每个文件都被赋予一个唯一的数值,而这个数值被称作索引节点。索引节点存储在一个称作索引节点表(Inode Table)中,该表在磁盘格式化时被分配。每个实际的磁盘或分区都有其自己的索引节点表。一个索引节点包含文件的所有信息,包括磁盘上数据的地址和文件类型。

Linux文件系统把索引节点号1赋给根目录,这就是Linux的根目录文件在磁盘上的地址。根目录文件包括文件名、目录名及它们各自的索引节点号的列表,Linux可以通过查找从根目录开始的一个目录链来找到系统中的任何文件。

Linux通过上下链接目录文件系统来实现对整个文件系统的操作。例如,把文件从一个磁盘目录移到另一个磁盘的目录时(实际上是通过读取索引节点表来检测这种行动),这时,原先文件的磁盘索引号删除,而在新磁盘上建立相应的索引节点。它们之间的相应关系如图1.22所示。

图1.22 目录文件与索引节点的关系

3)链接文件

链接文件类似于Windows中的“快捷方式”,但是它的功能更为强大。它可以实现对不同的目录、文件系统甚至是不同的机器上的文件直接访问,并且不必重新占用磁盘空间。

4)设备文件

Linux把设备都当做文件一样来进行操作,这样就大大方便了用户的使用(在后面的Linux编程中可以更为明显地看出)。在Linux下,与设备相关的文件一般都在/dev目录下,它包括两种,一种是块设备文件,另一种是字符设备文件。

  • 块设备文件是指数据的读/写设备,它们是以块(如由柱面和扇区编址的块)为单位的设备,最简单的如硬盘(/dev/hda1)等。
  • 字符设备主要是指串行端口的接口设备。

2.文件属性

Linux中的文件属性如图1.23所示。

图1.23 Linux文件属性表示方法

首先,Linux中文件的拥有者可以把文件的访问属性设成3种不同的访问权限:可读(r)、可写(w)和可执行(x)。文件又有3个不同的用户级别:文件拥有者(u)、所属的用户组(g)和系统中的其他用户(o)。

第一个字符显示文件的类型如下:

  • “-”表示普通文件。
  • “d”表示目录文件。
  • “l”表示链接文件。
  • “c”表示字符设备。
  • “b”表示块设备。
  • “p”表示命名管道,如FIFO(First In First Out,先进先出)文件。
  • “f”表示堆栈文件,如LIFO(Last In First Out,后进先出)文件。第一个字符之后有3个三位字符组:
  • 第一个三位字符组表示文件拥有者(u)对该文件的权限。
  • 第二个三位字符组表示文件用户组(g)对该文件的权限。
  • 第三个三位字符组表示系统其他用户(o)对该文件的权限。
  • 若该用户组对此没有权限,一般显示“-”字符。

1.6.2 文件系统类型介绍

1.Ext2和Ext3

Ext3是现在Linux(包括Red Hat,Mandrake下)常见的默认文件系统,它是Ext2的升级版本。正如Red Hat公司的首席核心开发人员Michael K.Johnson所说,从Ext2转换到Ext3主要有以下4个理由:可用性、数据完整性、速度及易于转化。Ext3中采用了日志式的管理机制,它使文件系统具有很强的快速恢复能力,并且由于从Ext2转换到Ext3无须进行格式化,因此,更加推进了Ext3文件系统的推广。

2.SWAP文件系统

该文件系统是Linux中作为交换分区使用的。在安装Linux时,交换分区是必须建立的,并且它所采用的文件系统类型必须是SWAP而没有其他选择。

3.VFAT文件系统

Linux中,把DOS中采用的FAT文件系统(包括FAT12、FAT16和FAT32)都称为VFAT文件系统。

4.NFS文件系统

NFS文件系统是指网络文件系统,这种文件系统也是Linux的独到之处。它可以很方便地在局域网内实现文件共享,并且使多台主机共享同一主机上的文件系统。而且NFS文件系统访问速度快、稳定性高,已经得到了广泛的应用,尤其是在嵌入式领域,使用NFS文件系统可以很方便地实现文件本地修改,从而免去了一次次读/写Flash的忧虑。

5.ISO 9660文件系统

这是光盘所使用的文件系统,在Linux中对光盘已有了很好的支持,它不仅可以提供对光盘的读/写,还可以实现对光盘的刻录。

1.6.3 Linux目录结构

Linux的目录结构如图1.24所示。下面以Red Hat Enterprise 4 AS为例,详细列出了Linux文件系统中各主要目录的存放内容,如表1.1所示。

表1.1 Linux文件系统目录结构

图1.24 Linux目录结构