Mac 像Linux一样使用命令行是很便利的, 但是在使用命令行的时候, rm -rf 命令是很常用的.
rm -rf 是一个可怕的命令, 可以理解为递归删除, 如果执行的是rm -rf /* ,那么你的系统会迅速的土崩瓦解, 尽管有些文件可能因为系统权限不足删不掉, 但是在文件丢失甚至系统不能使用的道路上,你成功了. 经常流传的程序员删库跑路, 即是执行了此命令.
当然一个正常人是不会随便乱执行这个命令的, 但有时候, 常在河边走, 总有湿鞋时, 小心又小心, 还是会因为手抖执行错.
我最近就遇到过一次, 我把mac的命令行模式切换成了 zsh, 我们知道,切换为zsh后(忘了原生的是不是), 个人文件夹的根路径就会变成 ~, 即如果执行 cd ~ 或 cd ~/ 都会跳转到个人目录.
直到前几天, 我下载了一个开源权限框架做一个小东西,使用它的代码生成工具, 可能是因为路径设置问题, 在我的某个指定文件夹下, 竟然又生成了一个~的目录, 心想 rm -rf ~是相对路径删除,应该没事, 于是我痛快的按了enter键, 但是可怕的事发生了, 这个文件夹没有消失, 命令行列表显示我个人文件夹下的文件被清掉的记录, 迅速的按下control+c……
可以想象到的事发生了, 我是习惯把公司的代码, 个人代码及所有个人文件都放~目录下的人, 是的, 我的所有文件几乎全被删了, 值得庆幸的是执行的不是 rm -rf /*, 但尽管只是个人目录,带来的麻烦很大, 我长时间辛苦整理的资料, 文件等,全没了…..
还能怎么样, 就这样认了, 重新整理吧…..
但是如何继续避免这样的事再次发生呢, 我找到了如下解决方案
-
安装rmtrash
brew install rm trash
-
配置rmtrash
在~目录下的.bash_profile配置文件下增加如下代码 alias rm='rmtrash' 保存,source .bash_profile使之生效即可 小技巧 在.bash_profile文件配置的,在每次打开终端的时候都得source一下 于是可以直接把 alias rm='rmtrash' 配置到.zshrc 配置文件 或者在.zshrc配置文件里添加 source ~/.bash_profile 这样就会在每次重启终端的时候自动生效了
-
使用rmtrash
安装好后, 所有的 “rm -f/-rf 文件/文件夹” 命令, 你只需这样执行 “rm 文件/文件夹” 即可, 而且你会发现,删掉的文件及目录,都会放到"废纸篓"里,是不是安全了很多, 从此以后, 尽情的放心删文件吧.