終端基礎(chǔ):Linux 終端中的目錄切換
Linux 的 cd
命令讓你可以輕松切換文件夾(即目錄)。只需提供你要切換到的文件夾路徑即可。
cd path_to_directory
然而對(duì)于 Linux 新人來(lái)說(shuō),可能會(huì)在路徑的指定上有所困擾。
首先,讓我們解決這個(gè)問(wèn)題。
理解 Linux 中的路徑
在 Linux 文件系統(tǒng)中,路徑是用來(lái)追蹤文件位置的信息。所有的路徑都從根目錄開(kāi)始,然后向下延伸。
你可以通過(guò)下面的方式查看當(dāng)前所在的位置:
pwd
結(jié)果可能是類似于 /home/username
的輸出。注意,這里的 username
將會(huì)是你自己的用戶名。
你可以注意到,路徑是由 /
符號(hào)和目錄名組成的。比如路徑 /home/abhishek/scripts
, 表示 scripts
是在文件夾 abhishek
之內(nèi),而文件夾 abhishek
在 home
文件夾之內(nèi)。要注意,第一個(gè) '/' 是指根目錄(即文件系統(tǒng)的開(kāi)始處),后面的 '/' 則作為目錄的分隔符。
Path in Linux
??? 在終端中鍵入
ls /
,然后按回車。你將會(huì)看到根目錄下的所有內(nèi)容,試試看!
接下來(lái),讓我們學(xué)習(xí)兩種常見(jiàn)的路徑指定方式:絕對(duì)路徑和相對(duì)路徑。
絕對(duì)路徑:這種路徑從根開(kāi)始,然后一直擴(kuò)展到你需要的位置。如果一個(gè)路徑是以 /
開(kāi)頭,那就說(shuō)明它是一個(gè)絕對(duì)路徑。
相對(duì)路徑:這是相對(duì)于你文件系統(tǒng)中當(dāng)前位置的路徑。如果我當(dāng)前位置在 /home/abhishek
,并且我需要去 /home/abhishek/Documents
, 我只需要簡(jiǎn)單地切換到 Documents
,而不需要指定整個(gè)絕對(duì)路徑 /home/abhishek/Documents
。
在我演示這兩種路徑的區(qū)別之前,有必要先熟悉兩個(gè)特殊的目錄標(biāo)識(shí):
.
(單點(diǎn))表示當(dāng)前目錄。..
(雙點(diǎn))表示上一級(jí)目錄,也就是當(dāng)前目錄的母目錄。
這里有一張圖形化的表示。
Absolute path vs relative path
利用 cd 命令變更目錄
在你已對(duì)路徑概念有所了解之后,我們來(lái)了解如何切換目錄。
??? 如果你僅鍵入
cd
并按回車鍵,無(wú)論當(dāng)前位置在哪,系統(tǒng)都會(huì)將你帶回主目錄。試一試吧。
敲入以下命令,你就能看到主目錄里的所有文件夾:
ls
這是我看到的情況:
abhishek@ituxedo:~$ ls
Desktop Downloads Pictures Templates VirtualBoxVMs
Documents Music Public Videos
你的情況可能與此類似,但未必完全一樣。
假如你希望跳轉(zhuǎn)到 Documents
文件夾。由于它就在當(dāng)前目錄下,這里使用相對(duì)路徑會(huì)比較方便:
cd Documents
?? 注意,大部分 Linux 發(fā)行版預(yù)設(shè)的終端模擬器會(huì)在提示符本身顯示出當(dāng)前所在的位置。因此你不必頻繁使用
pwd
指令來(lái)確認(rèn)自己的位置。
Most Linux terminal prompts show the current location
假如你希望切換到位于主目錄里的 Templates
文件夾。
你可以使用相對(duì)路徑 ../Templates
(..
會(huì)讓你返回到上層目錄,即 /home/username
,然后你就可以進(jìn)入 Templates
文件夾了)。
但這次我們嘗試使用絕對(duì)路徑。請(qǐng)把下面的 abhishek
替換成你的用戶名。
cd /home/abhishek/Templates
此刻你已經(jīng)在 Templates
文件夾里了。如何前往 Downloads
文件夾呢?這次我們?cè)偈褂孟鄬?duì)路徑:
cd ../Downloads
下面的圖片會(huì)回顧一下你剛才學(xué)到的所有或有關(guān)目錄切換的范例。
cd command example
?? 別忘了你還可以使用終端的
tab
鍵自動(dòng)補(bǔ)全功能。只需要鍵入命令或者文件夾名稱的前幾個(gè)字母,然后敲擊tab
鍵,系統(tǒng)就會(huì)嘗試自動(dòng)地補(bǔ)全命令或文件夾名稱,或者給你顯示出所有可能的選項(xiàng)。
故障解決
在 Linux 終端操作切換目錄的過(guò)程中,你可能會(huì)遇到一些常見(jiàn)的錯(cuò)誤。
文件或目錄不存在
如果在你嘗試切換目錄時(shí),出現(xiàn)類似下面的錯(cuò)誤信息:
bash: cd: directory_name: No such file or directory
那么你可能在路徑或目錄名稱上犯了誤解。這里有幾點(diǎn)你需要注意的:
- 請(qǐng)確定你輸入的目錄名中沒(méi)有拼寫(xiě)錯(cuò)誤。
- Linux 系統(tǒng)對(duì)大小寫(xiě)敏感,因此,
Downloads
和downloads
會(huì)被識(shí)別為不同的目錄。 - 你可能未正確指定路徑??赡苣闼诘奈恢门c你預(yù)期的不同?或者你遺漏了絕對(duì)路徑中的開(kāi)頭的
/
字符?
Common examples of "no such file or directory" error
非目錄錯(cuò)誤
如果你看到像下面這樣的錯(cuò)誤提示:
bash: cd: filename: Not a directory
這表示你嘗試使用 cd
命令對(duì)一個(gè)文件進(jìn)行操作,而不是一個(gè)目錄(文件夾)。很明顯,你不能像進(jìn)入文件夾那樣“進(jìn)入”一個(gè)文件,因此會(huì)出現(xiàn)這樣的錯(cuò)誤。
Not a directory error with the cd command
參數(shù)過(guò)多
這是 Linux 新手常犯的另一個(gè)錯(cuò)誤:
bash: cd: too many arguments
cd
命令只接受一個(gè)參數(shù)。也就是說(shuō),你只能對(duì)命令指定一個(gè)目錄。
如果你指定了超過(guò)一個(gè)的參數(shù),或者在路徑中誤加了空格,你就會(huì)看到這個(gè)錯(cuò)誤。
Too many arguments error in Linux terminal
???? 如果你輸入
cd -
,它將會(huì)把你帶到前一個(gè)目錄。當(dāng)你在兩個(gè)相隔較遠(yuǎn)的地方切換時(shí)非常方便,可以避免再次輸入長(zhǎng)路徑。
特殊目錄符號(hào)
在結(jié)束這個(gè)教程之前,我想快速告訴你關(guān)于特殊符號(hào) ~
。在 Linux 中,~
是用戶主目錄的捷徑。
如果用戶 abhi
運(yùn)行它,~
就會(huì)代表 /home/abhi
,如果用戶 prakash
運(yùn)行,~
就意味著 /home/prakash
。
總結(jié)一下你在這個(gè)基礎(chǔ)教程系列中學(xué)到的所有特殊目錄標(biāo)識(shí):
符號(hào) | 描述 |
| 當(dāng)前目錄 |
| 上級(jí)目錄 |
| 主目錄 |
| 前一個(gè)目錄 |
測(cè)試你的知識(shí)
下面是一些簡(jiǎn)單的練習(xí),用來(lái)測(cè)試你剛剛學(xué)到的關(guān)于路徑和 cd
命令的知識(shí)。
移動(dòng)到你的主目錄,并使用這個(gè)命令創(chuàng)建一個(gè)嵌套的目錄結(jié)構(gòu):
mkdir -p sample/dir1/dir2/dir3
然后,一步步來(lái)試試這個(gè):
- 使用絕對(duì)路徑或相對(duì)路徑進(jìn)入
dir3
- 使用相對(duì)路徑移動(dòng)到
dir1
- 使用你能想象到的最短路徑進(jìn)入
dir2
- 使用絕對(duì)路徑切換到
sample
目錄 - 返回你的主目錄
?? 想知道你是否全都做對(duì)了嗎?歡迎分享你的答案。
現(xiàn)在你知道如何切換目錄,是不是應(yīng)該學(xué)習(xí)一下如何創(chuàng)建它們呢?
我強(qiáng)烈推薦你閱讀這篇文章,了解一些關(guān)于終端和命令的小技巧。
如果你想了解 Linux 命令行的基礎(chǔ)知識(shí),記得關(guān)注我們的 Linux 終端基礎(chǔ)系列教程的更多章節(jié)。