Bash
防止意外刪除目錄。製作包含選項的別名?
我使用別名來防止我意外刪除文件,並且我想對目錄做類似的事情。
對於文件,我將以下內容添加到我的
.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 遞歸刪除目錄及其內容