如何在 Linux shell 中阻止 rm -rf * 的执行?

如何在 Linux shell 中阻止 rm -rf * 的执行?

我有个习惯,rm -rf *每次在睡眠模式时都会打字。似乎我的潜意识希望我在一天结束时删除所有我编写的代码。

有没有办法rm -rf *在 Linux 的 C-shell 或 bash-shell 中阻止这个特定命令()?

或者,有没有一种方法可以在我的 shell 输入进入 shell 进行进一步处理之前为其设置一个命令过滤器?

答案1

查看安全保证这是一个包装器,rm它允许你设置一个列表重要的不会被意外删除的目录。

这不会阻止您意外删除列出的目录之外的文件,但当您的潜意识决定加大赌注并执行时,它可以防止发生灾难rm -rf /


除此之外,防止意外删除的规范方法是使用alias rm="rm -i"其他几个答案中提到的方法。

极端情况下采取极端措施……

如果你的潜意识听起来很恶意,它仍然可以通过使用/bin/rm跳过别名来绕过这一点。为了防止这种情况,请-i在你经常工作的目录中创建一个名为的文件:

[me@home]$ touch -- -i
[me@home]$ ls
-i    file1.txt    file2.txt

当 evil-you 执行时/bin/rm -rf *,通配符会扩展为以 开头的文件列表-i,并且将被视为一个选项/bin/rm

[me@home]$ /bin/rm -rf *
/bin/rm: remove regular empty file `file1.txt'?

(当你的潜意识没有注意的时候,将鼠标悬停在以下块上……)

现在让我们希望你的潜意识没有意识到这个--选择......

答案2

您应该能够使用 alias 命令执行此操作。这与 eg 转换rm为 的操作相同rm -i,以防止您在未先确认的情况下删除内容。

答案3

其他人都建议将别名改为rmrm -i这通常是一个很好的解决方案。问题是,它在你的例子中不起作用。你总是-rf在 之后使用rm。你的命令将变成rm -i -rf *,并且由于 -f 在 -i 之后,它将覆盖 -i。

-rf您可以编写一个包装器,在执行之前检查并提示您rm

答案4

设置一个别名来rm执行你的自定义脚本。它可以检查命令参数(-rf *)并打印一个令人讨厌的提示“你确定要翻转吗!?”否则它会默默地将其传递给/usr/bin/rm或诸如此类。

相关内容