Bash

防止意外刪除目錄。製作包含選項的別名?

  • May 5, 2014

我使用別名來防止我意外刪除文件,並且我想對目錄做類似的事情。

對於文件,我將以下內容添加到我的.bashrc

alias rm="rm -i"

我還想防止自己意外刪除一個目錄,我曾嘗試這樣做:

alias rm -rf="rm -rfi"

還有這個:

alias "rm -rf"="rm -rfi"

但兩者都不起作用。有什麼建議麼?

來自 bash(1):

別名

$$ … $$每個簡單命令的第一個單詞,如果不加引號,則檢查它是否有別名$$ … $$ 那些角色$$ … $$並且上面列出的任何 shell 元字元或引用字元都不能出現在別名中。

所以別名只能是一個沒有任何引號字元的單詞。

在呼叫 rm 時同時使用-f-i也沒有多大意義,因為它們有些矛盾(rm(1)):

-f, –force 忽略不存在的文件和參數,從不提示

-i 在每次刪除前提示

但這是一件好事 -rm即使在您打電話時,您的別名也會被實際使用rm -r,因為第一個單詞 - rm- 有一個別名 - rm -i,所以它被替換了!

$ alias rm
bash: alias: rm: not found
$ alias rm='rm -i'
$ mkdir test
$ rm -r test
rm: remove directory ‘test’?

/edit:Raphael Ahrens 在評論中還提到,-f不需要使用 (force) 來刪除目錄(正如我的範例中已經看到的那樣),-r(遞歸)就足夠了:

-r, -R, –recursive 遞歸刪除目錄及其內容

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