cd (命令)
cd
,有時也寫作chdir
(change directory,改變目錄),是在Unix、類Unix、Windows和DOS作業系統下用於改變工作目錄的命令列命令。在Unix的Shell指令碼與Windows或DOS的批次檔中亦可使用。
用法
目錄是檔案系統用於儲存檔案的邏輯區段,而目錄還可以包含有其他的目錄。通過cd
命令,可以前進到子目錄、後退到父目錄、回到根目錄(Unix下為「/
」,DOS下為「\
」)或者進入到任何給出的目錄中去。
假設下面的這一小段為Unix檔案系統,顯示的是一位使用者的起始目錄(以「~
」表示),其中有一個檔案(「text.txt
」)和三個子目錄。
當使用者的當前工作目錄為起始目錄(「~
」)時,首先輸入命令「ls
」,然後輸入「cd games
」,會產生下列的效果:
user@wikipedia:~$ ls
workreports games encyclopedia text.txt
user@wikipedia:~$ cd games
user@wikipedia:~/games$
該使用者現在的工作目錄即為「game」目錄。
在DOS中,與之相似的過程(「起始目錄」的概念可能會不適用,這取決於該DOS的版本)會像這樣顯示:
C:\> dir
workreports <DIR> Wed Oct 9th 9:01
games <DIR> Tue Oct 8th 14:32
encyclopedia <DIR> Mon Oct 1st 10:05
text txt 1903 Thu Oct10th 12:43
C:\> cd games
C:\games>
應注意的一點是,在不同的作業系統中,如果不給出變數會讓cd產生不同的結果。例如,如果在DOS下不給出變數而執行,會顯示出當前的工作目錄來;而在Unix下不給出變數而執行,則會返回到起始目錄去。在指令碼或批次處理內執行的cd,也會產生不同的結果。在DOS中,批次檔中使用的該命令可以直接改變呼叫者的當前目錄;而在Unix下,使用cd命令的指令碼則無法改變呼叫者的當前目錄。這是因為在Unix下的指令碼通常在子外殼中執行。
工作原理
cd通常是由命令列直譯器內建提供的。絕大多數的Unix shell(Bourne shell、tcsh、bash等)、Windows的cmd.exe和Windows PowerShell、以及DOS的COMMAND.COM均是這種情況。
Windows的命令列外殼通常使用Windows API來改變當前的工作目錄;而Unix系統的cd則是呼叫POSIX C的函式chdir()
:即是,當該命令執行時,不會為前往另一個目錄而建立一個新的行程,而是由外殼代為執行這條命令,ls等其他命令也是這種情況。這是因為,新增的行程時,子行程會繼承父行程建立時的目錄。而如果cd命令繼承了父行程的目錄,則它永遠也不能達到它的目標。
參見
參考文獻
- Chdir. Microsoft TechNet. 2005年 [2007年10月8日] (中文(中國大陸)).[永久失效連結]
外部連結
- Windows XP > Command-line reference A-Z > Chdir (Cd)(頁面存檔備份,存於網際網路檔案館) from Microsoft TechNet(英文)
- 單一UNIX®規範第7期,由國際開放標準組織發布(英文) : change the working directory – 命令與工具(Commands & Utilities)參考,