在Shell中执行vi/cp/mv时自动备份源文件

来源:岁月联盟 编辑:zhuzhu 时间:2008-01-28
在Shell中执行vi/cp/mv时自动备份源文件内容简介:以下脚本把所有要编辑的源文件备份到/bak目录下,并且所有的路径位置保持不变,比如vii /etc/hosts,则把/etc/hosts复制到/bak/etc/hosts。 # cat /sh/vii #!/usr/bin/bash #判定源文件是否存在,存在才执行

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

# cat /sh/vii  #!/usr/bin/bash  #判定源文件是否存在,存在才执行备份操作  if [ -f "$1" ];then  #创建函数,可实现任意键继续  #假如你的机器上不认stty raw那么把函数中两处出现的raw换成cbreak  get_char()  {  SAVEDSTTY=`stty -g`  stty -echo  stty raw  dd if=/dev/tty bs=1 count=1 2> /dev/null  stty -raw  stty echo  stty $SAVEDSTTY  }  #创建备份的根路径/bak,并让所有人具有写权限  if [ ! -d "/bak" ];then  mkdir /bak  chmod a w /bak  fi  #判定目标文件所处的路径并创建,让所有人对新创建的任一级目录均具有写权限  echo $1 | grep "/" >/dev/null  if [ "`echo $?`" = "0" ];then  cd ${1%/*}  fi  pwdnow=`pwd`  path=/bak${pwdnow}  #echo $path  if [ ! -d "$path" ];then  mkdir -p $path  patha=${pwdnow#