Python google 程序员 mysql HTML5 开源 Windows shell Ubuntu linux nginx linux命令 微软 php Firefox Android java centos wordpress apache

linux系统文件概念和文件类型

当使用Linux命令对文件进行操作时,就可访问存储在一个结构化环境中的信息。所有这些信息都存放在一个分层的结构中,可以方便且有条不紊地管理数据。重要的是,不仅应学会如何访问这些数据,而且应学会如何控制对信息的访问。对文件与目录进行管理和维护可能是每个用户最经常做的工作。

文件系统概念
磁盘上的文件系统是层次结构的,由若干目录和其子目录组成,最上层的目录称为根(root)目录,用"/"表示。

1. 文件与目录的定义

  • 文件系统:它是磁盘上有特定格式的一片区域,操作系统通过文件系统可以方便地查询和访问其中所包含的磁盘块。
  • 文件:是指文件系统中存储数据的一个命名的对象。一个文件可以是空文件(即没有包含用户数据),但是它仍然为操作系统提供了其他信息。
  • 目录:其中包含许多文件项目的一类特殊文件。目录支持文件系统的层次结构。文件系统中的每个文件都登记在一个(或多个)目录中。
  • 子目录:被包含在另一个目录中的目录。包含子目录的目录称为父目录。除了root目录以外,所有的目录都是子目录,并且有它们的父目录。root目录就作为自己的父目录。
  • 文件名:用来标志文件的字符串,它保存在一个目录文件项中。
  • 路径名:由斜线(/)字符结合在一起的一个或多个文件名的集合。路径名指定一个文件在分层树形结构(即文件系统)中的位置。查看文件系统要使用一个参考点目录,它就称为当前工作目录。
  • 用15命令可以列出当前工作目录中包含的文件和子目录的名字,这是默认方式。
  • 文件名按照ASCH码顺序列出:以数字开头的文件名列在前面,然后是以大写字母开头的文件名,最后是以小写字母开头的文件名。

2. 文件结构
文件是Linux操作系统处理信息的基本单位。所有软件都组织成文件。
文件的成分:无论文件是一个程序、一个文档、一个数据库,还是一个目录,操作系统都会赋予它如下所示的同样的结构。
①索引节点:又称为I节点,是在文件系统结构中,包含相应文件信息的一个记录,这些信息包括文件权限、文件主、文件大小等。
②数据:文件的实际内容,它可以是空的,也可以非常大,并且有自己的结构。

命名文件:文件名保存在目录文件中。Linux的文件名几乎可以由ASCⅡ字符的任意组合构成,文件名最长可多达255个字符(某些较老的文件系统类型把文件名长度限制为14个字符)。下面的惯例会使你更加方便地管理文件。
①文件名应尽量简单,并且应反映出文件的内容。文件名几乎没有必要超过14个字符。
②除斜线(/)和空字符(as口I字符\0)以外,文件名可以包含任意的ASCⅡ字符,因为那两个字符被核心当做表示路径名的特殊字符来解释。
③习惯上允许使用下线符(_)和句点(.)来区别文件的类型,使文件名更易读,但是应避免使用以下字符,因为对系统的shen来说,它们有特殊的含义。这些字符是:
; | < > ` “ ‘ $ ! % & * ? \ ( ) [ ]
此外,文件名应避免使用空格、制表符或其他控制字符。
④同类文件应使用同样的后缀或扩展名。
⑤Linux系统区分文件名的大小写,如名为letter的文件与名为Letter的文件不是同一个文件。
⑥以圆点(.)开头的文件名是隐含文件,在默认方式下,使用15命令并不能把它们在屏幕上显示出来。

文件类型操作系统支持以下文件类型:普通文件、目录文件、设备文件及符号链接文件。

普通文件
普通文件也称为常规文件,包含各种长度的字符串。核心对这些数据没有进行结构化,只是作为有序的字符序列把它提交给应用程序。应用程序自己组织和解释这些数据,通常把它们归并为下述类型之一。

  • 文本文件:它由ASCⅡ字符构成。例如,信件、报告和称为脚本(script)的命令文本文件,后者由Shell解释执行。
  • 数据文件:它由来自应用程序的数字型和文本型数据构成。例如,电子表格、数据库及字处理文档。
  • 可执行的二进制程序:它由机器指令和数据构成,例如,已经学过的系统命令。命令文本文件也是可执行的。

可以使用file命令来确定指定文件的类型。该命令可以将任意多个文件名当做参数,其一般使用格式是:
file文件名【文件名…】

目录文件
目录文件是一种特别文件,利用它可以构成文件系统的分层树状结构。如同普通文件那样,目录文件也包含数据,但目录文件与普通文件的差别是:核心对这些数据进行结构化处理,即它是由成对的“Ⅰ节点号/文件名”构成的列表。
(1)Ⅰ节点号是检索I节点表的下标,Ⅰ节点中存放有文件的状态信息。
(2)文件名是给一个文件分配的文本形式的字符串,用来标记该文件。在一个指定的目录中,任何两项都不能有同样的名字。
每个目录的第一项都表示目录本身,并以“点(.)”作为它的文件名。每个目录的第二项的名字是“点点(..)",表示该目录的父目录。
应记住,以“.”开头的文件名表示隐含文件,使用带-a选项的ls命令可以列出它们。
当把文件添加到一个目录中时,该目录的尺寸会增大,以便容纳新文件名。当删除文件时,目录的尺寸并不减小,而是核心对该目录项做上特殊标记,以便下次添加一个文件时重新使用它。ls命令不会列出这些未被使用的项。
例如,利用以一F命令可以显示当前目录的内容:
# ls -ai
应注意,所列出的前两项分别表示当前目录和其父目录。请查看是否有其他的隐含文件。如果使用不带-a选项的ls命令,则隐含文件不再被显示出来。如果使用不带 –i 选项的ls命令,则文件的I节点号不再出现。
使用ls –d 命令,则只能看到当前目录下的各子目录名。

设备文件
设备文件是一种特别文件,除了在其文件Ⅰ节点中存放有属性信息外,它们不包含任何数据。系统利用它们来标记各个设备驱动器,核心使用它们与硬件设备通信。有两类特别设备文件,它们对应不同类型的设备驱动器。
(1)字符设备—最常用的设备类型,允许I/O传送任意大小的数据,取决于设备本身的容量。使用这种接口的设备包括终端、打印机及鼠标。
(2)块设备—这类设备利用核心缓冲区的自动缓存机制。缓冲区进行I/O传送总是以KB为单位。使用这种接口的设备包括硬盘、软盘和RAM盘。
设备文件的一个示例是当前正在使用的终端文件。tty命令可以显示出这个文件名,例如:
# tty
/dev/tty01
通常,设备文件存放在/dev目录之下。

符号链接文件
符号链接文件是一种特殊文件,提供对其他文件的参照。它们存放的数据是文件系统中通向文件的路径。当使用符号链接文件时,核心自动访问所保存的这个路径。

延伸阅读

评论