cd (命令)

維基百科,自由的百科全書
前往: 導覽搜尋

cd,有時也寫作chdirchange directory,改變目錄),是在UnixWindowsDOS作業系統下用於改變工作目錄命令列命令。在Unix的外殼指令碼與Windows或DOS的批次檔中亦可使用。CHDIR()還是Visual Basic改變工作目錄的一個函式。

用法[編輯]

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

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

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


當用戶的當前工作目錄為起始目錄(「~」)時,首先輸入命令「ls」,然後輸入「cd games」,會產生下列的效果:

  me@host:~$ ls
  workreports games encyclopedia text.txt
  me@host:~$ cd games
  me@host:~/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命令繼承了父行程的目錄,則它永遠也不能達到它的目標。

參考文獻[編輯]

參見[編輯]