Shell腳本 實現(xiàn)vi/cp/mv前自動備份源文件
上?;肝膎a np包通過,考費最低
學(xué)習(xí)嵌入式Linux,從這里開始! 網(wǎng)絡(luò)維護(hù)工程師 硬件工程師 IT工程師 Linux人才成為IT業(yè)高薪搶手貨 【亞威】獨家推出思科360學(xué)習(xí)計劃 【就業(yè)】先實習(xí)后上崗,入職年薪5-10萬! 以下腳本把所有要編輯的源文件備份到/bak目錄下,并且所有的路徑位置保持不變,比如vii /etc/hosts,則把/etc/hosts復(fù)制到/bak/etc/hosts。 # cat /sh/vii #!/usr/bin/bash #判斷源文件是否存在,存在才執(zhí)行備份操作 if [ -f "$1" ];then #創(chuàng)建函數(shù),可實現(xiàn)任意鍵繼續(xù) #如果你的機(jī)器上不認(rèn)stty raw那么把函數(shù)中兩處出現(xiàn)的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 } #創(chuàng)建備份的根路徑/bak,并讓所有人具有寫權(quán)限 if [ ! -d "/bak" ];then mkdir /bak chmod a+w /bak fi
#判斷目標(biāo)文件所處的路徑并創(chuàng)建,讓所有人對新創(chuàng)建的任一級目錄均具有寫權(quán)限
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 #復(fù)制目標(biāo)文件 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 #調(diào)用vi命令 vi $1 調(diào)用腳本 # chmod a+x /sh/vii # /sh/vii /etc/passwd 你可以把/sh加入到PATH變量中,這樣就更方便了。 同理,涉及cp/mv命令時最好也備份一下目標(biāo)文件,以免被意外覆蓋。
**************************
chmod a+x :
a 表示“所有(all)用戶”。它是系統(tǒng)默認(rèn)值。
操作符號可以是: + 添加某個權(quán)限。 - 取消某個權(quán)限。 = 賦予給定權(quán)限并取消其他所有權(quán)限(如果有的話)。 設(shè)置 mode 所表示的權(quán)限可用下述字母的任意組合: r 可讀。 w 可寫。 x 可執(zhí)行 |
|
|