1. 程式人生 > >例解 Linux cd 命令

例解 Linux cd 命令

cd 命令是 *nix 系統中最基本的命令,它所做的事情是改變你當前所在的目錄。本文詳細介紹該命令,它所能完成的功能以及關於該命令內在的東西。

cd 命令:一個內建命令

BASH Shell 是大多 Linux 發行版的預設 shell,BASH 有一些自己的內建命令,cd 就是其中的一個。我將解釋什麼是內建命令,以及為什麼 cd 是一個內建命令。首先,用 SHELL 環境變數確認你當前的 shell:

現在用 which 命令檢查 cd 命令二進位制檔案所在的路徑(如果存在的話):

結果什麼都沒有輸出,這是因為系統中不存在 cd 命令的二進位制檔案。但是你仍然可以執行該命令,這是因為 cd 是 BASH 的內建命令。內建命令就是內建在 shell 裡的命令,另一個內建命令 type

 會給你顯示 cd 命令是一個內建命令的資訊:

如果你嘗試獲得任何內建命令的幫助文件,將不存在它們獨立的幫助頁:

對於這些內建命令,不會建立獨立的程序來執行它們,因此他們執行效率較高。

為了得到所有的內建命令,你可以使用 help 命令(這裡 help 本身也是一個內建命令):

為什麼 cd 是內建命令

為了描述簡單,我就不討論更多的細節了,但是要理解這個問題的答案,還需要知道一點 Unix 程序相關的知識。

BASH 建立的任何程序,它會由一個 BASH 的子 shell(當前 BASH 程序的子程序)來執行該程序,新建的程序執行例項、輸出(如果需要的話),當該程序結束時,改子 shell 的任何屬性都不會返回給父 shell。注意到的是,cd 命令用來改變 shell 當前所在的路徑,如果 cd 是一個外部命令,它將改變子 shell 的當前路徑,當執行完返回時,他所做的改變對父 shell 沒有關係。因此,shell 的當前路徑還是沒有改變!所有改變當前 shell 環境的命令,在實現上都必須實現成內建命令。如果實現成外部命令,我們將不會得到預期的結果。

下面我們探索 cd 命令的用法:

cd 命令用法

如果你直接輸入 cd 命令而不帶任何引數,它將切換到你的 home 目錄下,不管你當前所在的目錄是什麼:

波浪線(~)符號也代表 home 目錄,你也可以使用它來切換到 home 目錄下:

如果你是 root 使用者,你可以切換到任何使用者的 home 目錄,使用波浪線後跟使用者名稱。在一些 Linux 發行版中,沒有特權的使用者預設沒有許可權切換到其它使用者的 home 目錄:

點(.)代表當前目錄,兩個點(..)代表父目錄,要想切換到父目錄,只需要使用..:

只使用 . 大多情況下將不會將會你當前的目錄,例如:

但是如果你當前目錄重新命名為其它名字,那麼使用 . 將會改變當前目錄:

在 BASH 以及大多數其它 shell 中,你可以提供兩種型別的路徑表示方式:絕對路徑和相對路徑。絕對路徑使用 / 開始,和你當前所在目錄無關;另一個相對路徑不是以 / 開始,依賴於你當前所在的目錄。

使用絕對路徑改變當前目錄:

使用相對路徑改變當前目錄:

可以使用 cd - 命令,回到上一次工作的目錄,實現在兩個目錄間來回切換:

上次工作的目錄儲存在變數 OLDPWD 中,如果你試著在新的終端下使用該命令,它會顯示下面的錯誤:

你還可以在 cd 命令中使用一些 bash 的技巧,例如使用萬用字元“?”、“*” 等。