防止意外删除目录。制作一个包含选项的别名?

rya*_*lon 3 bash directory alias rm

我使用别名来防止我不小心删除文件,我想对目录做类似的事情。

对于文件,我将以下内容添加到我的.bashrc

alias rm="rm -i"
Run Code Online (Sandbox Code Playgroud)

我还想防止自己意外删除一个目录,我已经尝试过这样做:

alias rm -rf="rm -rfi"
Run Code Online (Sandbox Code Playgroud)

和这个:

alias "rm -rf"="rm -rfi"
Run Code Online (Sandbox Code Playgroud)

但两者都不起作用。有什么建议?

Wie*_*and 6

来自 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’?
Run Code Online (Sandbox Code Playgroud)

/edit:Raphael Ahrens 在评论中还提到,使用-f(force) 不是删除目录所必需的(正如在我的示例中已经看到的那样),-r(递归)就足够了:

-r, -R, --recursive 递归删除目录及其内容