Rm
rm 上的 -f 選項的真正意義是什麼?
通過閱讀 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/garbage
比if [[ -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
.