首页 Shell经典实例

Shell经典实例

举报
开通vip

Shell经典实例Shell经典实例 Shell ?,µäʵÀý.txt21?ºÅ????á?ª??Èç?ûÄãÔø?,Àú?ý??Ìì??ÄÇÃ?Äã?Í?áÓÐ?ºÉ???Èç ?ûÄãÓÐ×ÅÐÅÄî??ÄÇÃ??ºÌìÒ????áÒ?Ô???Èç?ûÄãÕýÔÚ???ö??ÄÇÃ?×ÜÓÐÒ?ÌìÄã?á ÓµÓÐ???ªÂúÔ???Thizlinux ϵÍ??Ì?Ì Shell ?,µäʵÀý ----------------Milo ?,µäÐ?shell 1 ÁÐÄ?Â?Ê?µÄshell ?Å??È...

Shell经典实例
Shell经典实例 Shell ?,µäʵÀý.txt21?ºÅ????á?ª??Èç?ûÄãÔø?,Àú?ý??Ìì??ÄÇÃ?Äã?Í?áÓÐ?ºÉ???Èç ?ûÄãÓÐ×ÅÐÅÄî??ÄÇÃ??ºÌìÒ????áÒ?Ô???Èç?ûÄãÕýÔÚ???ö??ÄÇÃ?×ÜÓÐÒ?ÌìÄã?á ÓµÓÐ???ªÂúÔ???Thizlinux ϵÍ??Ì?Ì Shell ?,µäʵÀý ----------------Milo ?,µäÐ?shell 1 ÁÐÄ?Â?Ê?µÄshell ?Å??ÈçÏÂ?º ????#!/bin/sh ????# dtree: Usage: dtree [any directory] ????dir=${1:-.} ????(cd $dir; pwd) find $dir -type d -print | sort -f | sed -e "s,^$1,," -e "/^$/d" -e "s,[^/]*/([^/]*)$,`----1," -e "s,[^/]*/,| ,g" 2 whileÖÐÊ?ÓÃread (fileÊÇÒ??öÎÄ?þ) cat file | while read line do echo $line echo " :: Please input any key(s):c" str4read="" while true do chr4read=`dd if=/dev/tty bs=1 count=1 2>/dev/null` str4read=$str4read$chr4read if [ "$chr4read" = "" ] ;then break; fi done echo " :: |$str4read|" done 3 ???à?ö?Õ?ñÌæ??Ϊ×Ö?û sed 's/[ ][ ]*/ /g' Èç?û?Õ?ñÓëtab???æÊ?Óà sed -e 's/[[:space:]][[:space:]]*/ /g' filename 4ÓÃ?Å??ʵÏÖ?Ö?îÎÄ?þ #!/bin/bash if [ $# -ne 2 ]; then echo 'Usage: split file size(in bytes)' exit fi file=$1 size=$2 if [ ! -f $file ]; then echo "$file doesn't exist" exit fi #TODO: test if $size is a valid integer filesize=`/bin/ls -l $file | awk '{print $5}'` echo filesize: $filesize let pieces=$filesize/$size let remain=$filesize-$pieces*$size if [ $remain -gt 0 ]; then let pieces=$pieces+1 fi echo pieces: $pieces i=0 while [ $i -lt $pieces ]; do echo split: $file.$i: dd if=$file of=$file.$i bs=$size count=1 skip=$i let i=$i+1 done echo "#!/bin/bash" > merge echo "i=0" >> merge echo "while [ $i -lt $pieces ];" >> merge echo "do" >> merge echo " echo merge: $file.$i" >> merge echo " if [ ! -f $file.$i ]; then" >> merge echo " echo merge: $file.$i missed" >> merge echo " rm -f $file.merged" >> merge echo " exit" >> merge echo " fi" >> merge echo " dd if=$file.$i of=$file.merged bs=$size count=1 seek=$i" >> merge echo " let i=$i+1" >> merge echo "done" >> merge chmod u+x merge' 5µÃµ?ÉÏÔÂÎ?ÈÕÆÚ???ñÊ?ΪYYYYMMDD get_lastday_of_lastmonth() { yy=`date +%Y` mm=`date +%m-1|bc` [ $mm -lt 1 ] && mm=12;yy=`expr $yy - 1` aaa=`cal $mm $yy` dd=`echo $aaa|awk '{print $NF}'` echo $yy$mm$dd } print $NFµÄ$NFÊÇ?òÓ?×îºóÒ??öÁÐ??ÒòΪawkµÄÄÚÖÃ?äÁ?NFÊÇÁеÄ×ÜÊý???ø$NF?Í?ú ?í×Å×îºóÒ?ÁÐ 6 ʵÏÖÓÃbackup?òtarÃüÁîÀ?×öÄ?Â????Ý ÐèÒª???ÖÁ??öÄ?Â?µ?ÖеÄÎÄ?þÒÔ??Êô×é?Øϵ???ä??×ÓÄ?Â??á?????ä??Í??ý?Ü µÀ?ØÖÆtarºÍbackupÃüÁî????ÐèÒªÖÐ?äµÄarchive??????Âǵ?ËÙ?ÈÒÔ???Õ?äµÄ ?Øϵ?? (cd /source && tar cf - .) |(cd /dest && tar zxfp -) Å?Ã?ÓÐ backup ÃüÁî??µ?ÊÇ tar ÓÃ?ܵÀ?ÉÒÔ?? tar -cf - dir1 | ( cd dir2; tar -xvf - ) ?áÒÆ?ó?? more aaa.sh #?ÆËãÁ??öÈÕÆÚ?äÓÐ?àÉÙÌì #date1,date2:yyyymmdd #Usage:command date1 date2 str=$1 yy1=`echo $str|cut -c 1-4` mm1=`echo $str|cut -c 5-6` dd1=`echo $str|cut -c 7-8` str=$2 yy2=`echo $str|cut -c 1-4` mm2=`echo $str|cut -c 5-6` dd2=`echo $str|cut -c 7-8` count_day=`expr $dd2 - $dd1` while [ $yy2 -ne $yy1 -o $mm2 -ne $mm1 ] do mm2=`expr $mm2 - 1` [ $mm2 -eq 0 ] && mm2=12 && yy2=`expr $yy2 - 1` aaa=`cal $mm2 $yy2` bbb=`echo $aaa|awk '{print $NF}'` count_day=`expr $count_day + $bbb` done echo $count_day 7 ?àÐ?Ò??öÖ?ÔÊÐíÓÃ??Ö?ÐÐtelnetµÄshell ΪÁË?àÊÓÓÃ??ÍøÂç?Ù×?ÐÐΪ??Ö???unxiÖ??ú?øÉè???ÜÀíÔ?µÇÂ???È?ºóÓÃshel l?ØÖÆËû??Ö??ÉÒÔÊ?ÓÃtelnetÃüÁî??ÆäËûÒ??Å??Ðí???üÀ?cd??lsµÈ???ÍÊÇÒ?? öÓÃÀ?Ô??̵ÇÂ?µÄ?ÜÀíÆ?Ì???ÎÒ?Ôshell??Êì??ÇëÖ?µ??? .profileÖÐ?ÓÈë?º read addr telnet $addr exit 8 ÅÐ?ÏÎÄ?þµÄ?ÃÎÊÈ?ÏÞÊÇ??ÊÇ600 ls -l filename | awk '{ if($1 ~ "-rw-------") ..... }' ls -l filename | grep "^-rw------" -c #!/usr/bin/bash #showmod [ $# -eq 0 ] && { echo "Usage: $0 filelist ... "; exit ;} show() { { [ -d $1 ] && ls -ld $1 ; [ -f $1 ] && ls -la $1 ;} | awk '{ umask=0 umask_="" for(i=1;i %s ",$9,$1,umask_); }'; } for file_dir in $* do show $file_dir done 9 ËãÇàÍܵÄ?Å?? maxcount=$1; count=1; if [ $# -eq 1 ] then while [ $count -le $maxcount ] do echo $count Ö?ÇàÍÜ $count ÕÅ×ì, `expr $count * 2`Ö?ÑÛ??,`expr $count * 4`ÌõÍÈ; count=`expr $count + 1`; done; else echo "usage: sendos count" fi 10 ÔÚSHELL?ÌÐòÖÐʵÏÖ????ÈÎÒâ?ü?ÌÐø?? ÔÚÐ?Ò??öSHELL?ÌÐò???ÉÊÇÓöµ?ÁËÒ??öÄÑÌâ??ÔÚREAD?ÓÊÜÊäÈëÊ????ØÐë???Ø? µ?ü?ÅÄÜÈ?ÈÏ???øÎÒÐèÒªÖ?Òª??Ò??ö?ü?ÍÄܵõ?ÓÃ??µÄÊäÈë??ÎÞÐë???Ø?µ?ü? ?ÓÐÊ?Ã?ºÃ?ì??ÄØ #!/bin/sh 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 } echo "Press any key to continue..." char=`get_char` Èç?ûÄãµÄ?úÆ?ÉÏ??ÈÏstty rawÄÇÃ??Ѻ?ÊýÖÐÁ????öÏÖµÄraw???Écbreak?? 11 ÔÚlinux????ÏÂÆô??Ê??ò?ªnumlock ??ÏëÔÚϵÍ?Æô??Ê?×Ô???ò?ªNumLock???ÉÒÔÔÚ/etc/rc.d/rc.localÖÐ?ÓÈëÒÔÏÂÄÚÈÝ?º ????for t in 1 2 3 4 5 6 7 8 ????do ???? setleds +num ???? $t>/dev/null ????done 12 ÔÚshellÀïÈçºÎÏÞÖÆÊäÈëµÄ???È ?Ù?öÀý×Ó???ÈÈçÓÃ??ÊäÈëÓÃ??ÃûÊ?Ö?ÄÜ?øËûÊäÈë8?ö×Ö?û??Èç?û???ýÁË8?ö×Ö?û?â?ê?ÍÍ?Ö?ÔÚµÚ?Ë?ö×Ö?ûÄÇ?ù?????ÌÐø??Ò?Ö?µÈ?ý?Ø?µÖ?ÅÂÒª×Ô?ºÀ?ÁíÐ?Ò??öSHELLÁË?? ÎÒÏÖÔÚ?ÉÒÔʵÏÖµ?Èç?ûÊäÈë???öµÄ???â?ê?ÍÍ?ÔÚ×îºóÒ??ö×Ö?û??µ?ÊÇ?ÔÓÚÄÇÐ?ÊäÈëÐ?ÓÚ?æ??Î?ÊýµÄÄÇÐ??ÍÃ?ÕÛÁË???Ù?öÀý×Ó???ÈÈçÓÃ??Óò×î????ÄÜ???ý8Î???ÎÒÊäÈëÁË6Î?È?ºó?Ø?µ???Í???á?áÊø??Ò???ÒªÊäÈëÍê8Î????Ø?µ?Å?ÉÒÔ?áÊø ÎÄ?þÃû: input.sh ÓÃ???ºinput.sh ÏÞÖƵÄ???È Àý?ºinput.sh 8 ??ÏÞÖÆÊäÈë8Î??? #??/bin/ksh # Program Name : input.sh trap '' 1 2 3 5 7 9 15 13 getcon(){ stty raw -echo conchar=`dd if=/dev/tty bs=1 count=1 2>/dev/null` stty sane echo "$conchar" } while i=0;clear >/dev/tty echo " 13 Ë??ú(?à?ú)×Ô???????Ý???? ÎÊ Ìâ?º ??????Ë?ÓÐÁ?Ì?LINUX?þÎñÆ???Ã??ö?þÎñÆ?Ö?ÓÐÒ??öÓ?ÅÌ??ËùÒÔ???ݵÄÎÊÌâ?ÍÏÔµÃÌØ?ðÖØÒª??ÎÒÃÇ×?ÓÐMySQLÊý?Ý?â??µ?È?Í?Ê?Ò?Òª?â?öMySQL???ݵÄÎÊÌâ?? Ä? µÄ?º ????host ?úÆ?×îÖÕËùÓÐ???Ý??ÔÚÆäÉÏÁô???Ý??ship?úÆ????æhost?úÆ????Ý ?? ???º ????Í??ýshell?Å?????ò?üÏà?ØÒª???ݵÄÎÄ?þ??È?ºóÍ??ýftp?Ù×?ÏÂÔØ??ÉÏÔØÍê?É?â?ö?????? ????Á?Ì??úÆ?root Í??ýcrontab ÈÃ?Å??ÔÚ??×Ô?úÆ???Ê?Ö?ÐÐ?? ??????Òéhost Ã?ÌìÔçÉÏ3µãÖ?ÐÐ?? ??????Òéship Ã?ÌìÔçÉÏ6µãÖ?ÐÐ?? ×?Òâµã?º ????Á?Ì??þÎñÆ?ϵÍ?Ê??ä×îºÃÏà?î??Òª???ý1Ð?Ê??? ?????Ë?Å??ÊÇÃ?ÖÜÀñ?Ý6Ö?ÐÐ???ݵÄ??µ?È?ÄãÒ??ÉÒÔÐÞ?Ä?ÉÃ?ÔÂ?òÃ?Ìì???Ý?? ????µ?È?Ò??ÉÒÔÐÞ?Ä?ÉÒ??öÔöÁ????Ý?Å???? ?ßÌå?Å???º ÒÔÏÂΪhost?úÆ??Å?? #//////////////host?úÆ??Å??/////////////// #! /bin/sh HOST="abc.com" USER="backup_use" #ship?úÆ?backup_useÓÃ?? PASSWORD="backup_use" #ship?úÆ??ÔÓ?ÓÃ??ÃÜÂë BACKUPDIR="/home/backup_use/ship" #host?úÆ?backup_useÓÃ??Ä?Â? BACKUPDIR2="/home/backup_use/host" #host?úÆ?backup_useÓÃ??Ä?Â? MYSQLPASS="abc" #ship ?úÆ?MySQL root ÓÃ??ÃÜÂë PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/nusphere/MySQL/bin DOW=`date +%a` DM=`date +%Y%b%d` FILE1=ship-virtual-$DM.tar.gz FILE2=ship-MySQLdata-$DM.tar.gz FILE3=ship-szeasy-$DM.tar.gz FILE4=ship-other-$DM.tar.gz # FIL1=$BACKUPDIR2/host-main-$DM.tar.gz FIL2=$BACKUPDIR2/host-MySQLdata-$DM.tar.gz FIL3=$BACKUPDIR2/host-other-$DM.tar.gz # DIRECTORIE1="/www /home/jjd" # Òª???ݵÄÄ?Â?1 DIRECTORIE2="/etc /var/named /usr/local/nusphere/apache/conf" # Òª???ݵÄÄ?Â?2 # if [ $DOW = "Sat" ]; then # Ã??öÀñ?ÝÁùÍêÈ????Ý tar -zcpf $FIL1 $DIRECTORIE1 tar -zcpf $FIL3 $DIRECTORIE2 MySQLdump --all-databases -q -uroot -p$MYSQLPASS |gzip > $FIL2 ftp -i -n < $BACKUPDIR/$COMPUTER-MySQLdata-$DM.tar.gz fi 14 ÎÄ?þÐòÁÐa1,a2,a3...a11,a12...a1000?Ä?Éa0001,a0002...a1000? $cat test ls a* > tempfile1 sed 's/a//' tempfile1 > tempfile2 awk '{printf("mv a%s a%04s ", $0, $0)}' tempfile2 > tempfile3 chmod 700 tempfile3 ./tempfile3 rm tempfile* $chmod test ---------------------------------------------------------------- ls a*|awk '{ num=substr($1,2,length($1)-1); printf "mv %s a%04d ",$1,num }'>rename.sh sh rename.sh ---------------------------------------------------------------- for file in a* do newfile=`echo $file | awk '{printf "a%04d", substr($1, 2, length($1)-1)}'` mv $file $newfile done ?ø?ö??ÓÃawkµÄ??Ð?ÂÊ?áµÍÒ?µã ls -1 a*|while read j do num=`echo $j|cut -b 2-` num=`printf a%04s $num` mv $j $num done ----------------------------------------------------------------- ÉÔÎ?Ëõ?õÒ?ÏÂ?º for file in a* do mv $file `echo $file|awk '{printf "a%04d", substr($1,2,length($1)-1)}'` done Èç?ûa1,a2,a3...µÈÎÄ?þÊÇ??×ÔÓÐ??Í?µÄÀ?Õ?ÃûÄØ???ÍÏña1.pxx,a2,baa,a3. tga... ÕâÑùÊÇ??ÊÇ?ÉÒÔÄØ?º for file in a* do nam=`echo $file|cut -d. -f1` exe=`echo $file|cut -d. -f2` mv $file `echo $nam|awk '{printf "a%04d", substr($1,2,length($1)-1)}'`.$exe done 15 ?ûÖ??ÓÒ??öIPµÇÂ?µÄshell ?â?ö????0?º ÓÃshellÍêÈ??ÉÒÔ?â?ö??Èç?ûÓÐtcpwrapperµÄϵÍ?,?ÉÒÔÖ??Ó?Ó/etc/hosts.deny ?â?ö????1?º ÔÚ/etc/profileÀï?ÓÒ??Îshell?Í?ÉÒÔÁË(sco openserver) ÕâÊÇÎÒÐ?µÄÖ?ÒªÇó??C?εÇÂ?µÄshell,?Ä?Ä?Í?ÉÒÔÁË. who=`who am i|awk '{print $1}'` myterm=`who am i|awk '{print substr($2,4,2)}'` if [ "x"$who = "xroot" ] then subnet=`finger|grep $myterm|awk '{print substr($8,1,8)}'` else subnet=`finger|grep $myterm|awk '{print substr($7,1,8)}'` fi test x$subnet != x && test x$who != xroot && test "x"$subnet != "x46.8.44." && echo " Please login from local network " && exit 16 evalÓÃ??ÈýÀý ## shell:/bin/sh ## #ÀýÒ?: #Ñ?ÕÒ?ûºÏÌõ?þµÄ?äÁ?Ãû,È?ºó???Ã?äÁ?µÄÖµ??ÓèÁíÒ??äÁ? v1=aaa v2=bbb c=1 if [ $c -eq 1 ] then vname=v$c #ÕÒµ??ûºÏÌõ?þµÄ?äÁ?ÃûΪv1 eval vvv="$"$vname ; echo vvv: $vvv #???äÁ?v1µÄÖµ??Óèvvv,??,Ê?vvv=aaa eval vvv='$'$vname ; echo vvv: $vvv #???äÁ?v1µÄÖµ??Óèvvv,??,Ê?vvv=aaa #eval vvv=$$vname ; echo vvv: $vvv #?íÎóÓÃ?? fi #Àý?þ:#ÒÔ?äÁ?v1µÄÖµaaa×?Ϊ?äÁ?Ãû,???äÁ?vaaaµÄÖµ??ÓèÕâÒ?ÐÂ??ÒåµÄ?äÁ?aaa v1=aaa ; vaaa="This is aaa" #eval $v1=$vaaa ; echo aaa: $aaa #?íÎóÓÃ?? #eval $v1="$vaaa" ; echo aaa: $aaa #?íÎóÓÃ?? eval $v1='$vaaa' ; echo aaa: $aaa #ÀýÈý: #ÒÔ?äÁ?v1µÄÖµaaa×?Ϊ?äÁ?Ãû,?????äÁ?Ãû×Ö??×?Ϊֵ??Óè×ÔÉí v1=aaa ; vaaa="This is aaa" eval $v1=$v1 ; echo aaa: $aaa #ÓëÀý?þµÄ?íÎóÓÃ????Í?,ÕâÒ?ÓÃ??ÊÇÕýÈ?µÄ eval $v1="$v1" ; echo aaa: $aaa #ÓëÀý?þµÄ?íÎóÓÃ????Í?,ÕâÒ?ÓÃ??ÊÇÕýÈ?µÄ #Çø?ðÔÚÓÚ??Àý?þÖеÄvaaaµÄÖµÖÐ?äÓÐ?Õ?ñ eval $v1='$v1' ; echo aaa: $aaa 17 ?Ä?äUNIXÖÕ?ËÑÕÉ? a. ÓÃecho "[31m?âÊÔ[37m" echo "^[[Xm YourChar" (X=30,31...36?) Çë×?ÒâÕâ?öתÒåϵÁеÄÇÃ??ÊÇ??[30m echo "[;;m" ×?Òâ??Óï?ä?ØÐëÒªÔÚ""Ö??ä??ÊôÐÔ?Ö?ô?ûΪ";"??ÈçÉÁË?ºìÉ? echo "[31;5m?âÊÔ" b. Ç??? ???? ÑÕÉ? --------------------------------------- 30 40 ºÚÉ? 31 41 ?tÉ? 32 42 ?GÉ? 33 43 üSÉ? 34 44 Ë{É? 35 45 ×Ï?tÉ? 36 46 ÇàË{É? 37 47 ?×É? ?úÂë ÒâÒå ------------------------- 0 OFF 1 ?ßÁÁÏÔÊ? 4 underline 5 ÉÁË? 7 ???×ÏÔÊ? 8 ???É?û c. ?úÉúÑÕÉ?(ºÚÉ??????ÓÂÌÉ?Ç???É?)?º sco: setcolor red; echo "abcd"; setcolor white linux/BSD: /usr/bin/echo -e " 18 ?Ö??È?Ê?bashÌáÊ??û export PS1="[u@h W]$ " ??ÏÕÆð?û??ÔÚ~/.bashrcºÍ~/.bash_profile 19 grep/awk/sedµÄ?àÌõ?þ?éÑ? # cat gt one two three four five six one two one seven three # grep one three gt grep: three: No such file or directory gt:one two three gt:one two gt:one seven three ?ØÈ?Í?Ê??öÏÖoneºÍthreeµÄÐÐ???á?ûÓ??ÃÊÇ?º one two three one seven three a. ÓÃgrep cat gt | grep one | grep three b. ÓÃawk awk '/one/&&/three/' gt c. ÓÃsed sed -ne '/one/{/three/p}' gt Íê?Ï
本文档为【Shell经典实例】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_482581
暂无简介~
格式:doc
大小:44KB
软件:Word
页数:0
分类:
上传时间:2018-05-25
浏览量:19