Shell 经典实例.docx
- 文档编号:2422867
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:15
- 大小:20.36KB
Shell 经典实例.docx
《Shell 经典实例.docx》由会员分享,可在线阅读,更多相关《Shell 经典实例.docx(15页珍藏版)》请在冰豆网上搜索。
Shell经典实例
Shell¾µäʵÀý.txt21´ºÅ¯»¨»á¿ª£¡Èç¹ûÄãÔø¾Àú¹ý¶¬Ì죬ÄÇôÄã¾Í»áÓдºÉ«£¡Èç¹ûÄãÓÐ×ÅÐÅÄÄÇô´ºÌìÒ»¶¨»áÒ£Ô¶£»Èç¹ûÄãÕýÔÚ¸¶³ö£¬ÄÇô×ÜÓÐÒ»ÌìÄã»áÓµÓл¨¿ªÂúÔ²¡£Thizlinuxϵͳ½Ì³ÌShell¾µäʵÀý
----------------Milo
¾µäСshell
1ÁÐĿ¼Ê÷µÄshell
½Å±¾ÈçÏ£º
¡¡¡¡#!
/bin/sh
¡¡¡¡#dtree:
Usage:
dtree[anydirectory]
¡¡¡¡dir=${1:
-.}
¡¡¡¡(cd$dir;pwd)
find$dir-typed-print|sort-f|sed-e"s,^$1,,"-e"/^$/d"-e"s,[^/]*/([^/]*)$,`----1,"-e"s,[^/]*/,|,g"
2whileÖÐʹÓÃread(fileÊÇÒ»¸öÎļþ)
catfile|whilereadline
do
echo$line
echo":
:
Pleaseinputanykey(s):
c"
str4read=""
whiletrue
do
chr4read=`ddif=/dev/ttybs=1count=12>/dev/null`
str4read=$str4read$chr4read
if["$chr4read"=""];thenbreak;fi
done
echo":
:
|$str4read|"
done
3½«¶à¸ö¿Õ¸ñÌ滻Ϊ×Ö·û
sed's/[][]*//g'
Èç¹û¿Õ¸ñÓëtab¹²´æʱÓÃ
sed-e's/[[:
space:
]][[:
space:
]]*//g'filename
4Óýű¾ÊµÏÖ·Ö¸îÎļþ
#!
/bin/bash
if[$#-ne2];then
echo'Usage:
splitfilesize(inbytes)'
exit
fi
file=$1
size=$2
if[!
-f$file];then
echo"$filedoesn'texist"
exit
fi
#TODO:
testif$sizeisavalidinteger
filesize=`/bin/ls-l$file|awk'{print$5}'`
echofilesize:
$filesize
letpieces=$filesize/$size
letremain=$filesize-$pieces*$size
if[$remain-gt0];then
letpieces=$pieces+1
fi
echopieces:
$pieces
i=0
while[$i-lt$pieces];
do
echosplit:
$file.$i:
ddif=$fileof=$file.$ibs=$sizecount=1skip=$i
leti=$i+1
done
echo"#!
/bin/bash">merge
echo"i=0">>merge
echo"while[$i-lt$pieces];">>merge
echo"do">>merge
echo"echomerge:
$file.$i">>merge
echo"if[!
-f$file.$i];then">>merge
echo"echomerge:
$file.$imissed">>merge
echo"rm-f$file.merged">>merge
echo"exit">>merge
echo"fi">>merge
echo"ddif=$file.$iof=$file.mergedbs=$sizecount=1seek=$i">>merge
echo"leti=$i+1">>merge
echo"done">>merge
chmodu+xmerge'
5µÃµ½ÉÏÔÂδÈÕÆÚ£¬¸ñʽΪYYYYMMDD
get_lastday_of_lastmonth()
{
yy=`date+%Y`
mm=`date+%m-1|bc`
[$mm-lt1]&&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&&tarcf-.)|(cd/dest&&tarzxfp-)
żûÓÐbackupÃüÁµ«ÊÇtarÓùܵÀ¿ÉÒÔ£¬
tar-cf-dir1|(cddir2;tar-xvf-)
°áÒÆ´ó·¨
moreaaa.sh
#¼ÆËãÁ½¸öÈÕÆÚ¼äÓжàÉÙÌì
#date1,date2:
yyyymmdd
#Usage:
commanddate1date2
str=$1
yy1=`echo$str|cut-c1-4`
mm1=`echo$str|cut-c5-6`
dd1=`echo$str|cut-c7-8`
str=$2
yy2=`echo$str|cut-c1-4`
mm2=`echo$str|cut-c5-6`
dd2=`echo$str|cut-c7-8`
count_day=`expr$dd2-$dd1`
while[$yy2-ne$yy1-o$mm2-ne$mm1]
do
mm2=`expr$mm2-1`
[$mm2-eq0]&&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Ö÷»ú¸øÉ豸¹ÜÀíÔ±µÇ½£¬È»ºóÓÃshell¿ØÖÆËû¡£Ö»¿ÉÒÔʹÓÃtelnetÃüÁÆäËûÒ»¸Å²»Ðí£¬°üÀ¨cd£¬lsµÈ¡£¾ÍÊÇÒ»¸öÓÃÀ´Ô¶³ÌµÇ½µÄ¹ÜÀíƽ̨¡£ÎÒ¶Ôshell²»Ê죬ÇëÖ¸µ¼¡£
.profileÖмÓÈ룺
readaddr
telnet$addr
exit
8ÅжÏÎļþµÄ·ÃÎÊȨÏÞÊDz»ÊÇ600
ls-lfilename|awk'{if($1~"-rw-------").....}'
ls-lfilename|grep"^-rw------"-c
#!
/usr/bin/bash
#showmod
[$#-eq0]&&{echo"Usage:
$0filelist...";exit;}
show()
{
{[-d$1]&&ls-ld$1;[-f$1]&&ls-la$1;}|awk'{
umask=0
umask_=""
for(i=1;i { if(substr($1,i+1,1)=="r") umask+=4; if(substr($1,i+1,1)=="w") umask+=2; if(substr($1,i+1,1)=="x") umask+=1; if(i%3==0) { umask_=sprintf("%s%d",umask_,umask); umask=0; } } printf("%-20.20s: %-10.10s-->%s",$9,$1,umask_); }'; } forfile_dirin$* do show$file_dir done 9ËãÇàÍܵĽű¾ maxcount=$1; count=1; if[$#-eq1] then while[$count-le$maxcount] doecho$countÖ»ÇàÍÜ$countÕÅ×ì,`expr$count*2`Ö»ÑÛ¾¦,`expr$count*4`ÌõÍÈ; count=`expr$count+1`; done; else echo"usage: sendoscount" fi 10ÔÚSHELL³ÌÐòÖÐʵÏÖ¡®°´ÈÎÒâ¼ü¼ÌÐø¡¯ ÔÚдһ¸öSHELL³ÌÐò£¬¿ÉÊÇÓöµ½ÁËÒ»¸öÄÑÌ⣬ÔÚREAD½ÓÊÜÊäÈëʱ£¬±ØÐë°´»Ø³µ¼ü²ÅÄÜÈ·ÈÏ£¬¶øÎÒÐèÒªÖ»Òª°´Ò»¸ö¼ü¾ÍÄܵõ½Óû§µÄÊäÈ룬ÎÞÐë°´»Ø³µ¼ü£¡ÓÐʲôºÃ°ì·¨ÄØ #! /bin/sh get_char() { SAVEDSTTY=`stty-g` stty-echo sttyraw ddif=/dev/ttybs=1count=12>/dev/null stty-raw sttyecho stty$SAVEDSTTY } echo"Pressanykeytocontinue..." char=`get_char` Èç¹ûÄãµÄ»úÆ÷Éϲ»ÈÏsttyrawÄÇô°Ñº¯ÊýÖÐÁ½´¦³öÏÖµÄraw»»³Écbreak¡£ 11ÔÚlinux»·¾³ÏÂÆô¶¯Ê±´ò¿ªnumlock ¡¡ÏëÔÚϵͳÆô¶¯Ê±×Ô¶¯´ò¿ªNumLock£¬¿ÉÒÔÔÚ/etc/rc.d/rc.localÖмÓÈëÒÔÏÂÄÚÈÝ£º ¡¡¡¡fortin12345678 ¡¡¡¡do ¡¡¡¡setleds+num ¡¡¡¡$t>/dev/null ¡¡¡¡done 12ÔÚshellÀïÈçºÎÏÞÖÆÊäÈëµÄ³¤¶È ¾Ù¸öÀý×Ó£¬±ÈÈçÓû§Êä
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Shell 经典实例 经典 实例