Windows和它的父亲.三

发表于:2007-07-13来源:作者:点击数: 标签:
[本站原创] [连载教程系列] 《Windows和它的父亲》关于DOS第二章 第一节 第二章 文件系统和命令系统 第一节 DOS的文件系统 DOS有一套完备、严谨的文件系统。其实,这只是DOS提供给用户的管理信息的方法,实质上是用来管理信息的。首先要弄清楚某个文件到底代

[本站原创] [连载教程系列] 《Windows和它的父亲》关于DOS  第二章 第一节

  第二章 文件系统和命令系统

  第一节  DOS的文件系统

  DOS有一套完备、严谨的文件系统。其实,这只是DOS提供给用户的管理信息的方法,实质上是用来管理信息的。首先要弄清楚某个文件到底代表的是什么信息,然后再对它进行有目的操作。从文件本身的角度看,每一个文件都有以下几个特性(properties):

  1. 文件主名(File Main Name):人要有自己的名字,每个文件也要有自己的名字。DOS下,文件主名可以由不超过8个字节的(至多8个半角字或4个全角字)字符组成,但是以下几个字符是禁用的:?、*、〈、〉、/、、|、:、;、,、.、+、空格。但是Windows对这个规定做了加工,文件主名的长度扩充至256个字节,取消了空格的禁用。为什么要有禁用呢?因为DOS中这些字符已经有了它的特定含义,关于这一点在以后会有介绍。还有一点要注意:DOS还为每个常用的外部设备都起了名字,这些名字也不能被用作一般文件的主名,列表如下:

设备名 代表的设备 设备名 代表的设备
CON 键盘和显示器 LPT1 这四个是 DOS 提供的“并行接口”, LPT1 上常常连接着打印机,在这一点上很像 PRN 设备

PRN 打印机 LPT2
COM1 这四个是 DOS 提供的“串行接口”, COM1 上常常连接着鼠标器, COM2 上常常连接着调制解调器 LPT3
COM2 LPT4
COM3 AUX 极少用,与 COM1 相似

COM4 NUL DOS 保留的“空”设备

表2-1-1 设备名表

 

  2. 文件扩展名(File Extension Name):就像人为了标明自己的身份而穿上不同的工作服一样,文件光有文件名还不够,还要有一个不超过3个字符的'扩展名'以标明该文件的用途(Windows中长度要求放宽到与文件主名之和不超过256个字节)。文件的扩展名是区分文件类型的重要依据。一些常用的文件扩展名列表如下:

  

扩展名 文件类型 扩展名 文件类型 扩展名 文件类型
EXE 程序文件 TXT 文本文件 BAK 后备文件
COM 命令文件 以上这些文件由常用的编辑系统建立 SYS 系统文件
BAT 批处理文件 WAV 波形声音

  文件

以上这些文件由系统
建立、使用和删除
以上三种文件是 DOS 的
外部命令,可以直接执行
MID MIDI 文件 HTM(L) 网页文件
AVI 影像文件 这种文件中存储着网页信息
DOC Word 文档 * MP3 MP3 格式
声音文件
ARJ ARJ 压缩包 ***
WPS WPS 文档 以上这些文件
存储声音信息
ZIP ZIP 压缩包
CED CCED 文档 TMP 临时文件 ** 以上这些文件是压缩包

表2-1-2 常用扩展名表

  *文档是文件的一种,它是由用户编辑的各种文件;

  **临时文件的扩展名也可能是T01、%A%…;

  ***压缩包是这样一类文件:许多文件由压缩软件压缩后存储在一个文件中,这种文件就叫做压缩包。它是把压缩前的文件恢复的信息源,所以要保证它的完好。

  通常我们把文件主名和文件扩展名统称为文件名(File Name),用“文件主名.文件扩展名”的形式写出,比如一个文件的文件主名是MYFILE,文件扩展名是EXT,那么该文件的文件名就是MYFILE.EXT,我们实际是通过文件名来找到它代表的文件的。文件名是文件的最重要的特性,这一点在Windows下是可以完全套用的。

  3. 文件属性(File Attribute):每个文件都可能有四种属性,它们是只读(Read Only)、隐含(Hidden)、系统(System)和归档(Archive)。只读文件不能任意改写和删除;隐含文件不能任意查看;系统文件不能任意改写、删除和查看;归档属性几乎为所有文件所共有,没有什么限制作用。一个文件可以同时具有多种属性,互不冲突。

  4. 文件大小(File Size):文件大小也是文件的一种特性?Yes。文件的大小在DOS下也是有专门的字节来记录的,刚刚建立的文件的大小是0个字节。当然文件大小也是可以修改的,所以文件逻辑大小和实际大小并不一定一致,有些病毒就是通过把文件大小改小来隐藏其罪恶之躯的。文件大小和文件占用磁盘空间有区别,也有联系。文件占用的磁盘空间和磁盘的簇(cluster)的大小有关,假设磁盘最小簇为xKB,文件大小为yKB,则文件占用的磁盘空间为([y÷x]+1)×xKB。

  5. 文件建立日期和时间(File Created Date & Time):任何一个文件,一经建立,DOS便自动把建立时的系统日期和时间写入文件中,这就能确定文件的建立的时间和日期了。那么DOS又是怎么知道系统日期和时间的呢?是DOS控制基本输入输出系统(BIOS)从互补金属氧化物半导体(CMOS)上读取的,它也是可改的。

  文件系统是DOS的核心,也是以后的章节的基础,一定要牢牢掌握。

  第二章 文件系统和命令系统

  第二节  DOS的树形目录管理模式

  文件多了,就有了一个管理的问题。最好是像书柜里的书一样,一类书放在特定的一个抽屉里。DOS为文件也准备了这样的“逻辑抽屉”,只不过在DOS中,它被称为目录(directory)罢了!一张已经格式化的磁盘上,都有一个根目录(Root Directory),好比是一个柜子;在根目录下,又有许多子目录(Sub Directory),就相当于柜子上的抽屉。目录下面可以存储文件,而子目录也是一种特殊的文件,有自己的文件名、建立日期和时间,大小为一个最小磁盘最小簇。所以有人争论说文件还有一种目录属性,我是赞同的。


