Linux運維基礎之rm和rmdir命令詳解

Linux運維基礎之rm和rmdir命令詳解

要在 Linux 中刪除檔案或資料夾,使用的 Linux 命令是 rmrmdir。rm 命令的意思是 “remove”,用於刪除檔案和目錄。通過使用各種選項,你可以刪除檔案、目錄,甚至是目錄中的內容。例如,rm filename 會刪除一個檔案,而 rm -r directoryname 會刪除一個目錄及其所有內容。

rmdir 命令代表 “刪除目錄”,專門用於刪除空目錄。如果目錄中包含任何檔案或子目錄,rmdir 命令將不會刪除它,並會顯示一條錯誤資訊。相比之下,帶有 -r 選項的 rm 命令可以刪除非空目錄。從本質上講,rm 的用途更廣泛,而 rmdir 更專門用於刪除空目錄。

在這篇文章中,我們將介紹使用 rmrmdir 的不同方法。

如何使用 rm

1. 刪除一個檔案

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rm [file]
rm [file]
rm [file]

rm 命令用於刪除單個檔案。為此,請鍵入 rm,然後輸入要刪除的檔名。

示例:

下面的命令用於刪除名為 example.txt 的特定檔案,該檔案位於名為 myfolder 的目錄中。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rm myfolder/example.txt
rm myfolder/example.txt
rm myfolder/example.txt

下面舉例說明其工作原理:

  1. 假設你有一個名為 myfolder 的目錄,目錄中有一個名為 example.txt 的檔案。
  2. 執行命令 rm myfolder/example.txt
  3. myfolder 中的檔案 example.txt 將被刪除,預設情況下終端中不會顯示任何輸出資訊。
  4. 如果你再次嘗試訪問檔案 example.txt,就會收到類似 “No such file or directory” 的錯誤資訊。

在執行該命令之前,如果有

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
myfolder/
└── example.txt
myfolder/ └── example.txt
myfolder/
└── example.txt

執行命令後,結構如下:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
myfolder/
myfolder/
myfolder/

2. 無需確認即可刪除檔案

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rm -f [file]
rm -f [file]
rm -f [file]

該選項允許使用者無需確認即可刪除受防寫的檔案。

示例:

假設當前目錄中有一個名為 file1.txt 的檔案,你想刪除它。可以執行以下命令

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rm -f file1.txt
rm -f file1.txt
rm -f file1.txt

由於使用了 -f 選項,因此不會有確認提示,檔案將被立即刪除。如果操作成功,終端將不會顯示任何輸出。如果之後嘗試檢視目錄內容,會發現 file1.txt 已不復存在。

3. 刪除多個檔案

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rm [file1] [file2] [file3]
rm [file1] [file2] [file3]
rm [file1] [file2] [file3]

使用 rm 命令,以檔名作為引數,一次刪除多個檔案。

示例:

在執行該命令前,假設你的目錄中有以下檔案:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
file1.txt
file2.txt
file3.txt
otherfile.txt
file1.txt file2.txt file3.txt otherfile.txt
file1.txt
file2.txt
file3.txt
otherfile.txt

你執行了 rm file1.txt file2.txt file3.txt 命令。

執行該命令後, file1.txtfile2.txt, 和 file3.txt 檔案被刪除,你的目錄現在看起來像這樣:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
otherfile.txt
otherfile.txt
otherfile.txt

4. 顯示輸出資訊

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rm -v [filename]
rm -v [filename]
rm -v [filename]

通過 -v (verbose)選項,可以獲取有關刪除內容的資訊。

示例:

當你執行 rm -v example.txt 命令時,會得到以下輸出結果:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
removed 'example.txt'
removed 'example.txt'
removed 'example.txt'

在這個例子中,檔案 example.txt 被刪除,系統會列印一條確認檔案已被刪除的資訊。如果檔案不存在,則會出現類似 rm: cannot remove 'example.txt': No such file or directory 的錯誤資訊。

5. 刪除檔案前提示確認

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rm -i [filename]
rm -i [filename]
rm -i [filename]

該選項用於在刪除檔案前要求確認。輸入 y (是)確認,輸入 n (否)停止。

示例:

假設您有一個名為 example.txt 的檔案,並執行了該命令:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rm -i example.txt
rm -i example.txt
rm -i example.txt

系統將提示您類似這樣的資訊:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
remove regular file 'example.txt'?
remove regular file 'example.txt'?
remove regular file 'example.txt'?

