2021-05-12 14:32:11
在 Linux 上操作目錄
讓我們繼續學習一下 Linux 檔案系統的樹形結構,並展示一下如何在其中建立你的目錄。
如果你不熟悉本系列(以及 Linux),請檢視我們的第一部分。在那篇文章中,我們貫穿了 Linux 檔案系統的樹狀結構(或者更確切地說是檔案層次結構標準File Hierarchy Standard,FHS)。我建議你仔細閱讀,確保你理解自己能安全的做哪些操作。因為這一次,我將向你展示目錄操作的魅力。
新建目錄
在破壞之前,先讓我們來建立。首先,開啟一個終端視窗並使用命令 mkdir
建立一個新目錄,如下所示:
mkdir<directoryname>
如果你只輸入了目錄名稱,該目錄將顯示在您當前所在目錄中。如果你剛剛開啟一個終端,你當前位置為你的家目錄。在這個例子中,我們展示了將要建立的目錄與你當前所處位置的關係:
$ pwd#告知你當前所在位置(參見第一部分)
/home/<username>
$ mkdir newdirectory #建立/home/<username>/newdirectory
(註:你不用輸入 #
後面的文字。#
後面的文字為註釋內容,用於解釋發生了什麼。它會被 shell 忽略,不會被執行)。
你可以在當前位置中已經存在的某個目錄下建立新的目錄,方法是在命令列中指定它:
mkdirDocuments/Letters
這將在 Documents
目錄中建立 Letters
目錄。
你還可以在路徑中使用 ..
在當前目錄的上一級目錄中建立目錄。假設你進入剛剛建立的 Documents/Letters/
目錄,並且想要建立Documents/Memos/
目錄。你可以這樣做:
cdDocuments/Letters#進入到你剛剛建立的Letters/目錄
mkdir../Memos
同樣,以上所有內容都是相對於你當前的位置做的。這就是使用了相對路徑。
你還可以使用目錄的絕對路徑:這意味著告訴 mkdir
命令將目錄放在和根目錄(/
)有關的位置:
mkdir/home/<username>/Documents/Letters
在上面的命令中將 <username>
更改為你的使用者名稱,這相當於從你的主目錄執行 mkdir Documents/Letters
,通過使用絕對路徑你可以在目錄樹中的任何位置完成這項工作。
無論你使用相對路徑還是絕對路徑,只要命令成功執行,mkdir
將靜默的建立新目錄,而沒有任何明顯的反饋。只有當遇到某種問題時,mkdir
才會在你敲下確認鍵後列印一些反饋。
與大多數其他命令列工具一樣,mkdir
提供了幾個有趣的選項。 -p
選項特別有用,因為它允許你巢狀建立目錄,即使目錄不存在也可以。例如,要在 Documents/
中建立一個目錄存放寫給媽媽的信,你可以這樣做:
mkdir-p Documents/Letters/Family/Mom
mkdir
會建立 Mom/
之上的整個目錄分支,並且也會建立 Mom/
目錄,無論其上的目錄在你敲入該命令時是否已經存在。
你也可以用空格來分隔目錄名,來同時建立幾個目錄:
mkdirLettersMemosReports
這將在當前目錄下建立目錄 Letters
、Memos
和 Reports
。
目錄名中可怕的空格
……這帶來了目錄名稱中關於空格的棘手問題。你能在目錄名中使用空格嗎?是的你可以。那麼建議你使用空格嗎?不,絕對不建議。空格使一切變得更加複雜,並且可能是危險的操作。
假設您要建立一個名為 letters mom/
的目錄。如果你不知道如何更好處理,你可能會輸入:
mkdir letters mom
但這是錯誤的!錯誤的!錯誤的!正如我們在上面介紹的,這將建立兩個目錄 letters/
和 mom/
,而不是一個目錄 letters mom/
。
得承認這是一個小麻煩:你所要做的就是刪除這兩個目錄並重新開始,這沒什麼大不了。
可是等等!刪除目錄可是個危險的操作。想象一下,你使用圖形工具Dolphin 或 Nautilus 建立了目錄 letters mom/
。如果你突然決定從終端刪除目錄 letters mom
,並且您在同一目錄下有另一個名為 letters
的目錄,並且該目錄中包含重要的文件,結果你為了刪除錯誤的目錄嘗試了以下操作:
rmdir letters mom
你將會有刪除目錄 letters 的風險。這裡說“風險”,是因為幸運的是rmdir
這條用於刪除目錄的指令,有一個內建的安全措施,如果你試圖刪除一個非空目錄時,它會發出警告。
但是,下面這個:
rm-Rf letters mom
(註:這是刪除目錄及其內容的一種非常標準的方式)將完全刪除 letters/
目錄,甚至永遠不會告訴你剛剛發生了什麼。)
rm
命令用於刪除檔案和目錄。當你將它與選項 -R
(遞回刪除)和 -f
(強制刪除)一起使用時,它會深入到目錄及其子目錄中,刪除它們包含的所有檔案,然後刪除子目錄本身,然後它將刪除所有頂層目錄中的檔案,再然後是刪除目錄本身。
rm -Rf
是你必須非常小心處理的命令。
我的建議是,你可以使用下劃線來代替空格,但如果你仍然堅持使用空格,有兩種方法可以使它們起作用。您可以使用單引號或雙引號,如下所示:
mkdir'letters mom'
mkdir"letters dad"
或者,你可以跳脫空格。有些字元對 shell 有特殊意義。正如你所見,空格用於在命令列上分隔選項和引數。 “分離選項和引數”屬於“特殊含義”範疇。當你想讓 shell 忽略一個字元的特殊含義時,你需要跳脫,你可以在它前面放一個反斜槓()如:
mkdir letters mom
mkdir letter dad
還有其他特殊字元需要跳脫,如撇號或單引號('
),雙引號(“
)和&符號(&
):
mkdir mom & dad's letters
我知道你在想什麼:如果反斜槓有一個特殊的含義(即告訴 shell 它必須跳脫下一個字元),這也使它成為一個特殊的字元。然後,你將如何跳脫跳脫字元()?
事實證明,你跳脫任何其他特殊字元都是同樣的方式:
mkdir specialcharacters
這將生成一個名為 specialcharacters/
的目錄。
感覺困惑?當然。這就是為什麼你應該避免在目錄名中使用特殊字元,包括空格。
以防誤操作你可以參考下面這個記錄特殊字元的列表。(LCTT 譯註:此處原文連結丟失。)
總結
- 使用
mkdir <directory name>
建立新目錄。 - 使用
rmdir <directory name>
刪除目錄(僅在目錄為空時才有效)。 - 使用
rm -Rf <directory name>
來完全刪除目錄及其內容 —— 請務必謹慎使用。 - 使用相對路徑建立相對於當前目錄的目錄:
mkdir newdir
。 - 使用絕對路徑建立相對於根目錄(
/
)的目錄:mkdir /home/<username>/newdir
。 - 使用
..
在當前目錄的上級目錄中建立目錄:mkdir ../newdir
。 - 你可以通過在命令列上使用空格分隔目錄名來建立多個目錄:
mkdir onedir twodir threedir
。 - 同時建立多個目錄時,你可以混合使用相對路徑和絕對路徑:
mkdir onedir twodir /home/<username>/threedir
。 - 在目錄名稱中使用空格和特殊字元真的會讓你很頭疼,你最好不要那樣做。
???關更多資訊,您可以檢視 mkdir
、rmdir
和 rm
的手冊:
manmkdir
manrmdir
manrm
要退出手冊頁,請按鍵盤 q
鍵。
下次預告
在下一部分中,你將學習如何建立、修改和刪除檔案,以及你需要了解的有關許可權和特權的所有資訊!
通過 Linux 基金會和 edX 免費提供的“Introduction to Linux”課程了解有關Linux的更多資訊。
via: https://www.linux.com/blog/learn/2018/5/manipulating-directories-linux
作者:Paul Brown 選題:lujun9972 譯者:way-ww 校對:wxy
相關文章