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

以下脚本把所有要编辑的源文件备份到/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命令时最好也备份一下目标文件,以免被意外覆盖。

时间: 2024-09-17 04:39:19

利用Shell脚本实现vi/cp/mv前自动备份源文件的相关文章

Linux shell编程 5 ---- 利用shell脚本遍历某个目录下的所有文件

 1 我们都知道shell脚本能够做很多的事,今天刚好一个队友要我写个脚本求某个目录下所有java文件的行数总和  2 ok,为了方便,我把这个目录放到了当前的家目录下,路径为/home/chenguolin/src  3 我在家目录下建了一个s.sh的脚本,代码如下,等等来分析代码的意思 #!/bin/bash function ergodic(){ for file in ` ls $1 ` do if [ -d $1"/"$file ] then ergodic $1"

linux中利用shell脚本监控网站状态异常

  最近刚好需要测试一下新建站的稳定性,所以写了个SHELL脚本放到本机(最近换了mac本),能够实时查看你需要监控的WEB页面状态,并发送到指定邮箱.     这里赞一下OS X自带有crontab计划任务,可以直接在本机测试脚本啦^_^    代码如下 复制代码 # vi check_web_alive.sh --------------------------------------------------------------------- #!/bin/bash PATH=/bin:

linux中利用Shell脚本自动提交网站404死链到搜索引擎

  Shell脚本 说做就做,简单的写了个 Shell 脚本就搞定了! 脚本名称:网站死链生成脚本 脚本功能:每天定时分析网站前一天的 nginx 日志, 然后提取状态码为404并且UA为百度蜘蛛的抓取路径,并写入到网站根目录下的 death.txt 文件,用于提交百度死链. 脚本代码: #!/bin/bash #Desc: Death Chain File Script #Author: ZhangGe #Blog: http://你的域名/5038.html #Date: 2015-05-0

利用shell脚本生成动态sql

在一些分布式环境中,可能涉及到的数据库有很多,相关的数据库用户也不少,有些看似简单的变更可能需要在不同的库,不同的用户间要进行复杂的操作. 现在我们有3套环境,一套是测试环境test,一套是准生产环境xprd,一套是生产环境prod, 比如在prod上有5个库一共20个用户,某一个变更可能在这20个用户里面要进行一些的操作.xprd里面和生产环境类似,也有数据库用户,test环境中有10个用户,需要在这10个用户中进行相应的操作. 最开始的时候,使用sqlplus和shell脚本,如下 sqlp

利用shell脚本实现对系统的自动分区

#!/bin/bash function print {if [ $# = 2 ]; then if [ "$1" = "warning" ]; then echo -e "33[33m33[5m$233[0m" elif [ "$1" = "error" ]; then echo -e "33[31m33[5m$233[0m" elif [ "$1" = "

利用shell脚本提高效率(切换用户不需要输入密码)

一.简便切换用户: 切换用户,每次输入密码,比较麻烦,可以使用脚本交互式登录实现,每次只要输入./su_ 并tab,执行此脚本,即可切换至root用户,比较简单.如下: hao@hao-ubuntu:~$ cat su_root.sh  #!/usr/bin/expect set timeout 3 spawn su expect "Password:" exec sleep 1 send "root\r" expect "#" interact

利用Shell脚本实现远程MySQL自动查询

下面这个脚本是一个简单用来执行远程数据库查询的命令,相信大家都能看得懂,这对于有些需要每天自动检查数据库或是执行某些语句的兄弟,是很有帮助的,只要稍加修改就可以 复制代码 代码如下: #!/bin/sh HOST=192.168.5.40 USER=abc PASS=123456 QUERY=`mysql -h$HOST -u$USER -p$PASS << EOF use testdb; select * from person where name='LiMing'; exit EOF`

利用Shell脚本实现远程MySQL自动查询_Mysql

下面这个脚本是一个简单用来执行远程数据库查询的命令,相信大家都能看得懂,这对于有些需要每天自动检查数据库或是执行某些语句的兄弟,是很有帮助的,只要稍加修改就可以 复制代码 代码如下: #!/bin/shHOST=192.168.5.40USER=abcPASS=123456QUERY=`mysql -h$HOST -u$USER -p$PASS << EOFuse testdb;select * from person where name='LiMing';exitEOF`echo $QUE

linux中利用shell脚本查看占用swap的进程

查看进程在占用swap分区的脚本 命令脚本如下:  代码如下 复制代码 for i in `cd /proc;ls |grep "^[0-9]"|awk ' $0 >100'` ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps ;done |sort -k2nr 查看占用swap的进程  代码如下 复制代码 #!/bin/bash   echo -e `d