图2-2-1 DOS的树形目录管理模式示意

  这样,DOS下的文件系统,就形成了这样一种格局:根目录下存储着一些文件和子目录,而子目录下又存储着一些文件更下一级的子目录…这多么像自然界中的树呀!不是吗?根目录就像树干,子目录就像树枝,而树枝又分叉儿。文件就像树叶,长在树干和树枝上。根目录下的子目录称为一级子目录,其下级子目录称为二级子目录,依此类推,但级数是有限制的。那么怎样才能准确无误地找到每一个文件呢?不难。DOS提出了一个路径(path)的概念,在DOS中表达一个文件的定位遵从以下的规则:

  1. 首先确定盘符(drive)。DOS给软盘分配的盘符是A和B,给硬盘分配的盘符是从C开始的若干个字母,给光盘和网络映射盘分配的盘符又在最后一个硬盘盘符以后。弄清文件存在以哪个盘符为代号的盘中,这是第一步。

  2. 其次确定所在的目录。不同级的目录用“\”号隔开,根目录用单独一个“\”号表示。这样说也许有一点儿抽象,举个例子来说。比如一个文件名是Eiyl7xb9.DAT文件在根目录下的Windows子目录下的Java子目录下的Packages子目录下的Data子目录下(吓人吧),它的路径就是“\Windows\Java\Packages\Data”;

  3. 文件的准确定位就要写成“盘符:路径\文件名”的形式。如果上面那个文件存在C盘上,“C: \Windows\Java\Packages\Data\ Eiyl7xb9.DAT”就是这个文件的准确定位。

  4. 每个子目录中都有两个下一级子目录:“.”和“..”,前者代表当前目录(Current Directory) ,也就是这个目录本身;后者代表其所在目录(Location Directory),也叫其父目录(Parent Directory)。比如:“C:\Windows\.”和”C:\Windows”是一回事,“C:\Windows\Java\..”和“C:\Windows”也是一回事。

  5. 为了方便用户,DOS提供了两个通配符(Wildcard Character)“?”和“*”。用它们可以一次指定一批文件。“?”代表一个半角未禁用字符或者空格,“*”代表任意多个未禁用字符或者空格。“?”和“*”既可以用在文件主名中,也可以用在文件扩展名中,但不能用在路径中。比如,所有文件(All the Files)可以用”*.*”来匹配;以M开头的所有文件可以用“M*.*”来匹配;所有的Word文档可以有“*.DOC”来匹配;A1.TXT,A3.TXT,A10.TXT,A100.TXT、A100.EXE和ABC.WAV这6个文件中,前2、3、4、5、6个,可以分别用A?.TXT、A??.TXT、A???.TXT、A???.?X?和A*.*匹配;C盘当前目录的上级目录的所有以GB开始的MIDI文件可以用“C:..\GB*.MID”来匹配。而“C:\Windows\Ja??\Pack*\E*.*”则是非法的。一般用户如果要用一批文件,它们一定会在文件名上有某些共同点,用通配符匹配就特别快捷。DOS高版本和Windows系统规定:若扩展名和“.”省略不写,相当于写了“.*”。

  6. 每个文件都处在一定的目录下,DOS会可以指定一个目录为系统的当前目录,又叫缺省目录(Default Directory)。为什么叫缺省目录呢?因为如果系统处在这个目录下,文件可以不必写出路径,而是直接写文件名。也就是说,系统是在路径前加上缺省目录后才把文件定位的,除非你连盘符都指定了。若系统的缺省目录是“C:\Windows”的话 ,“C:\Windows\ Progman.EXE”写成“Progman.EXE”就行了。而且,长长的“C: \Windows\Java\Packages\Data\ Eiyl7xb9.DAT”也可以简写成“Java\Packages\Data\ Eiyl7xb9.DAT”。注意,“Java”前的“\”也要一起省去!“\Java\Packages\Data\ Eiyl7xb9.DAT”表示当前盘(Current Drive,缺省目录所在的盘)的根目录下的Java子目录下的Packages子目录下的Data子目录下的Eiyl7xb9.DAT文件。

  这就是DOS的树形管理模式。这个管理模式对计算机操作系统界的影响是不可估量的,DOS 2.0版本开始起采用。从此人们摆脱了费时费力的“分辨模块”,可以清清楚楚地把不同性质、种类或归属的文件分别放入不同的子目录内。在不同的子目录下的文件可以同名。这样,就产生了一批“标准”的文件名(当然是不成文的),比如安装文件名一般是SETUP或INSTALL,说明文件一般是README等,从而潜移默化地促进了计算机世界的统一。

  Windows对子目录的概念做了加工,提出了文件夹(File Folder)的概念,文件夹里不仅能放文件,还能放其他计算机资源,使计算机资源的任何一个部分不在一个文件夹内,就是一个文件夹本身,但它的管理模式仍然是树形的,文件定位方式也完全一样,由此可见,DOS对Windows产生了多么深远的影响!

  第二章 文件系统和命令系统

  第三节 DOS的命令系统

  以上两节详细地介绍了DOS的文件系统。那么,我们用户如何来实际地操作文件呢?当然如果从深入的汇编观点来看,文件的建立和管理是极繁琐的。难道每个人都得先学汇编再学DOS吗?不,那只是程序员的事儿。DOS为普通用户准备了一套“命令系统”,用户只需要花一点力气记住一些常用的命令(command),就能简单地完成文件和磁盘管理任务了。


