- 黑客攻防從入門到精通:命令版(第2版)
- 武新華 李書梅 孟繁華
- 3718字
- 2020-06-15 18:43:05
2.3 全面認識DOS系統
在使用DOS時,還會經常聽到MS-DOS與PC-DOS,對初學者來說,可以認為二者沒有區別。事實上,MS-DOS由Microsoft(微軟)公司出品,而PC-DOS則由IBM公司對MS-DOS略加改動而推出。由于微軟公司在計算機業界的壟斷性地位,其產品MS-DOS成為主流操作系統。DOS主要由MSDOS.SYS、IO.SYS和COMMAND.COM這三個基本文件和一些外部命令組成。
2.3.1 DOS系統的功能
DOS系統實際上是一組控制計算機工作的程序,專門用來管理計算機中的各種軟、硬件資源,負責監視和控制計算機的全部工作過程。它不僅向用戶提供了一整套使用計算機系統的命令和方法,還向用戶提供了一套組織和應用磁盤上信息的方法。
DOS系統的功能主要體現在如下5個方面。
1.執行命令和程序(處理器管理)
DOS系統能夠執行DOS命令和運行可執行程序。在DOS環境下(即在DOS提示符下),當用戶鍵入合法的命令和文件名后,DOS就會根據文件的存儲地址到內存或外存上查找用戶所需的程序,并根據用戶的要求使CPU運行之;若未找到所需文件,就會出現出錯信息,并告訴用戶服務。在這里,DOS正是扮演了使用者、計算機、應用程序三者之間的“中間人”。
2.內存管理
DOS系統分配內存空間,保護內存,使任何一個程序所占的內存空間不遭受破壞,同硬件相配合,可以設置一個最佳的操作環境。
3.設備管理
DOS系統為用戶提供使用各種輸入輸出設備(如鍵盤、磁盤、打印機和顯示器等)的操作方法。通過DOS可以方便地實現內存和外存之間的數據傳送和存取。
4.文件管理
DOS系統為用戶提供一種簡便的存取和管理信息方法。通過DOS管理文件目錄,為文件分配磁盤存儲空間,建立、復制、刪除、讀/寫和檢索各類文件等。
5.作業管理
作業是指用戶提交給計算機系統的一個獨立的計算任務,包括源程序、數據和相關命令。作業管理即對用戶提交的諸多作業進行管理,包括作業的組織、控制和調度等。
2.3.2 文件與目錄
文件是存儲于外存儲器中具有名字的一組相關信息集合,在DOS下,所有的程序和數據均以文件形式存入磁盤。自己編制的程序存入磁盤是文件,DOS提供的各種外部命令程序也是文件,執行DOS外部命令就是調用此命令文件的過程。
如果想查看計算機中的文件與目錄(即Windows系統下的文件夾),只需在“命令提示符”窗口中運行dir命令,即可看到相應的文件和目錄,如圖2.3.2-1所示。后面帶有<DIR>的是目錄(文件夾),沒有帶的是文件。還可以在文件和目錄名前面看到文件和目錄的創建時間,以及本盤符的使用空間和剩余空間。

圖2.3.2-1
MS-DOS規定文件名由4個部分組成:[<盤符>][<路徑>]<文件名>[<..擴展名>]。文件由文件名和文件內容組成。文件名由用戶命名或系統指定,用于唯一標識一個文件。
DOS文件名由1~8個字符組成,構成文件名的字符分為如下3類。
● 26個英文字母:a~z或A~Z。
● 10個阿拉伯數字:0~9。
● 一些專用字符:$、#、&、@、!、%、()、{}、-、-。
注意
在文件名中不能使用“<”“>”“\”“//”“[、]”“:”“! ”“+”“=”,以及小于20H的ASCII字符。另外,可根據需要自行命名文件,但不可與DOS命令文件同名。
2.3.3 文件類型與屬性
文件類型是文件根據其用途和內容來分的,分別用不同的擴展名表示。文件擴展名由1~3個ASCII字符組成,有些文件擴展名是系統在一定條件下自動形成的,也有一些是用戶自己定義的,它和文件名之間用“.”分隔(見表2.3.3-1)。
表2.3.3-1 常見文件類型以及文件類型擴展名

