cd命令大家再熟悉不過了,bash shell經(jīng)常會被用到的切換目錄命令. 接下來我們直接通過萬能的man來了解cd命令.
直接 man cd 是不行的,會顯示 No manual entry for cd .cd命令是bash基本命令中的一種,所以應(yīng)該是 man bash.
關(guān)于man以及man page等相關(guān)內(nèi)容會在以后的 LinuxShell命令:man 中詳細(xì)介紹.
通過查找man page里可以看到cd的命令語法如下
cd [-L|[-P [-e]] [-@]] [dir]
基本作用
cd命令的作用就是從當(dāng)前目錄跳轉(zhuǎn)到dir處, 如果dir處留空的話就會跳轉(zhuǎn)到環(huán)境變量HOME中設(shè)置的值.
附加內(nèi)容
環(huán)境變量CDPATH
對于環(huán)境變量CDPATH,
如果沒有設(shè)置CDPATH的話,每次cd查找的跳轉(zhuǎn)目錄都是以當(dāng)前的目錄為父目錄.
若有設(shè)置CDPATH的話,每次cd查找的跳轉(zhuǎn)目錄就是以設(shè)置的目錄為父目錄來查找.
e.g. 假設(shè)當(dāng)前有目錄結(jié)構(gòu): ~/a/b/c 若沒有設(shè)置CDPATH
luckyshq@localhost:~$ cd a
luckyshq@localhost:~/a$ cd c
bash: cd: c: No such file or directory
若將CDPATH設(shè)為CDPATH=.:/home/luckyshq/a/b的話
luckyshq@localhost:~$ cd a
luckyshq@localhost:~/a$ cd c
luckyshq@localhost:~/a/b/c$
將常用目錄設(shè)置到CDPATH里就能有效提高cd的效率.
CDPATH中目錄見用:隔開.
若不加上.路徑(即當(dāng)前路徑的話),以前默認(rèn)的本目錄作為父目錄cd就不可用了.
若dir處是以/開頭(即是絕對路徑)的話,CDPATH就失效了.
cd -P, -e參數(shù)
進(jìn)入到快捷方式目錄的實(shí)際目錄中. e.g. 假設(shè) ~ 目錄下有a,b兩個目錄, 同時a下有一個連接到b的子目錄b(這個b是快捷方式)
// 不加 -P 參數(shù)
luckyshq@localhost:~$ cd a
luckyshq@localhost:~/a$ cd b
luckyshq@localhost:~/a/b$
//加上 -P 參數(shù)
luckyshq@localhost:~$ cd a
luckyshq@localhost:~/a$ cd -P b
luckyshq@localhost:~/b$
若將一個文件夾自己的快捷方式放到文件夾里,這樣寫腳本的時候就有可能會出現(xiàn)無限循環(huán),當(dāng)前路徑名就會變得無限長,但是加上了-P命令后就可以避免無線循環(huán)的情況.
如果在-P后面加上-e的話,若跳轉(zhuǎn)前路徑不存在對應(yīng)物理路徑的話(比如說夾雜著多個快捷方式為名稱的路徑)就會返回一個失敗的狀態(tài).(-e具體的用法可能要到Shell編程時才能體會到.)
cd -L參數(shù)
-L參數(shù)和-P相反(兩者不能同時出現(xiàn),即 -L|-P),是跳轉(zhuǎn)到鏈接目錄中,類似于不帶參數(shù)的cd.(加不加-L具體有什么區(qū)別還沒弄清=,=)
..
dir中如果出現(xiàn)了..,
若..后有路徑,則吞掉路徑中第一個目錄元素(例如 cd ../a/b/c 等價 cd b/c).
若..后沒路徑,則退回到當(dāng)前路徑的父目錄中.