cd,有時也寫作chdirchange directory,改變目錄),是在Unix類UnixWindowsDOS作業系統下用於改變工作目錄命令列命令。在Unix的Shell指令碼與Windows或DOS的批次檔中亦可使用。

用法

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

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

Thumb
在類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命令繼承了父行程的目錄,則它永遠也不能達到它的目標。

參見

參考文獻

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.