图2-3-1 DOS命令的输入和执行示意

  那么到底什么是DOS的命令呢?要回答这个问题,还是先打开计算机。DOS启动完毕后,系统便会出现一个命令提示符(Command Prompt),图2-3-1举的例子中,“C:\WINDOWS\Desktop>”便是一般会出现的命令提示符,它由两个部分组成,一个是系统的当前目录(C盘的Windows子目录下的Desktop子目录),还有一个是大于号(“>”),后面停着一个闪闪的光标(Cursor),表示用户可以输入命令了。图2-3-1中输入了一个“DIR A:\*.EXE/W”的DOS命令,怎样才算是一条命令输入完了呢?只要按下键盘上的回车(Enter或Return)键就行了。可见,直观地讲,命令就是用户在命令提示符和回车键之间输入的一串字符。

  但是,仅仅给出这种解释,恐怕朋友们不会满意。难道说随便打进去一段字符都能叫做命令?是的。但是,DOS只能识别和执行其中的合法(Correct)命令,对于非法(Bad)命令,它只是冷冰冰地给出一个“Bad command or file name”的提示,便又开始等待输入下一条命令了。

  我们一般地讲DOS命令,当然是指DOS的合法命令。命令有哪些种类,又有怎样的格式呢?先来看看DOS本身的组成再说吧!一张可以启动DOS系统的软盘至少有以下的三个文件:IO.SYS 、MSDOS.SYS和COMMAND.COM。前面两个文件是系统文件,它们中包括基本设备的驱动程序,还为用户提供了一批命令。这一批由系统文件提供的命令直接驻留内存,不需要任何外部文件的支持就能执行,因而被称为内部命令(Internal Command)。内部命令具有强大的文件管理功能,可以基本满足用户的一切文件管理需要。凡是由内部命令不能解决的问题,可以通过程序文件、命令文件和批处理文件这三种COMMAND.COM能解释的可执行文件来实行外部支持,这三种文件就称为DOS的外部命令(External Command)。任何一个软件都是通过外部命令的方式得到执行的,而任何一个非外部命令的文件如果得不到一个外部命令的使用,就永远不会有机会进入内存。所以,编写外部命令和其所用数据文件,就是所谓的”软件开发”,以后会专门讨论。

  命令都有共同的格式。一般地,一个完整的DOS命令分三个部分:

  1. 命令主体(Command Body):当然,这是一个命令的最重要的部分。一个内部命令和一个外部命令文件的文件主名都可以是命令主体。

  2. 命令行参数(Command Line Parameter):命令主体后加一个空格符,就可以加写一些参数提供给命令主体。一般地,命令主体指向的程序会根据不同的参数产生不同的执行结果。比如在图2-3-1中的命令中,“A:\*.EXE”就是命令行参数,DIR命令会根据不同的参数得出不同的显示结果。

  3. 开关(Switch):一个“/”或“-”号后加一个或一串字符,就形成了一个命令的开关。在命令主体和命令行参数都相同的情况下,开关的不同同样会使命令的执行结果不同,在图2-3-1中的命令中,“/W”就是一个开关。开关一般位于命令行参数之后,开关与命令行参数之间、开关与开关之间无须留有空格。

  DOS简洁、明了的命令系统比较符合自然语言习惯,这使得它十分易学易用。在第三、四两章中,我们将熟悉一些常用的DOS命令。因为本专栏的读者朋友们都有一定的DOS基础,所以我会讲一些重点和难点。Windows系统中取消了命令系统,而实行的图标化的操作。但它的本质还是和一条条地执行命令没有什么区别的。

 

原文转自:http://www.ltesting.net