如何避免rm-rf 误操作删库跑路?

    作者:hoxis 链接:https://www.jianshu.com/p/9a22ef48a2eb 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    一个方案就是重定向 rm 命令以嫁接为 mv 命令, 相当于给 Linux 系统定制了一个回收站。
    实现方式如下:

    1. ### 重定义rm命令 ###
    2. # 定义回收站目录
    3. trash_path='~/.trash'
    4. # 判断 $trash_path 定义的文件是否存在,如果不存在,那么就创建 $trash_path.
    5. if [ ! -d $trash_path ]; then
    6. mkdir -p $trash_path
    7. fi
    8. # 定义别名:使用 rm 就调用 trash
    9. alias rm=trash
    10. # 使用 rl 就调用 'ls ~/.trash'
    11. # 如果更改上面的回收站目录这里的目录也需要修改
    12. alias rl='ls ~/.trash'
    13. # 使用 unrm 就调用 restorefile,需要在删除目录的父目录下执行
    14. alias unrm=restorefile
    15. # 使用 rmtrash 就调用 claearteash
    16. alias rmtrash=cleartrash
    17. # 恢复文件的函数
    18. restorefile()
    19. {
    20. mv -i ~/.trash/$@ ./
    21. }
    22. # 删除文件的函数
    23. trash()
    24. {
    25. mv $@ ~/.trash/
    26. }
    27. # 清空回收站的函数
    28. cleartrash()
    29. {
    30. read -p "确定要清空回收站吗?[y/n]" confirm
    31. [ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf ~/.trash/*
    32. }

    最后将上述脚本写入 /etc/bashrc,并立即执行命令 source /etc/bashrc 即刻生效。

    或者
    vi ~/.bashrc 打开 ~/.bashrc 文件到最后加上这句代码:alias rm="/home/remove.sh"
    然后在 /home/remove.sh 写对应的脚本。
    source ~/.bashrc 重启一下就好了。