搜索
首页 电脑/网络 软件 系统软件

怎样在Shell中执行vi?

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

全部回答

2017-07-26

62 0
    以下脚本把所有要编辑的源文件备份到/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#/}  chmod -R a+w /bak/${patha%%/*}  fi  #复制目标文件  datenow=`date +%Y%m%d`  timenow=`date +%H%M%S`  /usr/bin/cp $1 ${path}/${1##*/}。
    ${datenow}。${timenow}  echo "Target file \"$1\"  has been copied to ${path}/${1##*/}。
  ${datenow}。${timenow}"  echo "Now going to \"vi $1\",Press any key to continue。  。。"  char=`get_char`  fi  #调用vi命令  vi $1  调用脚本  # chmod a+x /sh/vii  # /sh/vii /etc/passwd  你可以把/sh加入到PATH变量中,这样就更方便了。
     同理,涉及cp/mv命令时最好也备份一下目标文件,以免被意外覆盖。   以上是我对于这个问题的解答,希望能够帮到大家。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
系统软件
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
软件
系统软件
多媒体软件
办公软件
网络软件
图像处理软件
系统软件
系统软件
举报
举报原因(必选):
取消确定举报