第5章目录和文件的操作[内容简介]本章主要介绍目录和文件的概念以及操作。在Linux系统中,掌握目录和文件的基本概念,理解文件的组织结构,这对于从整体上了解Linux系统的概貌,研究Linux系统的细节,进而有效地使用Linux系统是很有帮助的。目录和文件命令是Linux系统中重要的命令之一,种类不但比DOS系统多,而且功能也比DOS系统强大。[学习内容]目录和文件的概念;目录和文件的访问权限;目录和文件的操作。[学习重点]目录和文件访问权限的设置;目录和的文件的操作。[学习目标]了解目录和文件的概念;熟练地设置目录和文件的访问权限;熟练掌握目录和文件的操作。[学习建议]在本章的学习中,要注意与DOS命令的区别,要把学习的重点放在操作上,通过操作掌握命令的应用。另外,Linux系统中的目录和文件有自己独特的概念,要与DOS系统作区别。5.1目录的基本概念在计算机系统中存有大量的文件,如何有效的组织与管理它们,并为用户提供一个使用方便的接口是文件系统的一大任务。Linux系统以目录的方式来组织和管理系统中的所有文件。【案例简介】通过操作显示目录命令,观察Linux系统的目录树结构。在系统终端的提示符后输入命令ls-aF。【操作步骤】(1)启动系统终端,输入如下命令:ls-aF(2)命令执行结果如下所示所示:[root@localhost~]#cd..[root@localhost/]#ls-aF./boot/initrd/media/proc/srv/usr/../dev/lib/mnt/root/sys/var/.autofscketc/lost+found/mycomputer/sbin/tftpboot/bin/home/.mcop/opt/selinux/tmp/[root@localhost/]#【案例小结】在ls命令后加上参数-a,表示显示所有的目录和文件,包括隐含文件。加-F表示显示该文件的类型。【知识要点】5.1.1树型目录结构Linux系统是采用树型目录结构来管理文件的。也就是说,整个文件系统有一个“根”(root),然后在根上分“杈”(directory),任何一个分杈上都可以再分杈,杈上也可以长出“叶子”。“根”和“杈”在Linux系统中被称为“目录”或“文件夹”。而“叶子”则是一个个的文件。案例运行结果所展示的就是树型目录结构的全景,这种结构的文件系统效率比较高。Linux系统中,目录也是文件的一种形式。通过目录将系统中所有的文件分级、分层组织在一起,就形成了Linux文件系统的树型层次结构。以根目录为起点,所有其它的目录都由根目录派生而来。用户可以浏览整个系统,可以进入任何一个已授权进入的目录,访问那里的文件。树型目录结构提供了管理文件的一个方便途径。每个目录里面都包含文件。用户可以为自己的文件创建自己的目录,也可以把一个目录下的文件移动或复制到另一目录下。此外,不但能够移动整个目录,而且还能和系统中的其它用户共享目录和文件。也就是说。用户能够方便地从一个目录切换到另一个目录,可以设置目录和文件的管理权限,以便允许或拒绝其它人进行访问。文件目录结构的相互关联性使分享数据变得十分容易,几个用户可以访问同一个文件,因为Linux系统允许用户设置文件的共享程度。需要说明的是,根目录(系统目录)是Linux系统中的特殊目录。Linux是一个多用户系统,操作系统本身的驻留程序存放在以根目录开始的专用目录中。如图5.1所示的是Linux系统树型目录结构。Linux系统的树型目录结构从图5.1可以看出,每个用户都有自己的个人主目录,用来存放属于自己的个人文件。用户的个人目录一般放在系统的目录/home下,并以目录所有者的名字来命名。例如,yang的个人目录是/home/yang,属于它的所有文件,如程序、文档、数据文件等都存放在该目录中。5.1.2根目录和子目录实际上,各个目录结点“之下”都会有一些文件和子目录。并且,系统在建立每一个目录时,都会自动为它设定两个目录文件,一个是“.”,代表该目录自己,另一个是“..”,代表该目录的父目录,对于根目录,“.”和“..”都代表其自己。从图5.1中还可以看到,在Linux树型目录结构中,根目录的第一级子目录是:bin、boot、dev、etc、home、lib、1ost+found、mnt、proc、root、sbin、temp、usr、var等。下面介绍这些主要的子目录。1./binbin是二进制(binaries)的缩写。许多基本的系统程序都驻留在/bin目录中,用下列命令可以列出该目录下的文件:ls–F/bin其中包含许多我们所熟悉的命令,如cp、ls和mv等。在某种意义上说,这些命令都是程序。例如,键入cp命令时,系统就运行程序/bin/cp。2./boot该目录用于存放供lilo使用的一些文件。3./dev用1s-F命令可以列出/dev目录中的内容。该目录下是一些称为设备驱动程序的特殊文件,用于访问系统资源或设备,如软盘、硬盘、CD-ROM、调制解调器、系统内存等。有了这些文件,用户可以像访问普通文件一样方便地访问系统中的物理设备。例如,当用户要从一个文件中读数据时,可以通过调用/dev/mouse文件从鼠标器读取输入信息。在/dev目录下,各种设备所对应的特殊文件以一定的规则命名。例如,/dev/fd0文件指第一个软驱,/dev/fdl指第二个软驱,/dev/hda指第一个硬盘,而/dev/hdal指的是/dev/hda的第一个分区,如此类推。4./etc包含系统管理所需要的大量配置文件和子目录,例如口令文件/etc/passwd、系统初始化脚本文件/etc/rc等。该目录是系统中最重要的目录之一。5./home包含所有用户的个人主目录。通常,用户的个人主目录以它的名字来命名,例如/home/yang是用户yang的个人目录。在新安装的Linux系统中,/home目录中可能没有任何用户。6./lib该目录包含动态链接共享库的文件映象,这些文件为众多程序提供了共享代码。使用库文件,可以缩小可执行文件的尺寸,节省系统空间。7./lost+found这是一个空目录,只有当文件系统发生故障时,才用来存放找不到正确存储位置的文件。8./mnt用户可以在该目录下临时挂装其它文件系统,如在使用CD-ROM时,就要把CD-ROM文件挂装在该目录下。9./proc这是Linux系统提供的一个“虚拟文件系统”,其中的文件都存放在内存中,而不是存放在磁盘中。它们指向在系统中正在运行的各个进程,以便用户可以随时访问程序的运行信息。10./root超级用户的主目录。11./sbin专门用来存储系统管理员使用的可执行文件,如mount、fack等等。12./tmp程序执行时会产生一些临时信息,系统把这些临时信息存放在一个暂时文件中,这个临时文件就放在/tmp目录下。13./usr这是一个非常重要的目录,它包括许多子目录。有些子目录用来存放系统的配置文件和重要的大型软件包程序。前面讨论到的各目录对系统的操作来说是最基本的,而在/usr中许多内容是可以任选的。如果没有/usr目录,系统中将只有cp、1s等程序,这样的系统会非常难用。14./var该目录用来容纳大小经常发生变化或打算进一步扩充的目录或文件。例如,文件/var/adm中包含着系统管理员感兴趣的内容,特别是系统日志,它记录了系统的所有错误或问题。5.1.3工作目录、用户主目录与路径如前所述,目录是Linux系统中的一种特殊文件。为更好地使用目录,现介绍有关目录的一些基本概念。1.工作目录与用户主目录从逻辑上讲,用户在登录到Linux系统之后,每时每刻都处在某个目录之中,此目录被称为工作目录或当前目录(WorkingDirectory),工作目录是可以随时改变的。用户初始登录到系统中时,就进入其主目录(HomeDirectory),这时的主目录就成为其工作目录。工作目录用“.”表示,其父目录用“..”表示。用户主目录是系统管理员增加用户时建立起来的(以后也可以改变),每个用户都有自己的主目录,不同用户的主目录一般互不相同。目录层次建立好之后,用户就可以把有关的文件放到相应的目录中,从而实现对文件的组织。2.路径(Path)顾名思义,路径是指从树型目录中的某个目录层次到某个文件的一条道路。此路径的主要构成是目录名称,中间用“/”分开。任一文件在文件系统中的位置都是由相应的路径决定的。用户在对文件进行访问时,要给出文件所在的路径。路径又分相对路径和绝对路径。绝对路径是指从“根”开始的路径,也称为完全路径;相对路径是从用户工作目录开始的路径。应该注意的是,在树型目录结构中到某一确定文件的绝对路径和相对路径均只有一条。绝对路径是确定不变的,而相对路径则随着用户工作目录的变化而不断变化。这一概念清晰了,对于以后使用某些命令如cp和tar等大有好处。用户要访问一个文件时,可以通过路径名来引用。并且可以根据要访问的文件与用户工作目录的相对位置来引用它,而不需要列出这个文件的完整的路径名。【技能训练】训练内容显示各子目录的详细信息。训练步骤(1)启动系统终端,输入如下命令:ls-al(2)命令执行结果如下所示:[root@localhost/]#ls-al总用量288drwxr-xr-x25rootroot40962月1913:01.drwxr-xr-x25rootroot40962月1913:01..-rw-r--r--1rootroot02月1913:01.autofsckdrwxr-xr-x2rootroot40962月214:49bindrwxr-xr-x3rootroot40962月214:53boot.............5.2文件系统的基本概念Linux系统中的文件概念和使用方式都沿袭了UNIX操作系统,而DOS系统又有很多概念是从UNIX中学来的,因而可以借鉴UNIX和DOS操作系统的一些概念来理解Linux系统中的目录和文件的概念。Linux系统中的一个显著特点,就是能够支持相当多的文件系统。【案例简介】通过操作文件链接的命令,学习文件系统的概念。1.用命令cat创建一个名为lianjie的文件,并用ls命令确认。2.用命令ls-li检查lianjie文件索引点号和链接数。3.用命令ln为文件lianjie创建名为lianjie1的链接,并确认。4.用命令ls-li检查lianjie1文件索引点号和链接数。【操作步骤】1.(1)启动系统终端,分别输入如下命令:catlianjiels(2)命令执行结果如下所示:[root@localhost~]#catlianjie12334[root@localhost~]#lsanaconda-ks.cfginstall.logjinchengmulushuchuDesktopinstall.log.sysloglianjiePictures抓图1.jpg2.(1)启动系统终端,输入如下命令:ls-lilianjie(2)命令执行结果如下所示:[root@localhost~]#ls-lilianjie192133-rw-r--r--1rootroot52月719:34lianjie3.(1)启动系统终端,输入如下命令:lnlianjielianjie1(2)命令执行结果如下所示:[root@localhost~]#lnlianjielianjie1[root@localhost~]#lsanaconda-ks.cfginstall.logjinchenglianjie1Pictures抓图1.jpgDesktopinstall.log.sysloglianjiemulushuchu4.(1)启动系统终端,输入如下命令:ls-lilianjie1(2)命令执行结果如下所示:[root@localhost~]#ls-lilianjie1192133-rw-r--r--2rootroot52月719:34lianjie15.2.1文件系统的组成如果从文件系统所包含的内容来看