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

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

我使用别名来防止意外删除文件,并且我想对目录执行类似的操作。

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

alias rm="rm -i"

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

alias rm -rf="rm -rfi"

和这个:

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

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

答案1

来自 bash(1):

别名

[...]每个简单命令的第一个单词,如果不加引号,将检查它是否有别名[...]字符[...]和上面列出的任何 shell 元字符或引用字符可能不会出现在别名中。

因此别名只能是一个没有任何引号字符的单词。

在对 rm 的调用中同时使用-fand-i也没有多大意义,因为它们有些矛盾(rm(1)):

-f, --force 忽略不存在的文件和参数,从不提示

-我 每次删除前都会提示

但这是一件好事 -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’?

/编辑:Raphael Ahrens 在评论中还提到,-f不需要使用(强制)来删除目录(正如我的示例中已经看到的那样),-r(递归)足够了:

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

答案2

别名rm是危险的。一旦你在一个没有设置这些别名的盒子上,你就会造成一些损害。

至于“防止自己意外删除目录”,这就是该-r标志的目的。

请不要覆盖这样的命令,你永远不知道脚本会做出什么假设。如果必须,请选择 以外的名称rm,否则请更改工作流程中的某些内容,以免您无法使用rm -rf

相关内容