執行“rm”時我們應該系統地使用“--”嗎?

執行“rm”時我們應該系統地使用“--”嗎?

關於 rm 和 的推薦用法的問題--

假設我創建了兩個文件-ixx.如果我嘗試刪除它們

$ 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 ./*作為安全的解決方法。

相關內容