關於 rm 和 的推薦用法的問題--
假設我創建了兩個文件-i
和xx
.如果我嘗試刪除它們
$ rm *
我得到:
rm: remove regular file `xx'? n
並且,如同中所解釋的如何在 Linux 中刪除名稱看起來只有連字符(如“-”)的文件和其他人,解決這個問題的方法是:
$ rm -- *
-rf
顯然,如果名字被叫或類似,問題可能會更嚴重。
所以我的問題是:
我們是否應該在任何可擴展的東西之前系統地
--
在命令中使用,以避免令人不快的意外或漏洞?rm
我之所以問這個問題,是因為不久前我學到了這個rm
問題,然後就忘記了,直到最近一個隊友又把它帶進來了。然而,我從未見過任何這種意義上的建議,而且風險如此之大,我想知道我們是否應該更多地提出它?每當使用(可能還有其他命令)時,是否應該使用--
某種腳本和控制台模式?rm
答案1
在完美的世界中,我想是的,我們應該有系統地使用--
.但我們都學會瞭如何使用該rm
命令,而無需系統地鍵入--
,並且鍵入該命令需要額外敲擊三個按鍵,因此我看不到這種情況發生。另外,--
終止選項的約定並不總是存在(這就是為什麼許多人在學習如何使用時沒有了解它的原因rm
)。
話雖如此,rm
在 shell 腳本中使用(和其他命令)時,您絕對應該始終進行防禦性編程。例如:
rm "$1" # Remove the file named in the first command line argument
是不安全的,但應該是rm -- "$1"
。然而,
rm "/var/spool/foo/$thatfile"
是安全的,因為 的內容$thatfile
不會導致rm
對其參數的誤解。
在您的具體範例(rm *
)中,我通常可能會使用它rm ./*
作為安全的解決方法。