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