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

2 linux shell rm

我有rm -rf *每次进入某种睡眠模式时打字的习惯。似乎我的潜意识希望我在一天结束时删除我编写的所有内容。

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

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

Sha*_*hin 5

查看safe-rm,它是一个包装器,rm它允许您设置一个不会被意外删除的重要目录列表。

这不会阻止您意外删除所列目录之外的文件,但是当您的潜意识决定加大赌注并执行rm -rf /.


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

极端情况下的极端措施...

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

[me@home]$ touch -- -i
[me@home]$ ls
-i    file1.txt    file2.txt
Run Code Online (Sandbox Code Playgroud)

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

[me@home]$ /bin/rm -rf *
/bin/rm: remove regular empty file `file1.txt'?
Run Code Online (Sandbox Code Playgroud)

(当你的潜意识没有在看时,将鼠标悬停在下面的块上......)

现在让我们希望你的潜意识不知道这个--选项......