對于DOS系統下的所有磁盤文件,根據其特點和性質分為系統、隱含、只讀和存檔等4種不同的屬性。
這4種屬性的作用如下:
1.系統屬性(S)
系統屬性用于表示文件是系統文件還是非系統文件。具有系統屬性的文件,是屬于某些專用系統的文件(如DOS的系統文件io.sys和msdos.sys)。其特點是文件本身被隱藏起來,不能用DOS系統命令列出目錄清單(DIR不加選擇項/a時),也不能刪除、拷貝和更名。如果可執行文件被設置為具有系統屬性,則不能執行。
2.隱含屬性(H)
隱含屬性用于阻止文件在列表時顯示出來。具有隱含屬性的文件,其特點是文件本身被隱藏起來,不能用DOS系統命令列出目錄清單(dir不加選擇項/a時),也不能刪除、拷貝和更名。如果可執行文件被設置為具有隱含屬性后,并不影響其正常執行。使用這種屬性可以對文件進行保密。
3.只讀屬性(R)
只讀屬性用于保護文件不被修改和刪除。具有只讀屬性的文件,其特點是能讀入內存,也能拷貝,但不能用DOS系統命令修改,也不能刪除。可執行文件被設置為具有只讀屬性后,并不影響其正常執行。對于一些重要的文件,可設置為具有只讀屬性,以防止文件被誤刪。
4.存檔屬性(A)
存檔屬性用于表示文件被寫入時是否關閉。如果文件具有這種屬性,則表明文件寫入時被關閉。各種文件生成時,DOS系統均自動將其設置為存檔屬性。改動了的文件也會被自動設置為存檔屬性。只有具有存檔屬性的文件,才可以列目錄清單,執行刪除、修改、更名、拷貝等操作。
為便于管理和使用計算機系統的資源,DOS把計算機的一些常用外部設備當成文件來處理,這些特殊的文件稱為設備文件。設備文件的文件名是DOS為設備命名的專用文件名(又稱設備保留名),因此,用戶在給磁盤文件起名時,應避免使用與DOS設備保留名相同的名字(見表2.3.3-2)。
表2.3.3-2 DOS系統中的保留設備文件名和設置

當然,在給文件命名時,一定要注意如下幾個方面。
1)設備名不能用作文件名。
2)當使用一個設備時,用戶必須保證這個設備實際存在。
3)設備文件名可以出現在DOS命令中,用以代替文件名。
4)使用的設備文件名后面可加上“:”,其效果與不加冒號的文件名一定是一個設備,例如“A:”“B:”“C:”“CON”等。
2.3.4 目錄與磁盤
在DOS系統中,當前目錄就是提示符所顯示的目錄,如提示符是C:\,表示當前目錄即C盤的根目錄,這個\(反斜扛)就表示根目錄。如果要更改當前目錄,則可以用cd命令。如輸入“cd Windows”,表示目錄為Windows目錄;當提示符變成C:\Windows時,表示當前目錄變成C盤的Windows目錄,如圖2.3.4-1所示。

圖2.3.4-1
在輸入dir命令之后,就可以顯示Windows目錄中的文件了,這就說明dir命令列出的是當前目錄中的內容,如圖2.3.4-2所示。此外,當輸入可執行文件名時,DOS會在當前目錄中尋找該文件,如果沒有該文件,則會提示錯誤信息。

