第九课 文件与目录操作
用户的数据和程序大多以文件的形式保存。用户使用Linux系统的过程中,需要经常
对文件和目录进行操作。本章讲述了文件与目录的基本概念,有关文件和目录操作的命
令以及如何在Linux环境下运行DOS命令。
文件与目录的基本概念
文件与文件名
在多数操作系统中都有文件的概念。文件是Linux用来存储信息的基本结构,它是被
命名(称为文件名)的存储在某种介质(如磁盘、光盘和磁带等)上的一组信息的集合
。Linux文件均为无结构的字符流形式。文件名是文件的标识,它由字母、数字、下划线
和圆点组成的字符串来构成。用户应该选择有意义的文件名。Linux要求文件名的长度限
制在255个字符以内。
为了便于管理和识别,用户可以把扩展名作为文件名的一部分。圆点用于区分文件
名和扩展名。扩展名对于将文件分类是十分有用的。用户可能对某些大众已接纳的标准
扩展名比较熟悉,例如,C语言编写的源代码文件总是具有C的扩展名。用户可以根据自
己的需要,随意加入自己的文件扩展名。
以下例子都是有效的Linux文件名。
preface
chapter1.txt
xu.c
xu.bak
文件的类型
Linux系统中有三种基本的文件类型:普通文件、目录文件和设备文件。
1.普通文件普通文件是用户最经常面对的文件。它又分为文本文件和二进制文件。
1)文本文件:这类文件以文本的ASCII码形式存储在计算机中。它是以"行"为基本结
构的一种信息组织和存储方式。
2)二进制文件:这类文件以文本的二进制形式存储在计算机中,用户一般不能直接
读懂它们,只有通过相应的软件才能将其显示出来。二进制文件一般是可执行程序、图
形、图像、声音等等。
2.目录文件设计目录文件的主要目的是用于管理和组织系统中的大量文件。它存储
一组相关文件的位置、大小等与文件有关的信息。目录文件往往简称为目录。
3.设备文件设备文件是Linux系统很重要的一个特色。Linux系统把每一个I/O设备都
看成一个文件,与普通文件一样处理,这样可以使文件与设备的操作尽可能统一。从用
户的角度来看,对I/O设备的使用和一般文件的使用一样,不必了解I/O设备的细节。设
备文件可以细分为块设备文件和字符设备文件。前者的存取是以一个个字符块为单位的
,后者则是以单个字符为单位的。
目录
树型目录结构
在计算机系统中存有大量的文件,如何有效的组织与管理它们,并为用户提供一个
使用方便的接口是文件系统的一大任务。Linux系统以文件目录的方式来组织和管理系统
中的所有文件。所谓文件目录就是将所有文件的说明信息采用树型结构组织起来--即我
们常说的目录。也就是说,整个文件系统有一个"根"(root),然后在根上分"杈"(di
rectory),任何一个分杈上都可以再分杈,杈上也可以长出"叶子"。"根"和"杈"在Lin
ux中被称为是"目录"或"文件夹"。而"叶子"则是一个个的文件。实践证明,此种结构的
文件系统效率比较高。
如前所述,目录也是一种类型的文件。Linux系统通过目录将系统中所有的文件分级
、分层组织在一起,形成了Linux文件系统的树型层次结构。以根目录为起点,所有其他
的目录都由根目录派生而来。一个典型的Linux系统的树型目录结构如图3.1所示。用户
可以浏览整个系统,可以进入任何一个已授权进入的目录,访问那里的文件。
上图中,我们只给出了目录结点名称,而没有给出各个目录"之下"的每一个文件。
实际上,各个目录结点"之下"都会有一些文件和子目录。并且,系统在建立每一个目录
时,都会自动为它设定两个目录文件,一个是".",代表该目录自己,另一个是"..",代
表该目录的父目录,对于根目录,"."和".."都代表其自己。
Linux目录提供了管理文件的一个方便途径。每个目录里面都包含文件。用户可以为
自己的文件创建自己的目录,也可以把一个目录下的文件移动或复制到另一目录下,而
且能移动整个目录,并且和系统中的其他用户共享目录和文件。也就是说。我们能够方
便地从一个目录切换到另一个目录,而且可以设置目录和文件的管理权限,以便允许或
拒绝其他人对其进行访问。同时文件目录结构的相互关联性使分享数据变得十分容易,
几个用户可以访问同一个文件。因此允许用户设置文件的共享程度。
需要说明的是,根目录是Linux系统中的特殊目录。Linux是一个多用户系统,操作
系统本身的驻留程序存放在以根目录开始的专用目录中,有时被指定为系统目录。在图
3.1中那些根目录下的目录就是系统目录。
工作目录、用户主目录与路径
如前所述,目录是Linux系统组织文件的一种特殊文件。为使用户更好地使用目录,
我们介绍有关目录的一些基本概念。
I.工作目录与用户主目录
从逻辑上讲,用户在登录到Linux系统中之后,每时每刻都"处在"某个目录之中,此
目录被称作工作目录或当前目录(Working Directory)。工作目录是可以随时改变的。
用户初始登录到系统中时,其主目录(Home Directory)就成为其工作目录。工作目录
用"."表示,其父目录用".."表示。
用户主目录是系统管理员增加用户时建立起来的(以后也可以改变),每个用户都
有自己的主目录,不同用户的主目录一般互不相同。
用户刚登录到系统中时,其工作目录便是该用户主目录,通常与用户的登录名相同
。
用户可以通过一个"~"字符来引用自己的主目录。
例如命令
/home/WANG$ cat ~/class/software_1
和下面的命令
/home/WANG$ cat /home/WANG/class/software_1意义相同。shell将用用户主目录
名来替换"~"字符。目录层次建立好之后,用户就可以把有关的文件放到相应的目录中,
从而实现对文件的组织。
对文件进行访问时,需要用到"路径"(Path)的概念。
II.路径
顾名思义,路径是指从树型目录中的某个目录层次到某个文件的一条道路。此路径
的主要构成是目录名称,中间用"/"分开。任一文件在文件系统中的位置都是由相应的路
径决定的。
用户在对文件进行访问时,要给出文件所在的路径。路径又分相对路径和绝对路径
。绝对路径是指从"根"开始的路径,也称为完全路径;相对路径是从用户工作目录开始
的路径。
应该注意到,在树型目录结构中到某一确定文件的绝对路径和相对路径均只有一条
。绝对路径是确定不变的,而相对路径则随着用户工作目录的变化而不断变化。这一点
对于我们以后使用某些命令如cp和tar等大有好处。
用户要访问一个文件时,可以通过路径名来引用。并且可以根据要访问的文件与用
户工作目录的相对位置来引用它,而不需要列出这个文件的完整的路径名。例如,用户
WANG有一个名为class的目录,该目录中有两个文件:software_1和hardware_1。若用户
WANG想显示出其class目录中的名为software_1的文件,可以使用下列命令:
/home/WANG$ cat /home/WANG/class/software_1
用户也可以根据文件software_1与当前工作目录的相对位置来引用该文件。这时命
令为:
/home/WANG$ cat class/software_1