Shell脚本 实现vi/cp/mv前自动备份源文件

萧红SEO SEO爱好者,分享SEO经验~

以下脚本把所有要编辑的源文件备份到/bak目录下,并且所有的路径位置保持不变,比如vi /etc/hosts,则把/etc/hosts复制到/bak/etc/hosts。

  1. #cat/sh/vii
  2. #!/usr/bin/bash
  3. #判断源文件是否存在,存在才执行备份操作
  4. if[-f"$1"];then
  5. #创建函数,可实现任意键继续
  6. #如果你的机器上不认sttyraw那么把函数中两处出现的raw换成cbreak
  7. get_char()
  8. {
  9. SAVEDSTTY=`stty-g`
  10. stty-echo
  11. sttyraw
  12. ddif=/dev/ttybs=1count=12>/dev/null
  13. stty-raw
  14. sttyecho
  15. stty$SAVEDSTTY
  16. }
  17. #创建备份的根路径/bak,并让所有人具有写权限
  18. if[!-d"/bak"];then
  19. mkdir/bak
  20. chmoda+w/bak
  21. fi
  22. #判断目标文件所处的路径并创建,让所有人对新创建的任一级目录均具有写权限
  23. echo$1|grep"/">/dev/null
  24. if["`echo$?`"="0"];then
  25. cd${1%/*}
  26. fi
  27. pwdnow=`pwd`
  28. path=/bak${pwdnow}
  29. #echo$path
  30. if[!-d"$path"];then
  31. mkdir-p$path
  32. patha=${pwdnow#/}
  33. chmod-Ra+w/bak/${patha%%/*}
  34. fi
  35. #复制目标文件
  36. datenow=`date+%Y%m%d`
  37. timenow=`date+%H%M%S`
  38. /usr/bin/cp$1${path}/${1##*/}.${datenow}.${timenow}
  39. echo"Targetfile"$1"
  40. hasbeencopiedto${path}/${1##*/}.${datenow}.${timenow}"
  41. echo"Nowgoingto"vi$1",Pressanykeytocontinue..."
  42. char=`get_char`
  43. fi
  44. #调用vi命令
  45. vi$1
  46. 调用脚本
  47. #chmoda+x/sh/vii
  48. #/sh/vii/etc/passwd

你可以把/sh加入到PATH变量中,这样就更方便了,同理,涉及cp/mv命令时最好也备份一下目标文件,以免被意外覆盖。

相关广告
  • Shell脚本 实现vi/cp/mv前自动备份源文件 Shell脚本 实现vi/cp/mv前自动备份源文件 Shell脚本 实现vi/cp/mv前自动备份源文件
相关阅读

Shell脚本 实现vi/cp/mv前自动备份源文件

2019/10/10 17:48:42 | 谷歌SEO算法 | SEO培训