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)參考,