Rm

rm 上的 -f 選項的真正意義是什麼?

  • September 1, 2013

通過閱讀 GNU coreutils 手冊頁rm,其中一個選項是-f,根據手冊,

-f, --force
         ignore nonexistent files and arguments, never prompt

現在,我做了一些測試,並表明如果我使用類似的東西

rm -f /nonexisting/directory/

它不會抱怨。

有人能從這樣的選擇中真正獲得什麼?

加上“刪除目錄”最常見的例子rm

rm -rf /delete/this/dir

-r選項是有道理的,但是-f?

在這種情況下,我發現手冊頁缺少一些細節。的-f選項rm實際上有很多案例:

  • 避免錯誤退出程式碼
  • 避免被提示
  • 繞過權限檢查

你說得對,刪除一個不存在的文件是沒有意義的,但是在腳本中,能夠說“我不想要這些文件,如果你找到它們就刪除它們,但如果它們不存在就不要打擾我真的很方便不存在”。有些人set -e在他們的腳本中使用 ,以便它在任何錯誤時停止(以避免腳本可能造成的任何進一步損壞),並且rm -rf /home/my/garbageif [[ -f /home/my/garbage ]]; then rm -r /home/my/garbage; fi.

關於權限檢查的說明:要刪除文件,您需要對目錄而不是文件本身的寫入權限。因此,假設root您的主目錄中有一個文件,而您無權sudo訪問,您仍然可以使用該-f選項刪除該文件。如果您使用 Git,您可以看到 Git 不會保留它創建的目標文件的寫權限:

-r--r--r-- 1 phunehehe phunehehe 62 Aug 31 15:08 testdir/.git/objects/7e/70e8a2a874283163c63d61900b8ba173e5a83c

因此,如果您使用rm,不使用而刪除 Git 儲存庫的唯一方法root是使用rm -rf.

引用自:https://unix.stackexchange.com/questions/88943