然後你需要鍵入 y (表示是)或 n (表示否)來確認或拒絕刪除。如果鍵入 y 並按 Enter 鍵,檔案 example.txt 將被刪除。如果鍵入 n ,檔案將保持不動。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
remove regular file 'example.txt'? y
remove regular file 'example.txt'? y
remove regular file 'example.txt'? y

之後,如果您用 ” y ” 確認, example.txt 將被刪除。

如何使用 rmdir

該命令既可以刪除目錄,也可以刪除目錄中的檔案。除了不能用來刪除檔案外,它與 rm -r 命令沒有明顯區別。

rmdir 命令的一般語法:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ rmdir [OPTION...] [DIRECTORY...]
$ rmdir [OPTION...] [DIRECTORY...]
$ rmdir [OPTION...] [DIRECTORY...]

1. 刪除一個目錄

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rmdir [directory]
rmdir [directory]
rmdir [directory]

使用此命令可刪除一個目錄,但只有當該目錄為空時才會被刪除。

示例:

假設你有一個名為 myfolder 的目錄,但它是空的。執行命令:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rmdir myfolder
rmdir myfolder
rmdir myfolder

目錄 myfolder 將被刪除,如果操作成功,則不會有任何輸出資訊。

但是,如果 myfolder 不為空或不存在,則會收到一條錯誤資訊。例如,如果 myfolder 包含檔案或子目錄,你可能會看到:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rmdir: failed to remove 'myfolder': Directory not empty
rmdir: failed to remove 'myfolder': Directory not empty
rmdir: failed to remove 'myfolder': Directory not empty

或者如果 myfolder 不存在:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rmdir: failed to remove 'myfolder': No such file or directory
rmdir: failed to remove 'myfolder': No such file or directory
rmdir: failed to remove 'myfolder': No such file or directory

2. 刪除多個目錄

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rmdir [folder1] [folder2] [folder3]
rmdir [folder1] [folder2] [folder3]
rmdir [folder1] [folder2] [folder3]

該命令允許您同時刪除多個目錄,但所有目錄都必須為空。

示例:

Linux 中的 rmdir folder1 folder2 folder3 命令試圖刪除名為 folder1folder2, 和 folder3 的目錄。只有當這三個目錄都為空時,這條命令才會成功;否則,系統將顯示一條錯誤資訊。

下面是一個示例,說明如何執行該命令:

如果 folder1folder2, 和 folder3 都是空目錄,命令將刪除它們,不會有任何輸出資訊。

如果其中任何一個目錄不是空目錄或不存在,則會針對每個有問題的目錄顯示錯誤資訊。

folder2 不為空時的輸出示例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rmdir: failed to remove 'folder2': Directory not empty
rmdir: failed to remove 'folder2': Directory not empty
rmdir: failed to remove 'folder2': Directory not empty

在這種情況下,folder1 和 folder3  如果是空的,仍會被移除,但 folder2 將保持不變。

3. 刪除父目錄

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rmdir -p [directory-path]
rmdir -p [directory-path]
rmdir -p [directory-path]

選項 -p 會刪除指定目錄及其父目錄。

示例:

下面舉例說明 rmdir -p folder_a/folder_b 命令是如何工作的:

假設你有一個這樣的目錄結構:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
folder_a
└── folder_b
folder_a └── folder_b
folder_a
└── folder_b

如果 folder_a 和 folder_b 都是空的,執行 rmdir -p folder_a/folder_b 命令將首先刪除 folder_b,然後,由於 folder_a 變為空的,它也將刪除 folder_a

如果 folder_a 或 folder_b中有任何檔案或子目錄,該命令將不會刪除它們,你會收到類似的錯誤資訊:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rmdir: failed to remove 'folder_a/folder_b': Directory not empty
rmdir: failed to remove 'folder_a/folder_b': Directory not empty
rmdir: failed to remove 'folder_a/folder_b': Directory not empty

在成功的情況下,不會有任何輸出,兩個目錄都會被刪除。

更多 Linux 命令

下面羅列了最常見的一些 Linux 命令,您可以根據自己的需要查閱對應命令的詳細解析:

目錄操作 rmdir · cd · pwd · exa · ls
檔案操作 cat · cp · dd · less · touch · ln · rename · more · head
檔案系統操作 chown · mkfs · locate
網路 ping · curl · wget · iptables · mtr
搜尋和文字處理 find · grep · sed · whatis · ripgrep · fd · tldr
系統資訊和管理 env · history · top · who · htop · glances · lsof
使用者和會話管理 screen · su · sudo · open

此外,我們還整理 Linux 命令列大全,以幫助大家全面深入地學習 Linux。

評論留言