圖2.3.4-2
在DOS系統中,目錄采用樹形結構,其中“C:”表示最上面的一層目錄,如DOS、Windows、Tools等;而DOS、Windows目錄也有子目錄,如DOS下的TEMP目錄;Windows目錄也有子目錄,如Windows下的SYSTEM目錄。
因此,可以用cd命令來改變當前目錄。輸入“cd Windows”,當前目錄就變成Windows。將當前目錄變為子目錄稱進入該子目錄。如果想進入system子目錄,只要輸入“cd system”命令就可以了,也可以輸入“cd c:\Windows\system”。如果要退出system子目錄,則只要鍵入“cd..”就可以了。
在DOS中,兩點(..)表示當前目錄的上一層目錄,一個點表示當前目錄,這時上一級目錄為父目錄,再輸入“cd..”,就返回到C盤的根目錄。有時,為了不必多次輸入“cd..”,可以直接輸入“cd\”命令,“\”表示根目錄。在子目錄中用dir命令列文件列表時,就可以發現“.”和“..”都算成文件數目,但大小為零。
如果要將當前目錄更換到硬盤的其他分區,則可以輸入盤符,比如更換到D盤,那么就需要輸入“D”命令,現在提示符就變成D:\>,如圖2.3.4-3所示。再輸入dir命令,就可以看到D盤的文件列表,如圖2.3.4-4所示。

圖2.3.4-3

圖2.3.4-4
2.3.5 命令分類與命令格式
DOS的命令格式為:[<盤符>][<路徑>]<命令名>[/<開關>][<參數>]。
各參數說明如下。
● 盤符:表示DOS命令所在的盤符,在DOS中一般省略DOS所在的盤符。
● 路徑:表示DOS命令所在的具體位置(相對應的目錄下),在DOS中一般省略DOS所在的路徑。
● 命令名:表示每一條命令都有一個名字。命令名決定所要執行的功能。命令名是MSDOS命令中不可缺少的部分。
● 參數:在MS-DOS命令中通常需要指定操作的具體對象,即需要在命令名中使用一個或多個參數。例如,顯示文件內容的命令type就要求有一個文件名。如“type readme.txt”中的type是命令名,readme.txt是參數。
有些命令則需要多個參數。例如在用于更改文件名的rename(ren)命令中,就必須包括原來的文件名和新文件名,所以需要兩個參數。如C:\>ren old_zk.dos new_zk.dos,這條命令中有兩個參數,即old_zk.dos和new_zk.dos。執行該命令后,即可將原來的文件名old_zk.dos更改成新文件名new_zk.dos。
還有一些命令(如dir)可以使用參數,也可以不使用參數。而像cls(清除屏幕)這樣的命令則不需要使用任何參數。
● 開關:通常是一個字母或數字,用來進一步指定一條命令實施操作的方式。開關之前要使用斜杠“/”。例如,在dir命令中可使用“/P”命令來分屏顯示文件列表。
內部命令與外部命令在調用格式上沒有區別,不同之處在于:前者的<命令名>是系統規定的保留字,而后者的<命令名>是省略了擴展名的命令文件名。一些常用的指令都歸屬為內部命令,較少用的指令則歸屬于外部命令。DOS之所以要把指令分成外部命令與內部命令,主要是為了節省內存。若將一些不常用的命令常駐在內存中,則會降低內存的使用效率。
內部命令隱藏在DOS的io.sys和msdos.sys兩個文件中,當以DOS方式啟動計算機時,這兩個文件就加載并常駐內存中,使得內部命令隨時可用,如dir、cd、md、copy、ren、type等都屬于內部命令。
外部命令則以檔案的方式存放在磁盤上,調用時才從磁盤上將該文件加載至內存中。換言之,外部命令不是隨時可用,而是要看該文件是否存在于磁盤中,如format、unformat、sys、deletree、undetree、move、xcopy、diskcopy等都屬于外部命令。
當使用者輸入一個DOS命令之后,該命令先交由command.com分析。所以command.com被稱為命令處理器,其功能就是判斷使用者所輸入的命令是內部命令還是外部命令。若是內部命令,則交給io.sys或msdos.sys處理;若是外部命令,則到磁盤上找尋該檔案,即執行該命令。如果找不到,屏幕上將會出現“Bad Command or filename”這樣的錯誤信息。