[关闭]
@gy-ban 2017-04-23T11:12:55.000000Z 字数 818 阅读 789

如何防止rm防止误删除脚本

linux


常在河边走, 哪能不湿鞋。这句话用在运维人员身上真是再恰当不过了,为什么这么说?作为一个系统运维人员,时刻要和生产服务器打交道,用root权限进程一些文件删除是在寻常不过的事情了,若一不小心执行命令 rm -rf /,如果此时正好拥有root权限,那么后果将不堪设想。

预防方法:
重定义 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. alias rl='ls ~/.trash'
  12. #使用unrm就调用restorefile
  13. alias unrm=restorefile
  14. #使用rmtrash就调用claearteash
  15. alias rmtrash=cleartrash
  16. #恢复文件的函数
  17. restorefile()
  18. {
  19. mv -i ~/.trash/$@ ./
  20. }
  21. #删除文件的函数
  22. trash()
  23. {
  24. mv $@ ~/.trash/
  25. }
  26. #清空回收站的函数
  27. cleartrash()
  28. {
  29. read -p '确定要清空回收站吗?[y/n]' confirm
  30. [ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf ~/.trash/*
  31. }

这个脚本定义了几个命令
rl 就是查看回收站下的文件
unrm 文件名或目录 就是恢复到当前的路径下
rmtrash 就是清空回收站,不过会友好提示。
执行rm 不会删除,其实就是使用mv 移动到我们指定的回收站
实在真的想删除可以/bin/rm 来进行删除
/bin/rm或者\rm 都可以临时取消别名。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注