FreeDOS 基礎:從 A 到 Z
我很高興分享我最喜歡的 26 個 FreeDOS 命令。
我家最早的一批計算機中有一台運行著一款名稱為 DOS 的命令行操作系統,即 「 磁碟操作系統 」。我是在 DOS 系統環境中長大的,學會了利用命令行來使我的工作更輕鬆。很多其他的人也是如此。我們非常愛 DOS ,所以在 1994 年 6 月 29 日,我們創建了 FreeDOS 工程。
如果你的 FreeDOS 的初學者,你可能會對如何使用其附帶的不同的命令行程序感到困惑。讓我們從我最喜歡的 26 個 FreeDOS 命令開始吧。要學習更多的信息,在大部分命令的後面添加 /?
選項來獲取更多的信息:
C:>attrib /?
ATTRIB v2.1 - 顯示或更高文件屬性。
版權所有 (c) 1998-2003,遵循 GPL2 協議。
語法:ATTRIB { options | [path][file] | /@[list] }
選項:
+H 設置隱藏屬性。 -H 清除隱藏屬性。
+S 設置系統屬性。 -S 清除系統屬性。
+R 設置只讀屬性。 -R 清除只讀屬性。
+A 設置存檔屬性。 -A 清楚存檔屬性。
/S 處理具體指定路徑中的所有目錄中的文件。
/D 處理帶有通配符的參數的目錄名稱。
/@ 處理文件,文件列在具體指定文件 中 [或 stdin]。
示例:
attrib file -rhs
attrib +a -r dir1 dir2*.dat /s
attrib -hs/sd /@list.txt *.*
A 是 ATTRIB
ATTRIB
程序顯示或更改文件的 屬性 。屬性可以是以下四個值之一:隱藏(H
)、系統 S
)、只讀(R
)、存檔(A
)。
標記為隱藏的文件將不會在目錄列表中顯示。例如,假設你想隱藏一個名稱為 SECRET.TXT
的文件,這樣就不會有人它在那裡。首先,你可以顯示該文件的屬性,以便查看它的當前設置:
C:FILES>attrib secret.txt
[----A] SECRET.TXT
為隱藏這個文件,使用加號(+
)操作符來開啟用隱藏屬性,像這樣:
C:FILES>attrib +h secret.txt
[----A] -> [-H--A] SECRET.TXT
C:FILES>dir
Volume in drive C is FREEDOS2022
Volume Serial Number is 333D-0B18
Directory of C:FILES
. <DIR> 05-27-2022 9:22p
.. <DIR> 05-27-2022 9:22p
0 file(s) 0 bytes
2 dir(s) 279,560,192 bytes free
ATTRIB
的另一種常見使用方法是操作只讀屬性,這樣你就不會意外地覆蓋重要的文件。假設你想要保護 SECRET.TXT
文件,這樣你就不能刪除或更改它。使用 +R
修飾符 ,打開只讀屬性,像這樣:
C:FILES>attrib +r secret.txt
[----A] -> [---RA] SECRET.TXT
C:FILES>del secret.txt
C:FILESSECRET.TXT: Permission denied
no file removed.
B 是「嗶嗶」聲
如果你需要在一個批處理文件中添加一些激情活力,你可以使用 BEEP
命令來獲取用戶的注意力。BEEP
不會在屏幕上顯示任何內容,但是會簡單地發出一個 「嗶嗶」 的聲音信號。
注意:BEEP
使用個人計算機內置的揚聲器來發出 「嗶嗶」 聲。如果你使用一台虛擬機器來引導啟用 FreeDOS,檢查你的系統是否建立正確的模擬個人計算機揚聲器。否則,你將不會聽到任何聲音。
C 是 CD
像 Linux 一樣,FreeDOS 支持目錄,這會允許你以一種來你有幫助的方式來組織你的文件。例如,你可以在一個名稱為 FILES
的目錄中存放你的全部文件,對於某些類型的文件,你可能會有其它的目錄,例如,針對字處理器文件的 DOCS
,或者針對表格文件的 SPRDSHT
。
你可以使用 CD
(即 「 更改目錄 」) 命令來導航到一個目錄。CHDIR
命令和 CD
命令一樣,如果你更喜歡使用這種語法的話。
為更改到一個新的目錄,使用 CD
目錄和目標目錄:
C:>cd files
C:FILES>cd sprdsht
C:FILESSPRDSHT>dir
Volume in drive C is FREEDOS2022
Volume Serial Number is 333D-0B18
Directory of C:FILESSPRDSHT
. <DIR> 05-27-2022 9:59p
.. <DIR> 05-27-2022 9:59p
FIB WKS 2,093 05-27-2022 10:07p
LAB1 WKS 2,087 05-27-2022 10:10p
MIS100 WKS 2,232 05-27-2022 10:05p
3 file(s) 6,412 bytes
2 dir(s) 279,527,424 bytes free
你不必一次導航一層目錄。相反,你可以使用一個 CD
命令和提供完整的你想要更改到的目錄路徑:
C:>cd filessprdsht
C:FILESSPRDSHT>dir
Volume in drive C is FREEDOS2022
Volume Serial Number is 333D-0B18
Directory of C:FILESSPRDSHT
. <DIR> 05-27-2022 9:59p
.. <DIR> 05-27-2022 9:59p
FIB WKS 2,093 05-27-2022 10:07p
LAB1 WKS 2,087 05-27-2022 10:10p
MIS100 WKS 2,232 05-27-2022 10:05p
3 file(s) 6,412 bytes
2 dir(s) 279,527,424 bytes free
D 是 DELTREE
如果需要刪除一個單個文件,你可以使用 DEL
命令。為刪除一個空的目錄,你可以使用 RMDIR
或 RD
命令。但是,如果你想刪除一個有很多文件和子目錄的目錄?
一個包含有其它目錄的目錄稱為 目錄樹 。你可以使用 DELTREE
命令來刪除整個目錄樹。例如,為刪除你的 FILES
目錄,包括其中包含的所有的文件和目錄,輸入這個命令:
C:>deltree files
[DEFAULT-BUILD v1.02g] of DELTREE. The "ROOT-SAFETY-CHECK" is enabled.
Delete directory "C:FILES"
and all its subdirectories?
[Y] [N] [Q], [ENTER] ? Y
==> Deleting "C:FILES" ...
你可以使用一個單一的 DELTREE
命令來輕鬆快捷地完成很多工作,因此,FreeDOS 的 DELTREE
提示會詢問你是否真的想要這樣做。謹慎地使用這個命令。
E 是 EDIT
如果你需要在 FreeDOS 上編輯一個文本文件,EDIT
程序會讓你輕鬆快速地完成任務。例如,要開始編輯一個名稱為 HELLO.TXT
的文件,輸入 EDIT HELLO.TXT
。如果 HELLO.TXT
文件已經存在,EDIT
打開文件並開始編輯。如果 HELLO.TXT
尚未存在,那麼 EDIT
為你開啟一個新的文件。
FreeDOS 的 EDIT
使用了一種友好的界面,對大多數人來說應該很容易使用。使用菜單來訪問 EDIT
的各種特色功能,包括保存文件、打開一個新的文件、或者退出編輯器。為訪問菜單,在你的鍵盤上按下 Alt
按鍵,然後使用箭頭按鍵來避開和進入選擇的動作。
F 是 FIND
如果你需要在一個文件中查找文本,FIND
命令可以完成這項工作。類似於在 Linux 上的 fgrep
,FIND
會列印一些包含一個字元串的行。例如,為檢查 FDCONFIG.SYS
文件中的 "Menu Default" 條目項,像這樣使用 FIND
:
C:>find "MENUDEFAULT" fdconfig.sys
---------------- FDCONFIG.SYS
MENUDEFAULT=2,5
如果你不確定你想要查找的字元串是使用的大寫字母還是小寫字母,添加 /I
選項來忽略字母的大小寫情況:
C:>find /i "menudefault" fdconfig.sys
---------------- FDCONFIG.SYS
MENUDEFAULT=2,5
G 是 GRAPHICS
如果你想要捕捉屏幕,你可以使用你鍵盤上的 PrtScr
( 列印屏幕 )按鍵來直接將你顯示器上的文本列印到印表機上。不過,這隻對純文本來說有效。如果你要列印圖形屏幕,你需要載入 GRAPHICS
程序。
GRAPHICS
支持不同的印表機類型,包括 HP 的 PCL 印表機、Epson 的點陣印表機,和兼容 PostScript 的印表機。例如,如果有一台連接到你的計算機的 HP 的激光印表機,你可以通過輸入這條命令來為這台印表機載入支持:
C:>graphics hpdefault
Running in MS GRAPHICS compatibility mode...
Using HPPCL type for type hpdefault
If you think this is not correct, mail me (see help text).
Printing black as white and white as black
which internally uses /I of this GRAPHICS.
You can use the following command directly instead of
GRAPHICS [your options] in the future:
LH GRAPH-HP /I
Note that GRAPH-HP allows extra options:
/E economy mode, /1 use LPT1, /2 use LPT2, /3 use LPT3,
/R for random instead of ordered dither
/C for 300dpi instead of 600dpi
Driver to make 'shift PrtScr' key work
even in CGA, EGA, VGA, MCGA graphics
modes loaded, in HP PCL mode.
H 是 HELP
如果你剛剛來到 FreeDOS 的世界,你可以通過輸入 HELP
來獲取如何使用不同命令的提示。這將帶來 FreeDOS 的幫助系統,包含所有命令的文檔:
I 是 IF
你可以使用 IF
語句來將條件語句添加到你的命令行或批處理文件 。IF
進行一次簡短的測試,然後執行一個單個命令。例如,如果存在某個文件,那麼列印結果 「It's there」,你可以輸入:
C:>if exist kernel.sys echo It's there
It's there
如果你想要測試相反的東西,在測試內容前,使用 NOT
關鍵字。例如,如果兩個字元串的值不相同,那麼列印結果 「Not equal」 ,輸入這條語句:
C:>if not "a"=="b" echo Not equal
Not equal
J 是 JOIN
早期的 DOS 版本是相當簡單的;DOS 的第一個版本甚至不支持目錄。為向這些較舊的程序提供向後兼容性,我們需要 JOIN
程序來作為一種巧妙的應變方法。JOIN
使用驅動器字母代替路徑,這樣,你可以將舊程序放入其自己的子目錄中,但是,使用一個單個驅動器字母來訪問它。
讓我們假設你有一個名稱為 VC
的舊應用程序,它不懂目錄。為保持 VC
的工作,你可以將它的路徑 連接 到一個驅動器字母。例如:
JOIN V: D:VC
FreeDOS 將 JOIN
實施為 SWSUBST
,它也兼備類似 SUBST
命令的特色功能。為將 D:VC
路徑鏈接到到一個名稱為 V:
的驅動器字母,輸入:
C:>swsubst v: d:vc
C:>dir v:
Volume in drive V is DATA
Volume Serial Number is 212C-1DF8
Directory of V:
. <DIR> 02-21-2022 10:35p
.. <DIR> 02-21-2022 10:35p
VC COM 27,520 07-14-2019 4:48p
1 file(s) 27,520 bytes
2 dir(s) 48,306,176 bytes free
K 是 KEYB
DOS 默認採用美式英語鍵盤布局。你的鍵盤是不同的,你可以使用 KEYB
命令來載入新的鍵盤語言布局。例如,為為載入一種德語鍵盤布局,輸入:
C:>keyb gr
FreeDOS KEYB 2.01 - (c) Aitor Santamaría Merino - GNU GPL 2.0
Keyboard layout : C:FREEDOSBINKEYBOARD.SYS:GR [858] (3)
L 是 LABEL
FreeDOS 使用 標籤 來命名每個軟盤驅動器和硬碟驅動器。這些標籤提供了一種識別磁碟可能包含內容的方法。當你需要將文件存儲到單個不同的軟盤上時,LABEL
命令是非常有用的,你可以標記一個軟盤 「Data」,另一個軟盤為 「Games」 。
為分配一個新的標籤到一個驅動器。或者更改在一個驅動器上的現存標籤。像這樣使用標籤:
D:>label d: data
D:>dir /w
Volume in drive D is DATA
Volume Serial Number is 212C-1DF8
Directory of D:
[123] [ABILITY] [ASEASY] [GAMES2] [QUATTRO]
[SRC] [TEMP] [THE] [VC] [WORD]
[WS400] EDLIN16.EXE EDLIN32.EXE MYENV.BAT
3 file(s) 113,910 bytes
11 dir(s) 48,306,176 bytes free
M 是 MEM
運行程序和載入驅動程序會佔用內存。可以查看你的系統有多少內存,以及有多少可用來運行 DOS 程序,使用 MEM
命令:
C:>mem
Memory Type Total Used Free
---------------- -------- -------- -----Conventional 639K 11K 628K
Upper 104K 18K 86K
Reserved 281K 281K 0K
Extended (XMS) 15,224K 537K 14,687K
---------------- -------- -------- -----Total memory 16,248K 847K 15,401K
Total under 1 MB 743K 29K 714K
Total Expanded (EMS) 8,576K (8,781,824 bytes)
Free Expanded (EMS) 8,192K (8,388,608 bytes)
Largest executable program size 628K (643,104 bytes)
Largest free upper memory block 84K ( 85,728 bytes)
FreeDOS is resident in the high memory area.
N 是 NANSI
如果你想添加一點顏色到 FreeDOS 命令行,你可以使用 ANSI 轉義序列。這些序列之所以叫「轉義」,是因為每個序列都以代碼 33(轉義字元 ESC
)和一個由美國國家標準化協會(ANSI)定義的特殊字元序列為開頭。
FreeDOS 通過 NANSI.SYS
驅動程序來支持 ANSI 轉義序列。隨著 NANSI
的載入,你的 FreeDOS 控制台將解釋 ANSI 轉義序列,例如,設置文本顏色。
O 是 oZone
FreeDOS 是一款命令行操作系統,但是一些人們更喜歡使用可備選的圖形化用戶界面。這就是為什麼 FreeDOS 的 1.3 發行版包含一些圖形化桌面的原因。我喜歡的一款名稱為 oZone 的圖形化桌面,它提供一種時尚、現代化外觀的界面。
注意,oZone 有一點煩人的錯誤,可能還需要一些來自外部開發者的關愛。如果你想讓 oZone 變得更好,可以下載源文件代碼做些貢獻。
P 是 PROMPT
標準的 FreeDOS 命令行提示符會告訴你:你所在文件系統中的位置。當你第一次啟動 FreeDOS 時,你的提示符看起來像 C:>
, 這意味著
字元表示著你可以在那裡輸入命令。(根)目錄在
C: 驅動器。
>
在你的提示符中,如果你更喜歡不同的信息,使用 PROMPT
目錄來更改它。你可以使用一個帶有 $
的開頭的特殊代碼來顯示不同的信息,例如,$D
用於日期、$T
用於時間。例如,你可以使用 $$
指令來使你的 FreeDOS 命令行看起來像一個 Linux 提示符,來列印一個單個美元符號:
C:>prompt $$
$
輸入 PROMPT /?
來查看一份全部特殊代碼的列表。
Q 是 QBASIC
FreeDOS 實際上沒有 QBASIC 。它是針對 MS-DOS 的專有 BASIC 語言環境。作為備選方案,我們提供一些開放源文件的編譯器,包括一些針對 BASIC 編程的編譯器。
FreeBASIC 編譯器可以編譯外來的大多數 QBASIC 程序。這裡有一個簡單的 「猜數」 示例:
dim number as integer
dim guess as integer
randomize timer
number = int( 10 * rnd() ) + 1
print "Guess the number from 1 to 10:"
do
input guess
if guess < number then print "Too low"
if guess > number then print "Too high"
loop while guess <> number
print "That's right!"
使用 FBC
命令來編譯 FreeBASIC 程序:
C:DEVELFBC>fbc guess.bas
這裡是這個簡單遊戲的快速演示:
C:DEVELFBC>guess
Guess the number from 1 to 10:
? 5
Too high
? 3
Too low
? 4
That's right!
R 是 REM
在編寫程序時,注釋是極好的;注釋幫助我們理解程序應該要做什麼。可以在批處理文件中使用 REM
來做同樣的事。在批處理文件中,在 REM
的後面的任何東西都將會被忽略。
REM this is a comment
S 是 SET
FreeDOS 命令行使用一系列稱為 環境變數 的變數,讓你來自定義你的系統。你可以使用 SET
命令來設置這些變數。例如。使用 DIRCMD
變數來控制 DIR
如何排列目錄列表。為設置 DIRCMD
變數,使用 SET
命令:
SET DIRCMD=/O:GNE
這告訴 DIR
先按照目錄分組(G
)來排序(O
)輸出,然後再按照名稱(N
)和擴展名(E
)來排序結果。
T 是 TYPE
TYPE
命令是最常使用的 DOS 命令之一。TYPE
顯示一個文件的內容,類似於在 Linux 上的 cat
。
C:DEVEL>type hello.c
#include
int
main()
{
puts("Hello world");
return 0;
}
U 是 UNZIP
在 Linux 上,你可能更熟悉標準的 Unix 存檔命令: tar
。在 FreeDOS 上也有一個 tar
版本(和其它大量的流行的存檔程序),但是,在 DOS 上的事實上的標準的存檔命令是 ZIP
和 UNZIP
。兩者都默認安裝在 FreeDOS 1.3 之中。
比如說,我有一些文件的一個 zip 存檔。如果我想提取整個 Zip 文件,我可以只使用 UNZIP
命令,並將 Zip 文件作為命令行的選項來提供。這將在我當前工作目錄中開始提取存檔文件。除非我正在恢復一些東西的先前版本,我通常不希望覆蓋我的當前文件。在這種情況下,我將提取存檔到一個新的目錄。你可以使用 -d
(「 目標 」)命令行選項來具體指定目標路徑:
D:SRC>unzip monkeys.zip -d monkeys.new
Warning: TZ environment variable not found, cannot use UTC times!!
Archive: monkeys.zip
creating: monkeys.new/monkeys/
inflating: monkeys.new/monkeys/banana.c
inflating: monkeys.new/monkeys/banana.obj
inflating: monkeys.new/monkeys/banana.exe
creating: monkeys.new/monkeys/putimg/
inflating: monkeys.new/monkeys/putimg/putimg.c
inflating: monkeys.new/monkeys/putimg/putimg.obj
inflating: monkeys.new/monkeys/putimg/putimg.exe
為學習更多關於 ZIP
和 UNZIP
命令的信息,可以閱讀 如何在 FreeDOS 上存檔文件。
V 是 VER
在 DOS 的古老歲月中,VER
命令會報告你正在運行的 DOS 發行版本,例如:「MS-DOS 5.0.D」。對於 FreeDOS,VER
命令將給予你額外的詳細信息,例如 FreeDOS Shell 的版本:
C:DEVEL>ver
FreeCom version 0.85a - WATCOMC - XMS_Swap [Jul 10 2021 19:28:06]
如果你還想查看 FreeDOS 內核版本和 DOS 兼容性等級,添加 /R
選項:
C:DEVEL>ver /r
FreeCom version 0.85a - WATCOMC - XMS_Swap [Jul 10 2021 19:28:06]
DOS version 7.10
FreeDOS kernel 2043 (build 2043 OEM:0xfd) [compiled May 14 2021]
W 是 WHICH
FreeDOS 命令行可以運行來自記錄在 PATH
變數中的不同的目錄列表的程序。你可以使用 WHICH
命令來準確地識別出程序的位置。只需要輸入 WHICH
加上你想要定位的程序名稱:
C:>which xcopy
xcopy C:FREEDOSBINXCOPY.EXE
X 是 XCOPY
COPY
命令只能將文件從一個位置複製到另一個位置。如果你想擴大複製的範圍來包括一些目錄,使用 XCOPY
命令。我通常添加 /E
選項來包含所有的子目錄,包括空的子目錄,這樣,我可以複製整個目錄樹。這樣就可以有效地備份我正在工作的任意工程:
D:SRC>xcopy /e monkeys monkeys.bak
Does MONKEYS.BAK specify a file name
or directory name on the target (File/Directory)? d
Copying D:SRCMONKEYSPUTIMGPUTIMG.C
Copying D:SRCMONKEYSPUTIMGPUTIMG.OBJ
Copying D:SRCMONKEYSPUTIMGPUTIMG.EXE
Copying D:SRCMONKEYSBANANA.C
Copying D:SRCMONKEYSBANANA.OBJ
Copying D:SRCMONKEYSBANANA.EXE
6 file(s) copied
Y 是 Yellow
這不是一個命令,而是關於 DOS 如何顯示顏色的有趣的百科知識。如果你仔細留心過 FreeDOS,你可能已經注意到,文本只能獲取有限的顏色範圍—— 十六種文本顏色、八種背景顏色。
IBM 的 5153 彩色顯示器,通過點亮不同亮度等級的微小的紅、綠、藍熒光點的方式創建 16 種文本顏色和 8 種背景顏色來為用戶顯示顏色。早期的個人計算機只能以「標準強度」級別來顯示背景顏色;只有文本顏色可以使用明亮顏色。
如果你查看文本顏色,你有黑色、藍色、綠色、藍綠色、紅色、品紅色、橙色和白色。這些顏色的「明亮」版本有亮黑色(暗灰色)、亮藍色、亮綠色、亮藍綠色、亮紅色、亮品紅色、黃色和亮白色。橙色的「明亮」版本有實際上是黃色。沒有「亮橙色」。
如果你想要學習更多關於文本顏色的信息,閱讀我們關於 FreeDOS 為什麼有 16 種顏色 的文章。
Z 是 ZIP
你可以在 DOS 命令行中使用 ZIP
來創建文件和目錄的存檔。這是一種很便利的方法:可以備份你的工作,或者發布一個 「軟體包」 來在未來的 FreeDOS 發行版中使用。例如,比如說,我想備份我的工程源文件代碼,其中包含這些源文件文件:
D:SRC>zip -9r monkeys.zip monkeys
zip warning: TZ environment variable not found, cannot use UTC times!!
adding: monkeys/ (stored 0%)
adding: monkeys/banana.c (deflated 66%)
adding: monkeys/banana.obj (deflated 26%)
adding: monkeys/banana.exe (deflated 34%)
adding: monkeys/putimg/ (stored 0%)
adding: monkeys/putimg/putimg.c (deflated 62%)
adding: monkeys/putimg/putimg.obj (deflated 29%)
adding: monkeys/putimg/putimg.exe (deflated 34%)
ZIP 支持很多命令行選項來完成不同的工作,但是,我使用最多的命令行選項是: -r
用於遞歸處理目錄和子目錄、-9
用於提供儘可能大的壓縮比。ZIP
和 UNZIP
使用類 Unix 命令行,因此,你可以在短劃線後面合併選項: -9r
將在 Zip 文件中給予最大壓縮比和包括子目錄。
關於如何使用 ZIP
和 UNZIP
命令的更多詳細信息,閱讀 如何在 FreeDOS 上存檔文件。
新的 FreeDOS 指南
準備好你的 FreeDOS 旅程的下一步了嗎?查看我們的新的電子書,現在開始嘗試我們的 FreeDOS !
(題圖:MJ/0b21dcc8-4c8d-457b-9e0d-fbbe5dd08c60)
via: https://opensource.com/article/22/6/26-freedos-commands
作者:Jim Hall 選題:lkxed 譯者:robsean 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive