如何阻止"rm -rf /"

前天 敲命令的时候 敲的玩我 一部小心敲了 sudo rm -rf / 并且按了回车 过了几秒才反映过来 不过已经玩了 mac上一些应用已经被删除了 没做备份 只好花了一天时间重新安装。

那么问题来了,如何禁止执行 上面的命令 或者给个提示也行

然后在问个问题,TimeMachine做备份 是不是要整个移动硬盘 做备份。我运行它的时候 老报没有Airport找不到 。

各位看管 有什么经验?

阅读 25.8k
15 个回答

1、 不要用rm,mac的话

brew install rmtrash

然后用rmtrash替代rm(移动到废纸篓)

少数必须要用rm的情况,再三检查你的命令

2、 不要用sudo或root用户,必须要用的时候,再三检查你的命令

3、 sudo而且rm的时候,打完命令,检查完以后,去上个厕所回来再检查一遍再执行

4、 千万不要用alias或任何手段来改变rm命令的行为,千万不要用alias或任何手段来改变rm命令的行为。这很重要,因为用命令行就是为了习惯和了解服务器维护的知识经验,服务器上是不会有同样的alias的。养成慎用rm 慎用sudo 检查命令的好习惯才是正道。否则剧本就是你先rm rf /了自己,苦恼了半小时找了个alias或别的脚本之类的,几个月以后,登到生产环境欢乐地rm rf /了服务器,或者是rm rf /usr /local/xxx
日常使用的话参考前面,用rmtrash之类的替代命令就好


最后关于TimeMachine,我用的是老台式机的整块旧硬盘,不方便的话,给硬盘单独一个分区也可以,自己google怎么做

建议:先执行rm -f /bin/rm

====

实际上,最大的经验是,多按tab。

例如:按完rm -rf /,习惯性按两下tab,就能惊出一身汗。
再例如,rm -rf /usr,习惯性想补全/lib/bumblebee,按两下tab,又吓尿了

建议用finder来删除,可undo,为何不用呢?

echo 'alias rm="ls"' >> ~/.bash_profile

我是这样做的。

本来 rm 就默认开启了 --preserve-root 这个选项,除非手动指定 --no-preserve-root 否则是没法运行 rm / 的。当然,似乎 OS X 的 mv 没有这个功能。

新手上路,请多包涵

chroot是不是可以
虽然带来的麻烦也不少

在~下 .bashrc或者.bash_profile加入

mkdir -p ~/.trash
alias rm=trash  
alias r=trash  
alias rl='ls ~/.trash'
alias ur=undelfile
undelfile()
{
  mv -i ~/.trash/$@ ./
}
trash()
{  
  mv $@ ~/.trash/
}

这是执行
rm 就相当于执行mv

注:此时已经木有rm -rf
删除的文件会在.trash中出现
可以恢复回去
ur filename

这就带来一个问题,如何删除回收站里的东西,这是后rm在这里是木有用的

回答 TimeMachine 部分,我就是用一个 1T 的移动硬盘分 500G 作为备份分区,具体实现点这,现在考虑入一个2T的移动硬盘。

可以用zsh rm -rf / 这样的操作会有二次确认的

新手上路,请多包涵

如果是debian和ubuntu,安装
apt-get install trash-cli
~/.bashrc加入alias r='trash'
尽量使用r,找回文件可去文件管理器或者运行命令restore-trash

深有体会,曾经执行了sudo rm -rf /etc ,然后就哭了。
于是我就写了个python脚本。
import os
os.system("sudo rm -rf XXXXX")
每次要执行rm -rf 命令之前都写到这个脚本里面,打开和关闭脚本的时候都是提醒我检查这个命令。如果重复使用就执行这个脚本,然后就没出过错了

看了楼上答案,竟然没人推荐oh-my-zsh

alias rm='rm -i'

楼主使用这个命令,系统受影响了吗

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