(转贴)Linux基础知识(4)

来源:互联网 发布:海报打印软件 编辑:程序博客网 时间:2024/04/30 01:23
文件与目录操作
[日期:2005-12-29] 来源: 作者:似水年华 [字体:大 中 小]

文件与目录操作


  用户的数据和程序大多以文件的形式保存。用户使用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设备的细节。设备文件可以细分为块设备文件和字符设备文件。前者的存取是 以一个个字符块为单位的,后者则是以单个字符为单位的。

  显示文件内容
  使用过DOS命令的人都应该知道,我们可以使用type命令来查看一个文件的内容。在Linux下有五个相关的命令,功能各有千秋,不过它们都象type命令一样,只能用来查看文本文件。

  1) cat命令
cat命令是最象type命令的,使用的方法很简单:“cat 文件名”。不过比type命令更强大的是,它可以同时查看多个文件:“cat 文件名一
文件名二”。
  2) more命令
如果文本文件比较长,一屏无法显示完,那么使用cat命令就可能无法看清。这里我们可以简单地使用more来代替cat命令即可。其效果与type
文件名/p类似。使用more命令将一次显示一屏文本,显示满后,停下来,并提示出已显示全部内容的百分比,按空格键就可以看到下一屏。
  3) less命令
less命令的功能几乎和more命令一样,也是按页显示文件,不同之处在于less命令在显示文件时允许用户既可以向前又可以向后翻阅文件。
  ? 向前翻:按b键;
  ? 向后翻:按p键;
  ? 指定位置:输入百分比
  ? 退出:q
  我经常使用more和less,几乎不使用cat查看文件。
  4) head命令
  通过head命令可以仅查看某文件的前几行,格式为:
  head 行数 文件名
  如果未指定行数,则使用默认值10。
  5) tail命令
  与head命令相对应的,我们可以使用tail命令来查看文件尾部的内容。通常用来实时监测某个文件是否被修改,通常用来观察日志。如:
  tail -f maillog
   4. 编辑文件
   Linux中有许多文字编辑工具,其中最常用的应该是vi,这是一个广泛应用于所有UNIX系统的编辑器。它的使用有些特别:
首先,可以使用命令“vi 文件名”打开一个文件。
刚启动的时候,vi处于命令状态,不能够输入任何字符。在这个状态下,可以使用方向键进行移动,而需要输入内容时,你需要输入“i”或“a”命令进入编辑状态。编辑完成后,你需要按下“ESC”键回到命令状态。

在命令状态下,你可以输入“:q!”不存盘退出,输入“:wq”存盘退出。

   目录
   树型目录结构
   在计算机系统中存有大量的文件,如何有效的组织与管理它们,并为用户提供一个使用方便的接口是文件系统的一大任务。Linux系统以文件目录的方式来组织 和管理系统中的所有文件。所谓文件目录就是将所有文件的说明信息采用树型结构组织起来--即我们常说的目录。也就是说,整个文件系统有一个/"根/" (root),然后在根上分/"杈/"(directory),任何一个分杈上都可以再分杈,杈上也可以长出/"叶子/"。/"根/"和/"杈/"在 Linux中被称为是/"目录/"或/"文件夹/"。而/"叶子/"则是一个个的文件。实践证明,此种结构的文件系统效率比较高。

  如前所述,目录也是一种类型的文件。Linux系统通过目录将系统中所有的文件分级、分层组织在一起,形成了Linux文件系统的树型层次结 构。以根目录为起点,所有其他的目录都由根目录派生而来。一个典型的Linux系统的树型目录结构如图3.1所示。用户可以浏览整个系统,可以进入任何一 个已授权进入的目录,访问那里的文件。

  实际上,各个目录结点/"之下/"都会有一些文件和子目录。并且,系统在建立每一个目录时,都会自动为它设定两个目录文件,一个是/"./",代表该目录自己,另一个是/"../",代表该目录的父目录,对于根目录,/"./"和/"../"都代表其自己。

  Linux目录提供了管理文件的一个方便途径。每个目录里面都包含文件。用户可以为自己的文件创建自己的目录,也可以把一个目录下的文件移动 或复制到另一目录下,而且能移动整个目录,并且和系统中的其他用户共享目录和文件。也就是说。我们能够方便地从一个目录切换到另一个目录,而且可以设置目 录和文件的管理权限,以便允许或拒绝其他人对其进行访问。同时文件目录结构的相互关联性使分享数据变得十分容易,几个用户可以访问同一个文件。因此允许用 户设置文件的共享程度。

  需要说明的是,根目录是Linux系统中的特殊目录。Linux是一个多用户系统,操作系统本身的驻留程序存放在以根目录开始的专用目录中,有时被指定为系统目录。
  安装完Linux后,有许许多多的目录,下面我们就说明一些重要的目录:
  /bin:存放着一百多个Linux下常用的命令、工具
  /dev:存放着Linux下所有的设备文件!
  /home:用户主目录,每建一个用户,就会在这里新建一个与用户同名的目录,给该用户一个自己的空间
  /lost+found:顾名思义,一些丢失的文件可能可以在这里找到
  /mnt:外部设备的挂接点,通常用cdrom与floppy两个子目录!它的存在简化了光盘与软盘的使用。你只需在塞入光盘后,运行:mount
/mnt/cdrom,就可以将光盘上的内容Mount到/mnt/cdrom上,你就可以访问了。不过你使用完成后,应该离开该目录,并执行umount
/mnt/cdrom。同样的,软盘就是  mount /mnt/floppy和umount /mnt/floppy了。
  /proc:这其实是一个假的目录,通过这里你可以访问到内存里的内容。
  /sbin:这里存放着系统级的命令与工具
  /usr:通常用来安装各种软件的地方
  /usr/X11R6 X Window目录
  /usr/bin与/usr/sbin 一些后安装的命令与工具
  /usr/include、/usr/lib及/usr/share 则是存放一些共享链接库
  /usr/local 常用来安装新软件
  /usr/src Linux源程序
  /boot:Linux就是从这里启动的
  /etc:这里存放在Linux大部分的配置文件
  /lib:静态链接库
  /root:root用户的主目录,这就是特权之一!
  /var:通常用来存放一些变化中的东西!
  /var/log:存放系统日志
  /var/spool:存放一些邮件、新闻、打印队列等
  另外,要说明的是,在Linux下“当前目录”、“路径”等概念与Windows下是一样的。
  工作目录、用户主目录与路径
   为使用户更好地使用目录,我们介绍有关目录的一些基本概念。
   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