Unix

刪除名稱中帶有連字元的 UNIX 目錄

  • June 27, 2020

通過我的愚蠢操作,我不小心創建了一個名為(例如)-A 的目錄,並最終用文件填充它。

我想刪除所說的目錄。我試過了:

rmdir -- -A

但它隨後告訴我該目錄中仍有文件。而且我不知道如何 cd 進入目錄以刪除所述文件。

我應該怎麼做才能擺脫這個麻煩的目錄?

在每個命令上使用 –。

$ ls -la
total 32
drwxr-xr-x  3 richard  richard  512 Jul 28 15:44 .
drwxr-xr-x  3 root     wheel    512 Jul  6 17:10 ..
$ mkdir -- -A
$ ls -la
total 36
drwxr-xr-x  2 richard  richard  512 Jul 28 15:44 -A
drwxr-xr-x  4 richard  richard  512 Jul 28 15:44 .
drwxr-xr-x  3 root     wheel    512 Jul  6 17:10 ..
$ cd -- -A
$ ls
$ pwd
/home/richard/-A
$ cd ..
$ rm -rf -- -A
$ ls -la
total 32
drwxr-xr-x  3 richard  richard  512 Jul 28 15:44 .
drwxr-xr-x  3 root     wheel    512 Jul  6 17:10 ..

您可以將 ./ 放在文件前面——這樣 rm 或 rmdir 不會表現得好像文件名是一個選項標誌。

您還可以發出選項 – 它告訴 rm 將 – 之後的所有內容都視為文件名,並且它不應再處理任何選項。可能有一些時髦的舊版本的 rm 不遵守這一點,儘管這些天我的古董 unix 動物園變得非常小,所以我不能告訴你哪些版本或者是否有不理解的版本——。

無論如何刪除時,您都應該養成將 ./ 放在名稱前面的習慣——您永遠不知道目錄中是否有 -r 或 -rf 命名的文件。你可以說你應該總是使用 – 但我發現 ./ 更自然,因為它明確表示“我想刪除這個目錄中的文件,而不是任何 * 發生的 glob ”

引用自:https://serverfault.com/questions/47003