cd (命令)

命令来更改当前的工作目录

cd,有時也寫作chdirchange directory,改變目錄),是在Unix類UnixWindowsDOS操作系統下用於改變工作目錄命令行命令。在Unix的Shell腳本與Windows或DOS的批處理文件中亦可使用。

用法

編輯

目錄文件系統用於保存文件的邏輯區段,而目錄還可以包含有其他的目錄。通過cd命令,可以前進到子目錄、後退到父目錄、回到根目錄(Unix下為「/」,DOS下為「\」)或者進入到任何給出的目錄中去。

假設下面的這一小段為Unix文件系統,顯示的是一位用戶的起始目錄(以「~」表示),其中有一個文件(「text.txt」)和三個子目錄。

 
在類UNIX系統中,用戶從起始目錄(通常簡寫作「~」)看到的文件系統。從起始目錄開始,樹狀圖會延伸出更多的子目錄和/或文件來。

當用戶的當前工作目錄為起始目錄(「~」)時,首先輸入命令「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 shellBourne shelltcshbash等)、Windows的cmd.exeWindows PowerShell、以及DOS的COMMAND.COM均是這種情況。

Windows的命令行外殼通常使用Windows API來改變當前的工作目錄;而Unix系統的cd則是調用POSIX C的函數chdir():即是,當該命令執行時,不會為前往另一個目錄而創建一個新的進程,而是由外殼代為執行這條命令,ls等其他命令也是這種情況。這是因為,創建新的進程時,子進程會繼承父進程創建時的目錄。而如果cd命令繼承了父進程的目錄,則它永遠也不能達到它的目標。

參見

編輯

參考文獻

編輯

外部連結

編輯