ࡱ> DF?@ABC%` R(Gbjbj̟̟b4BhTfBjF>TTT36i T$|hrCq/3qqCTTqTTqT: q0VVV da>,$aaaCCydaaaqqqqBBBd6BBBBBB  ShellAS N  ChinaUnix[W|NStet v U_  TOC \o "1-3" \h \z \u  HYPERLINK \l "_Toc201114760" 1 :NUOSZP shell   PAGEREF _Toc201114760 \h 1  HYPERLINK \l "_Toc201114761" 2 shell prompt(PS1) N Carriage Return(CR) vsQ|  PAGEREF _Toc201114761 \h 1  HYPERLINK \l "_Toc201114762" 3 +RN echo0`O_N echo /f echo wY\  PAGEREF _Toc201114762 \h 2  HYPERLINK \l "_Toc201114763" 4 " "(S_S) N ' '(US_S)](WT  PAGEREF _Toc201114763 \h 4  HYPERLINK \l "_Toc201114764" 5 var=valueexport MRT](WT  PAGEREF _Toc201114764 \h 7  HYPERLINK \l "_Toc201114765" 6 exec ߍ source ](WT  PAGEREF _Toc201114765 \h 11  HYPERLINK \l "_Toc201114766" 7 ( ) N { } ](WT  PAGEREF _Toc201114766 \h 13  HYPERLINK \l "_Toc201114767" 8 $(( )) N $( ) ؏ g${ } ](WT  PAGEREF _Toc201114767 \h 14  HYPERLINK \l "_Toc201114768" 9 $@ N $* ](WT  PAGEREF _Toc201114768 \h 17  HYPERLINK \l "_Toc201114769" 10 && N || ](WT  PAGEREF _Toc201114769 \h 19  HYPERLINK \l "_Toc201114770" 11 > N < ](WT  PAGEREF _Toc201114770 \h 22  HYPERLINK \l "_Toc201114771" 11.1  PAGEREF _Toc201114771 \h 22  HYPERLINK \l "_Toc201114772" 11.2  PAGEREF _Toc201114772 \h 22  HYPERLINK \l "_Toc201114773" 11.3  PAGEREF _Toc201114773 \h 23  HYPERLINK \l "_Toc201114774" 11.4  PAGEREF _Toc201114774 \h 24  HYPERLINK \l "_Toc201114775" 12 `O if ؏/f case bT  PAGEREF _Toc201114775 \h 26  HYPERLINK \l "_Toc201114776" 13 for what?while N until ](WT  PAGEREF _Toc201114776 \h 28  HYPERLINK \l "_Toc201114777" 14 [^ ] ߍ [! ] ](WT  PAGEREF _Toc201114777 \h 31  :NUOSZP shell  (WN~ shell /fNHNNKNMR NYbN͑ehƉO(uN{:gvsQ|bNwS{:gvЏ\O Ny_lxN FOO(utSelvc[lxN\OqR lxNvqRSǏ d\O|~(Operating System) voNegc{ N[ N bNk)Y@bv Linux %Nf:y[ argument KNT ؏OQN*NbcL&{(new-line charactor)0FO/f Nbv command v^lNUOv argument ~g1\SiRN*NbcL&{SN `OSmُ*NbcL&{S S)R(u echo v -n option  $ echo  n $ NYbNV0R command line vi_ Neg NOv echo }TN}YN command line S g command_name(echo) S option(-n) v^l gNUO argument 0` w w echo v argument ؏ N{USWc Neg `OSՋՋY NveQ $ echo first line first line $ echo -n first line first line $N N$N*N echo }TN-N `OOSs argument vN>f:y(W`OvO\U^ bcL&{SRƉ -n option v ge +R0_f>fv ,{N*N echo 1uNbcL&{SSmN c Negv shell prompt 1\c(WQ~g TNLN0 N[ N echo dN -n options KNY 8^(u y؏ g -e/T(uSe~c6RW[&{vlbc(S Nh) -EsQSe~c6RW[&{vlbc(Ydk) -nSmL+gKNbcL&{S(N -e y Nv \c W[&{ TIN) sQN echo }TN@b/ecvSe~c6RW[&{Y Nh \aALERT / BELL (N|~USQÔX) \bBACKSPACE _N1\/fT] Rd. \cSmL+gKNbcL&{S \EESCAPE 1. \fFORMFEED bcuW[&{ \nNEWLINE bcLW[&{ \rRETURN Vf. \tTAB hyKN Learning the Bash Shell, 2nd Ed.) b bNSNǏ[OegN echo v ySc6RW[&{ ON $ echo -e "a\tb\tc\nd\te\tf" a b c d e f NOЏ(u \t eg:S abc ؏ g def S(u \n \ def bc NNL0 ON $ echo -e "\141\011\142\011\143\012\144\011\145\011\146" a b c d e fNONv~gN7h S/fO(u ASCII kQۏMOx0 O N $ echo -e "\x61\x09\x62\x09\x63\x0a\x64\x09\x65\x09\x66" a b c d e fNON] NY S/fُ!kbc(u ASCII ASmQۏ6Rx0 OV $ echo -ne "a\tb\tc\nd\te\bf\a" a b c d f $V:N e W[kTb/f Rd.(\b) VdkQ~g1\l g e N0(W~_ge,T0RNXÔT /f \a vpg\OW1uN TeO(uN -n y Vdk shell prompt '}c(W,{NLKNT0`O N(u -n v݋ `O(W \a TQR*N \c _N/f T7hvHeg0 N[ N (WeTv shell d\OS shell script N echo }TN/fg8^O(uv}TNKNN0ke (u echo eghgSϑyKN Learning the Bash Shell, 2nd Edition ,{ 177 - 180 uvf $\vQ/f 178 uvAm zV Figure 7-1) literal luHN}Yv Q>N abcd0123456 ُN eW[ /f literal (easy) FO meta tS8^ObNV` (confused?)0N[ N MR$NzbN(W command line -N]x0R$N*N:gNNk!kOx0Rv meta  * IFS1u <space> b <tab> b <enter> NKNN~b(bN8^(u space )0 * CR1u <enter> Nu0 IFS /f(uegb command line vkN*N͋(word)(uv V:N shell command line /f c͋egYtv0 CR R/f(ueg~_g command line (uv ُ_N/f:NUObNre <enter> }TN1\OэvSV0 dN IFS N CR 8^(uv meta ؏ g = [Sϑ0 $ \OSϑbЏ{fbc( NN shell prompt dmN)0 > ͑[T stdout0 < ͑[T stdin0 | }TN{~0 & ͑[T file descriptor b\}TNnNTSgbL0 ( ) \vQQv}TNnN nested subshell gbL b(uNЏ{b}TNfbc0 { } \vQQv}TNnN non-named function -NgbL b(u(WSϑfbcvLu[V0 ; (WMRN*N}TN~_ge _euvQԏV

QgbL C }TN (W,{N!k[A Sϑe 1uNzzC N[ N zz C > ' $ echo "$A" B C(W NO-N 1uN <enter> nN hard quote S_-N Vdk NQ\O:N CR W[&{egYt0ُ̑v <enter> US~S/fN*NeL&{S(new-line) ] 1uN command line v^l_0R CR W[&{ VdkۏeQ,{N*N shell prompt (PS2 N > &{Sh:y) command line v^ NO~_g v0R,{ NL bNeQv <enter> v^ N(Whard quote ̑b Vdkv^lsQ dke command line x0R CR W[&{ N/f~_g0N~ shell egYt0 NOv <enter> /fnN soft quote -Nv݋ CR _NO T7hsQ $ A="B > C > " $ echo $A B C6q 1uN echo $A evSϑlN soft quote -N VdkS_Sϑfbc[bTv^\O}TNL͑~e <enter> Oʑ:N IFS N/fʑ:N New Line W[&{0 T7hv (u escape NSsQ CR W[&{ $ A=B\ > C\ > $ echo $A BC NO-N ,{N*N <enter> ߍ,{N*N <enter> GW escape W[&{sQ핆N Vdk_N N\O:N CR egYt FO,{ N*N <enter> 1uNl1 Vdk\O:N CR ~_g command line 0FO1uN <enter> .,g(W shell meta -Nvyrk'` (W \ 1Tb NNSmvQ CR R NOOYuvQ IFS R0`bSsIQ/fN*N <enter> .@bNuvW[&{1\ gS/fY NُNS CR IFS NL(New Line) FF(Form Feed) NULL NuHNePOʑ:NuHNW[&{ ُ*Nb1\lSmcN b/fYu~TLbabaxd"}N0N soft quote ߍ hard quote v N T ;N/f[NgN meta vsQN&T N $ eg\Of $ A=B\ C $ echo "$A" B C $ echo '$A' $A(W,{N*N echo }TNL-N $ nN soft quote -N \ NsQ Vdk~~YtSϑfbc Vdk echo \ A vSϑ0$(l N)0} ُQ*N shell meta sQ MQc(W shell -Nm0RYt [tevb:N awk Spe-Nv command meta 0 ( l N vQ-Nv $0 /f awk Q^v field number ^awk vSϑ awk ꁫvSϑeO(u $ )/ft㉆N hard quote vR Qegt soft quote N escape 1\ N awk "{print \$0}" 1.txt awk \{print\ \$0\} 1.txt6q `O9eS awk v $0 v 0

NQfYveHhbT0 ~`NN`Џ(u,gzf[0RvwƋRgY N$N2N  HYPERLINK "http://bbs.chinaunix.net/forum/viewtopic.php?t=207178" http://bbs.chinaunix.net/forum/viewtopic.php?t=207178  HYPERLINK "http://bbs.chinaunix.net/forum/viewtopic.php?t=216729" http://bbs.chinaunix.net/forum/viewtopic.php?t=216729 var=valueexport MRT](WT ُ!kbNfe"N_ command line HQegNN N bash Sϑ(variable)'T.@bvSϑ 1\/f1\/f)R(uN*Nyr[v Ty (name)egX[SNkSNSSv f:y-N $Ny&{S/fN!jN7hv(vz$Np)0S_6qN g~v gS؏/fN 'YN <= \NbI{N >= 'YNbI{N == I{N != NI{N NǏ O(u (( )) \OtepeKmՋe Nߍ [ ] vtepeKmՋdmqNN0(fYvKmՋb\N,{ASz:N'Y[N~)0`7h}Ys'T ُ!kfeُHNY NbvN~ v^l gRkNyS(uvr` fYv 1\SKbQeNpU0 $@ N $* ](WT $@ N $* KNMR _HQN shell script v positional parameter w0bN]~wSSϑ(variable)/fYUO[INSfbcv ُ*N N(uQYN0FO/f bN؏wS gNSϑ/f shell Q[v NvQ Ty/fbN NaO9ev vQ-N1\ g positional parameter (WQ0 (W shell script -N bNS(u $0, $1, $2, $3 ... ُ7hvSϑR+RcS}TNL-NvY NN script_name parameter1 parameter2 parameter3 ...bN_[f1\sQ $0 1\/fNh shell script Ty(_),g $1 1\/fvQTv,{N*NSpe Ydk{|c& {_Yuav/f IFS v\O(u _N1\/f IFS quoting YtT HN positional parameter _NO9eS0 Y NO my.sh p1 "p2 p3" p41uN(W p2 N p3 KNvzzNO GP my.sh ̑ gN*N fucntion S my_fun , (W script -Nэ my_fun fp1 fp2 fp3 HN function Qv $0 /f my.sh $1 R/f fp1 ^ p1 N0 >@t~    񽯢xoxUxoExE:hImHnHuhG-OhI0JmHnHo(u2jhIhV>*B*UmHnHphuhImHnHuhG-OhI0JmHnHu$jhG-OhI0JUmHnHuhh3]haJjhh3]hUaJhh3]h5CJPJaJhh3]h(5CJPJaJ$hh3]hRx5B*CJ,PJaJ,ph$hh3]h5B*CJ,PJaJ,phhh3]h(5B*aJph  @BDFHJLNPRTVXZ\^`bdfhj$a$gds;BF&GjlnprtT 6 j  $lZ" h gd6$a$gds;B  H J L N P R T V X * , . 0 2 4 6 8 : r t o jwhVUmHnHuhG-OhI0JmHnHo(u2jhIhV>*B*UmHnHphuhG-OhI0JmHnHuhImHnHu$jhG-OhI0JUmHnHu j}hVUmHnHuhImHnHujhIUmHnHu!t v x z | 6 8 : < > @ H N R T ^ d f n p r żŬŬŬӼżgżŬŬŬŬ2jhIhV>*B*UmHnHphu jqhVUmHnHujhIUmHnHuhImHnHuhG-OhI0JmHnHo(uhImHnHuhG-OhI0JmHnHu$jhG-OhI0JUmHnHu2jhIhV>*B*UmHnHphu'  & ( * ^ ` b d f h j l n ¹««p¹«V2jhIhV>*B*UmHnHphu jehVUmHnHuhG-OhI0JmHnHo(u2jhIhV>*B*UmHnHphuhG-OhI0JmHnHuhImHnHu$jhG-OhI0JUmHnHuhImHnHujhIUmHnHu jkhVUmHnHu!         V X Z \ ^ ` h j t | ~ ;ͭ;;o; jYhVUmHnHu2jhIhV>*B*UmHnHphu$jhG-OhI0JUmHnHu j_hVUmHnHujhIUmHnHuhImHnHuhG-OhI0JmHnHo(uhImHnHuhG-OhI0JmHnHu($(2:<>rtvz|~żŬŬŬӼżgżŬŬ2jhIhV>*B*UmHnHphu jShVUmHnHujhIUmHnHuhImHnHuhG-OhI0JmHnHo(uhImHnHuhG-OhI0JmHnHu$jhG-OhI0JUmHnHu2jhIhV>*B*UmHnHphu" "$&(`bdfjlrt|  ¹««p¹«V2j hIhV>*B*UmHnHphu jG hVUmHnHuhG-OhI0JmHnHo(u2jhIhV>*B*UmHnHphuhG-OhI0JmHnHuhImHnHu$jhG-OhI0JUmHnHuhImHnHujhIUmHnHu jMhVUmHnHu! &(*^`bfhjlnp8:;ͭ;p;_; j; hVUmHnHuhG-OhI0JKHmHnHu2j hIhV>*B*UmHnHphu$jhG-OhI0JUmHnHu jA hVUmHnHujhIUmHnHuhImHnHuhG-OhI0JmHnHo(uhImHnHuhG-OhI0JmHnHu#:<>FHJ~ XZøӏӁgøVӏӁ j/ hVUmHnHu2j hIhV>*B*UmHnHphuhG-OhI0JmHnHuhImHnHu j5 hVUmHnHujhIUmHnHuhImHnHuhG-OhI0JKHmHnHu$jhG-OhI0JUmHnHu2j hIhV>*B*UmHnHphu Z\^fhjLøӏӁgӁWWWhG-OhI0JmHnHo(u2jhIhV>*B*UmHnHphuhG-OhI0JmHnHuhImHnHu j)hVUmHnHujhIUmHnHuhImHnHuhG-OhI0JKHmHnHu$jhG-OhI0JUmHnHu2j hIhV>*B*UmHnHphuLNPTVXZ\^ "$&^`bd¹««p¹«V2jhIhV>*B*UmHnHphu jhVUmHnHuhG-OhI0JmHnHo(u2jhIhV>*B*UmHnHphuhG-OhI0JmHnHuhImHnHu$jhG-OhI0JUmHnHuhImHnHujhIUmHnHu j#hVUmHnHu!dhjtv 0;ͭ;荇~ulucuZuQuQuhh3]h0GaJhh3]h;aJhh3]hkaJhh3]hn4aJhh3]haJhh3]haJ hCaJjhh3]hUaJ$jhG-OhI0JUmHnHu jhVUmHnHujhIUmHnHuhImHnHuhG-OhI0JmHnHo(uhImHnHuhG-OhI0JmHnHu  .V|L 8P:zgdp`gd5`gdp`gdm`gd=x`gd8(`gd^_`gddi ^`gdn4    ,.TVHL8<txz|JLPZ 68NP8:xzhh3]h:aJhh3]h5aJhh3]h0GaJhh3]hpaJhh3]hmaJhh3]h=xaJhh3]h+aJhh3]h8(aJhh3]h^_aJhh3]hKaJhh3]haJhh3]h1aJ:&(46HL( * Z ^ !!2!4!X!Z!!!!!"""" #z!hh3]h QaJfHq &hh3]h QaJhh3]haJhh3]h:aJhh3]h0GaJhh3]hmtvaJhh3]hYpaJhh3]hnaJhh3]hKwaJhh3]h[uaJhh3]hzaJhh3]hn4aJhh3]haJhh3]h:aJ.(6* !4!Z!!!"""#.###4$`gd(<gd(<`gd Q`gdgd@`gd:`gdn WD`gdYgdz`gddi`gd: #"#,#.#8#>#######2$4$r$t$% % %%*%,%r%t%v%%%%&&,&.&B&D&\&^&&&&&&&&','.'L'N'~''}hh3]hzaJhh3]h4|4~444455N6Z6\6n6p6r6t66666666,7.7xohh3]hx=aJhh3]haJhh3]hx=KHaJhh3]hxKHaJo(hh3]hc2KHaJhR FKHaJo(hh3]hKHaJhKHaJo( hb#h hb#o( hb#hhb#KHaJo( hhQhhhQKHaJo(hsKHaJo(hh3]hKHaJ*11@2H2223{r[[[$$1$Ifa$gd'Dl $1$a$gd $1$a$gdx{kd$$Ifl J!  t 0644 l` ap 33:3B3333hhh$$1$Ifa$gdxlgdhQ{kdT$$Ifl J!  t 0644 l` ap 3364>4~444||eee$$1$Ifa$gdxlgdb#}kd$$Ifl J!  t 0644 l` ap 445P6\6p6t666{{ddddd$$1$Ifa$gdxl $1$a$gdx{kd9$$Ifl J!  t 0644 l` ap 6666.7 9R99:;<{{vmmmmd[`gd(=`gd.`gdvgdx= $1$a$gdx{kd$$Ifl J!  t 0644 l` ap .7Z7\7^777888.8688 9 999P9R9T9`999:::::::;;;L;N;P;;;;;<< <ʺʺóêʝʅzsjsh_hKH h(=KHo(h(=KHOJQJo(h(=hKHOJQJh.KHOJQJo(h.hKHOJQJhh3]hvKH h.KHo(hvhKH hvKHo(hh3]hKH h6hm h6hc2hvh6OJQJo(h6hOJQJ h6h) <&<@<B<4=6=h=j=l=p=z=|=~==============>> > >B>F>L>N>T>V>>>>>? ? ??F?H?L?N??????????@@@@@AAA6AAA BBh^hKH h^KHo( h>Z5KHo(h_hKH h_KHo(h>Z5hKH h$6KHo( h(=KHo(hh3]hKHh_hKHE<B<6=j=|====>N>> ?H????@@AABBBgd^`gd^`gd$6`gdhR`gd(=BBBBBBC C C8C:CLCNC`CCCCCDDNDPDDDDDDEFERETEZE\EbEdEzE|E~EEEGGGGGGHHHHպ{{{{hdiKHaJo( hdiha hdihhh3]haKHaJhq=KHaJo( hq=hx= hq=o(hq=hq=o( hq=hhh3]h5KHaJhE.KHaJo(hh3]h2`KHaJ h6hx= h^KHo(hh3]hKHhh3]h^KH0B C:CNC`CCCCCDPDmh_`gdgdq={kd$$Ifl J!  t 0644 l` ap $$1$Ifa$gd2`l PDDDFETE\EdE|EEEE_{kd$$Ifl J!  t 0644 l` ap $$1$Ifa$gdx=l`gdgdq= EGGGHHH H II"I&I:Ih{kd$$Ifl J!  t 0644 l` ap $$1$Ifa$gdx=lgddi HH HI III I"I$I&I8I:IDIJJJJJJKK,K.K6K8KKKLLLL*L,L2L4LJLLLTLLLMMMMMM0N2N:Nch$$1$Ifa$gdlgdb6{kd$$Ifl J!  t 0644 l` ap aabbbfbjbcc@c|c~ccccccccccc`ddddddddeeee e$e*eDeFe\e^eteveeeeeeeeeffӽӽӶڭ hcxo( hBhB hBo(hBhBo( hBhhh3]hKH hNw[h hNw[h[u hNw[h1x<hNw[h1x<o( hNw[hhh3]h KHaJ hb6h hb6h hb6hb6 hb6o(4>c@ccch$$1$Ifa$gdlgdNw[{kdc$$Ifl J!  t 0644 l` ap ccdddFe^eveeeeeffgzzzgdcxgdB{kd$$Ifl J!  t 0644 l` ap ffffffffgg gg6g8gg@gXgZghgjgvgxg:hk@kkkkkkkkllllllllllllmmmmܽ~sjsjsc[T h&hWh&hWo( h&hh%KHaJo(hh3]hjKHaJ h%h h%hJh%hJo( h%h hJh hJhhJKHaJo(hh3]h;nKHaJhh3]hKHaJhh3]h7KHaJh7KHaJo(hh3]hKHaJjh7KHUaJh h70JKHaJ kkklh$$1$Ifa$gdlgdJ{kd$$Ifl J!  t 0644 l` ap lllllmhhh$$1$Ifa$gdlgd%{kd $$Ifl J!  t 0644 l` ap mm4nvnnh$$1$Ifa$gdlgd&{kdp $$Ifl J!  t 0644 l` ap mm2n4ntnvnnnnno o o$ooooooooppp|p~pppppppp8q:qxqzqqqqqqq r˻˫˻˖˖ˍ˂wnnnnhoKHaJo(hh3]hKHaJhh3]hKHaJhLvKHaJo(hnoKHaJo( hnohik hiko(h%uKHaJo( hnoh hnohh&KHaJo(hh3]h#&KHaJhh3]h3KHaJ h&hh&h&o( h&hh&hWo(+nnno o"ohhh$$1$Ifa$gdlgd&{kd $$Ifl J!  t 0644 l` ap "o$oooohh$$1$Ifa$gdlgdno{kdP!$$Ifl J!  t 0644 l` ap oo~pppppphhhhh$$1$Ifa$gd#&lgdno{kd!$$Ifl J!  t 0644 l` ap pp:qzqqqqqq"rfr~r{ddddddddd$$1$Ifa$gdl $1$a$gd#&{kd0"$$Ifl J!  t 0644 l` ap r"rdrfr|rrrrrrrdsfstsvsssssss t tttFtHttttttttt@uBuRuTudufuuuuuuu(v*v8v:vHvJvvvvvvvvvvvwwwwRwTwbwdwh)KHaJo(hh3]hKHaJhnKHaJo(hKHaJo(hi\KHaJo(hh3]hKHaJhh3]h#&KHaJhoKHaJo(F~rrrrrfsvssss tmh____Zgdi\`gdi\gd{kd"$$Ifl J!  t 0644 l` ap $$1$Ifa$gdl tHtttttBuTufuuuu*v:vJvvvvvvwwTwdwtww $1$`a$gd) $1$`a$gdn $1$a$gddwrwtwwwww^x`xxxxxxxxxxxxyy y y,y.yLyNyRyTytyvyyyyyyzzzz{{{2{ƻƻ~~rhh3]hKHaJo(h| KHaJo( h| h h| hhh3]haJhh3]haJhh3]h.J\aJhh3]hKHaJhh3]h1eKHaJh1eKHaJo(h,KHaJo(h; KHaJo(hh3]h)KHaJh)KHaJo(hh3]hKHaJ,ww`xxx.yvyyyyz{|}}~ `gddc gd| `gd/I $1$`a$gdD`gdDgdgd.J\ $1$`a$gd, $1$a$gd $1$`a$gd)2{6{x{|{{{{{{{| |(|*|2|6|h|l||||||||||||}}}}&}(}.}0}}}}}}}}}}}~~F~Ͻ֣֣~hdc hdc KHo(hdc hmKHhdc hKHhh3]h/IKH h/IKHo(h/Ih/IKHo(h/IhmKHh/IhKHhh3]h+KH h+KHo(hh3]hKH h| o( h| h+ h| h0G h| h h| hm1F~~<>BD ptހ04:>LNĄƄ҅ԅ,.L}r}krbrh * KHaJo( h * hhh3]h%GKHaJ h * h h * o( hhh+TOJQJo(h+ThOJQJ h+To( ho( hh_ hhhh3]hKHhhmKHhhKH hKHo(hh3]hdc KH hdc KHo(hh3]hKHhdc hKH&NƄԅ.J_Zgd * {kd#$$Ifl J!  t 0644 l` ap $$1$Ifa$gdl`gd * gd JLԇ:{rerrNN$$1$Ifa$gdl $1$`a$gdne. $1$a$gd& $1$a$gdH{kd#$$Ifl J!  t 0644 l` ap L46:<>@҇ԇև؇&(8:fjz~&(ŶxmddYdhh3]hhOKHaJhhOKHaJo(hh3]hmKHaJ"hne.KHaJfHo(q &hne.hmKHaJhne.hKHaJh~XKHaJo(hne.KHOJQJaJo(hne.hKHOJQJaJhHh&KHaJo( h&hhh3]h@#KHaJh@#KHaJo(h * KHaJo(hh3]hKHaJ )*45BCghيڊ./034abz{ċŋȋɋыҋ "<>\^|ü߼˩jhqKHUaJ hqh hqhhqhqo(hh3]hqKHaJhqKHaJo(hh3]h >4KHaJhh3]hKHaJhh3]hKHaJ? *5Chڊ/4by$$1$Ifa$gdlyz{ŋɋҋhhhhhh$$1$Ifa$gdlgdq{kd#$$Ifl J!  t 0644 l` ap ">^zhhh$$1$Ifa$gdlgdq{kd`$$$Ifl J!  t 0644 l` ap z|8jސB{{{vqhhhhhh`gdqgdgd $1$a$gd{kd$$$Ifl J!  t 0644 l` ap *.02Ѝҍ68RT`bdrtxz|~hjܐϹypkg`k`[V ht8o( h o( hqh`h` h`o(h`OJQJo(h`hOJQJhqhqo( hqhhh3]haJhh3]haJhKHaJo(hh3]hKHaJhqKHaJo(h hq0JKHaJjhqKHUaJ#j@%h hqKHUaJhh3]hqKHaJhqKHaJ!ܐސ@BDʓ̓HJRTĕƕ̕ԕ֕*,Ի䥚xoxoxoxoh8KHaJo(hh3]h8KHaJ hI0h hI0hhI0KHaJo(hh3]hKKHaJ hqhhh3]h5B*KHphhI0hI0KHo(hI0h5B*KHphhI0hKH hI0KHo(hh3]hKH ht8KH hqh ht8o(+JTƕʕ$$1$Ifa$gdI0l$J$1$If`Ja$gdI0l$;$1$If`;a$gdI0l$$1$Ifa$gdlgdI0`gdq ʕ֕̕,hMMM$;$1$If`;a$gd8l$$1$Ifa$gd8lgdI0{kd&$$Ifl J!  t 0644 l` ap ,468<(*.0LPR :Jndn֛؛ļִ֢֎֎օօ}laօhh3]h0GKHaJ hth5B*KHaJphhtKHaJhtKHaJo(hfwnKHaJo(hh3]hKHaJhKHaJo(hoJKHaJo(hf1KHaJh KHaJh KHaJo(hhLuKHaJo(hh3]hKHaJhh3]hKKHaJh8KHaJo(hh3]h8KHaJ",6:<ڛܛRI<7gd $1$`a$gdhLu $1$a$gd{kd&$$Ifl J!  t 0644 l` ap $$1$Ifa$gd8l$J$1$If`Ja$gd8l؛ڛܛԜܜRT6:ڞܞlnrʟ̟ҟԟޟ 02FH:<,غᬤᬤ hDaJo( haJo( hFbo( hFbhhFbhFbo( hFbaJo( hJ/2aJo(hJ/2h\~aJo( h\~aJo(hJ/2hB*aJphhJ/2haJhh3]haJhh3]haJhh3]hKHaJo(3ܛT:ܞn̟ԟ 2HΣڣ`gdD`gd`gdFbgdFbgd`gd\~gd,48:JRX̣Σأڣrtv@BZĥȥʥ̥68:~ܦަ "xzĹد~~~~wnwwhN3haJ hN3aJo( haJo(h hD0JaJjm'h hDUaJhh3]hDaJ hDaJjhDUaJhDOJQJaJo(hDhOJQJaJ hDaJo(hh3]haJ htTaJo(hDhaJhDh5B*aJph+ަ zΧ`hʩکFp"`gdgd =`gdS`gd =gdN3`gdN3`gdgdz̧Χ02^`tvΨШfh~ȩʩةکީDFnpĪƪ "BDīƫ$&jl "¹¹¹¹¹hhaJ haJo( h&aJo(h&haJ hBWqaJo( h =aJo(hh3]haJ hN3aJo(hN3haJI&l^ FH²ƳfdTԶڶgdN`gdN`gd_^gdja`gd/~`gd?gd =`gd<>ƮȮ\^ FHڰDFFHX\²ijƳֳ&*dfxz´(*`dnpҵԵ߱ߨߟhchaJhh3]hlm2aJ h_aJo(h_haJ hlm2aJo( hjaaJo(hjahaJ h/~aJo(hh3]haJ h?aJo(hhaJ haJo(< RTbfln|~Ķʶ̶ҶԶضڶ "&(RTVXڸܸ4602LP\^ſ hFZHaJo( hIaJo( hwaJo( hnSaJhh3]hnSaJ hnSaJo( haJo( hNaJo(hh3]haJhchaJhch5aJCڶ"(TXܸ62^`gdx^gdx`gdFZHgdI`gdwgdN^޺ "$(*02»Ļ (*vxVξоXZbdUh"[h"[o( h"[hhh3]huKHaJ h%(hh%(h%(o( h%(hhh3]haJhh3]haJo( h%(aJo( hxaJo( hIaJo( hFZHaJo(hh3]haJ;$2*xT$$1$Ifa$gdlgd%(gdgdgdI`gdx TVZdh$$1$Ifa$gdlgd%({kd($$Ifl J!  t 0644 l` ap 6NPf&hhhMMM$J$1$If`Ja$gd"[l$$1$Ifa$gdlgd"[{kd*)$$Ifl J!  t 0644 l` ap  NYQ*N{USv my.sh script w w'T #!/bin/bash my_fun() { echo '$0 inside function is '$0 echo '$1 inside function is '$1 echo '$2 inside function is '$2 } echo '$0 outside function is '$0 echo '$1 outside function is '$1 echo '$2 outside function is '$2 my_fun fp1 "fp2 fp3"6qT(W command line -NэN N script 1\wSN chmod +x my.sh ./my.sh p1 "p2 p3" $0 outside function is ./my.sh $1 outside function is p1 $2 outside function is p2 p3 $0 inside function is ./my.sh $1 inside function is fp1 $2 inside function is fp2 fp36q (WO(u positional parameter veP bNlaNNw1T * $10 N/ffbc,{ 10 *NSpe /ffbc,{N*NSpe($1)6qTQeN*N 0 NvQTW _N1\/f my.sh one two three four five six seven eigth nine ten ُ7hv command line my.sh ̑v $10 N/f ten /f one0 T \_\_Wb0R ten v݋ g$Nyel elN/fO(ubN NNzN~v ${ } _N1\/f(u ${10} sSS0 elN 1\/f shift N0 (uOvleg @bv shift 1\/fSm positional parameter -Ng]vSpe( $0 NSq_T)0vQ؞NOeg}YN (W command line Nэ my.sh p1 "p2 p3" p4 v݋ N{/f $@ ؏/f $* S_0R p1 p2 p3 p4 1\/fN0FO/f YgnN soft quote -Nv݋ "$@" RS_0R "p1" "p2 p3" "p4" ُ N*N N Tv͋ (word)"$*" RS_0R "p1 p2 p3 p4" ُNte2NUSNv͋k0 bNSO9eN NMRbv my.sh OKNQ[Y N #!/bin/bash my_fun() { echo "$#" } echo 'the number of parameter in "$@" is '$(my_fun "$@") echo 'the number of parameter in "$*" is '$(my_fun "$*")6qTQgbL ./my.sh p1 "p2 p3" p4 1\wS $@ N $* ](WTN0 && N || ](WT }Y N[f ۏeQ$NMOpevzN0Npeg _'T_N__PN'T(WT{,gzvKNMR HQbNNN*Ni_return value WbN(W shell NэvkN*N command b function (W~_gvePO OV6rۏ zN*N

N*NOP[egf}YNGPS_MRvU_Q gNN my.file veN no.file /f NX[(Wv $ touch my.file $ ls my.file $ echo $? # first echo 0 $ ls no.file ls: no.file: No such file or directory $ echo $? # second echo 1 $ echo $? # third echo 0 NOv,{N*N echo /fsQN ls my.file v RV S_0R 0 v

NOeg}YN sQN [ string1 = string2 ] ُ*N test N < ](WT 0R I/O redirection NYHQbNƋN N File Descriptor (FD) 0 z^vЏ{ (W'YN`Q N/fۏLpenc(data)vYt ُNpencNTۏSQ0RT̑bT ُ1\/f file descriptor (FD) vR(uN0(W shell z^-N g8^O(uv FD 'Yi g N*N R+R:N 0 Standard Input (STDIN) 1 Standard Output (STDOUT) 2 Standard Error Output (STDERR) (WhQ`Q N ُN FD R+RߍY NY(device)sQT stdin(0) keyboard stdout(1) monitor stderr(2) monitor bNSN(uY N N}TNKmՋN N $ mail -s test root this is a test mail. please skip. ^d ( Te c crtl ߍ d .) _f>f mail z^@bۏvpenc 1\/fN stdin _N1\/f keyboard ۏv0 NǏ N_k*N z^v stdin ߍ mail N7hN keyboard ۏ V:N z^\OSNNchHhSpeۏ stdin Y $ cat /etc/passwdFO/f cat KNTl gchHhSpeRSYUObT T `]ss wpU0 $ cat (YuapencQ0RT̑SN gT+R_N c ^d y_) N stdout N stderr U I{b gzzQ~'T ؏/f gTMOMRegscbTvO ~Ǐ NN*N~`NT `O[ stdin N stdout ^ Nt'T 6qT bN~~ w stderr }YN0N[ N stderr luHNt㉄vzN1\/f Oo` _T ]0ke ۏvchHhSpe/f NX[(Wv bN(W monitor N1\ w0RN $ ls no.such.file ls: no.such.file: No such file or directory  N*N}TN TeNu stdout N stderr bT ؏ N{US 0R monitor eg1\}YN $ touch my.file $ ls my.file no.such.file ls: no.such.file: No such file or directory my.file okay dk sQN FD SvQ Ty0؏ gvsQTvY vO`O]~lN'T }Y c NegbN w wYUO9eSُN FD vpencOS bNS(u < eg9eSۏvpencOS(stdin) OKNNc[vchHhۏ0 bNS(u > eg9eSQvpencOS(stdout, stderr) OKNQ0Rc[vchHh0ke $ cat < my.file 1\/fN my.file ۏpenc $ mail -s test root < /etc/passwd R/fN /etc/passwd ۏ ُ7hNeg stdin \ NQ/fN keyboard ۏ /fNchHhۏN %N SYUObT S_`OdaN 0< Seg1\/f9eS stdin vpenceQOSKNT vOt㉂Y N$N*N redirection 1\ NN * 1> * 2> MR/f9eS stdout vpencQOS T/f9eS stderr vpencQOS0$N/f\S,gQ0R monitor vpenclTQ0Rc[chHhS0 1uN 1 /f > v؞

N > /fv Tv /f9e stdout 0(u N!kv ls OP[egfN N}YN $ ls my.file no.such.file 1>file.out ls: no.such.file: No such file or directory ُ7h monitor 1\SiR N stderr ]0V:N stdout ~Qۏ file.out SN0 $ ls my.file no.such.file 2>file.err my.file ُ7h monitor 1\SiR N stdout V:N stderr QۏN file.err 0 $ ls my.file no.such.file 1>file.out 2>file.err ُ7h monitor 1\eU_Nl g V:N stdout N stderr ~l0RchHhSN uT~~~ wegt > Np_N NfUW/f Nl`O'T NǏ gN0We؏/flaN Nv0HQ /f TeQeQv0keY Nُ*NOP[ $ ls my.file no.such.file 1>file.both 2>file.both GPY stdout(1) N stderr(2) Te(WQeQ file.both v݋ R/fǑS v e_TegQeQvvMRbv0 bNGPN*N stdout N stderr TeQeQ file.out v`b_}YN * HQ stdout QeQ10*NW[&{ * 6qT stderr QeQ 6 *NW[&{ HN ُePS,g stdout vMRb 6 *NW[&{1\ stderr vcN0 YUO㉳QbT@bq\ Nll0 NlNlV bNSNbcN*N`~\ stderr [ۏ stdout b\ stdout [ۏ sterr N/f'Y[(Wb TNNchHh N1\LNW bingoW1\/fُ7hfU * 2>&1 1\/f\ stderr v^ۏ stdout \OQ * 1>&2 b >&2 1\/f\ stdout v^ۏ stderr \OQ N/f MRbvd\OSN9e:N $ ls my.file no.such.file 1>file.both 2>&1 b $ ls my.file no.such.file 2>file.both >&2 ُ7h N1\v'Y"kUNT uT0 NǏ IQ㉳QN TeQeQv؏ NY bN؏ gvQ[b]N㉄v0 EeN؏l~_g +Rp_W^JTT bNQVegW f[[OvgؚXLu 1\/f V'Yvzz 0N/fzzTV'YWWb_N Nw V:Nb؏l0RXLu0FOُ*N zz W[ tS^8^/dev/null my.file傁vSS` w0R stderr bT؏ N{USW\ stdout _0R null 1\L $ ls my.file no.such.file >/dev/null ls: no.such.file: No such file or directory c Neg GPYUS~Sэ z^ N` w0RNUOQ~gbT T ُ̑YuNNKb N!kvlvlP[ N`N gNWdN(u >/dev/null 2>&1 KNY `O؏SNYdk $ ls my.file no.such.file &>/dev/null (c:y\ &> bcb >& _NLfU~~! ) okay[[O c Neg QbN w wY N`Q $ echo "1" > file.out $ cat file.out 1 $ echo "2" > file.out $ cat file.out 2  weg bN(W͑[ stdout b stderr ۏNNchHhe bcb >> 1\}Y $ echo "3" >> file.out $ cat file.out 2 3YdkNeg ͑[vvhchHhKNQ[v^ NO1YS evQ[RNvXR(WgTbS0easy  uT 0FO S`OQN!k(uVUSNv > eg͑[v݋ HN evQ[؏/fO m cvW ُe `OYUOMQbT YNW yes b,T0RNW NǏ ؏ gf}YvT e6qNe;NُHN gN ~1\`ON*N&VYl'T $ set -o noclobber $ echo "4" > file.out -bash: file: cannot overwrite existing file  YUOSmُ*N"P6R"bT T \ set -o bcb set +o 1\L $ set +o noclobber $ echo "5" > file.out $ cat file.out 5Q gRl NSm S 4Ne vQvhchHhT T [Of NSJT_NW JU~~~ _s{v0_s{vfU U e1\e0RN_/f NvNW $ set -o noclobber $ echo "6" >| file.out $ cat file.out 6 Yua0Rl g(W > TbQR*N |  1\}Y(la > N | KN N gzz}vT)0Qeg؏ gN*N`OSSvbT $ echo "some text here" > file $ cat < file some text here $ cat < file > file.bak $ cat < file.bak some text here $ cat < file > file $ cat < file Ula0Rl g `HNgT*N cat }TN w0Rv file z/fzzvW why? why? why? MRbc0R$ cat < file > file KNTS,g gQ[vchHh~gtSmcNW tُNsPvQ[ N ُS/f priority v ] * (W IO Redirection -N stdout N stderr v{SOHQQY}Y MbON stdin ۏDe0 _N1\/f (W NO-N > file OHQ\ file nzz 6qTMbۏ < file FOُePchHh]~nzzN Vdk1\Sb NۏNUOpencN T SegYdk Y N$NOSYUObT $ cat <> file $ cat < file >> fileU Tf[N ُ$N*NT{Hh1\S_~`NpU NKNMRN\ONW }YN I/O Redirection _N_[N sorry V:Nb_NSwSُHNY ]fU NǏ ؏ gN7hNN/fN[v TMO‰O 1\/f pipe line _NW0R pipe line bvO N\N NOLubN(W_Y command line N8^ w0Rv |  &{S1\/f pipe line N0 NǏ vzz pipe line /fuHNNNbT +R%`+R%` HQgN NIlW[xQ w w pipe /fuHNa` lW[1\/f 4l{ va` HN `O`aN N4l{/f`HNN9hc@wN9hvTS k9h4l{KNv input ߍ output SYUObTupIQNSeg pipe line v I/O ߍ4l{v I/O /fN!jN7hv * NN*N}TNv stdout c0R NN*N}TNv stdin SNW vnxYdk N{(W command line N`OO(uNY\*N pipe line MRT$N*N command v I/O /f|_dkޏcvW(m`U`O~N_zNW)0FO/fstderr bT }YW NǏ_N[ft * 4l{o4l`HNR _N1\/f(W pipe line KN MRN*N}TNv stderr /f NOcۏ NN}TNv stdin v vQQ N(u 2> [0R file Sv݋ [؏/f0RvƉhV NbegW ُp`O(W pipe line Џ(u NR_lav0 b`OSO * gRl\ stderr _NUۏ NN*N}TNv stdin ST elS_6q/f g N`Oe]f[ǏNWbc:yN N1\}Y * `OYUO\ stderr Tv^ۏ stdout N TQbT `OT{ NQeg NKNTQegb'T (Yg`O8vwYSv݋) 0b `ONa$\*g=\Wb `Of~x0RǏ Nbv * (W cm1 | cm2 | cm3 & ُk pipe line -N 傁\ cm2 v~gX[0RgNchHhbT `OQb cm1 | cm2 > file | cm3 v݋ `O[OSs cm3 v stdin /fzzvW(S_6qfU `O\4l{c0R+Rv4l`lNW) jfv`ObOYdk㉳Q cm1 | cm2 > file ; cm3 < file /fv `OvnxSNُ7hZP FOg'YvOWY/fُ7hNeg file I/O OSS PW (W command gbLvte*NǏ z-N file I/O /fg8^vg'YHe@gKb0 Q/f g~v shell d\O O=\ϑMQbMNO file I/O vs0 Nb؏ gf}YelT gv 1\/f tee }TNN0 * @b tee }TN/f(W Nq_TS,g I/O v`Q N \ stdout Y6RNN0RchHhS0 Vdk Nbv}TNLSNYdkSb cm1 | cm2 | tee file | cm3 (W N tee O9eQvhchHh `O9e:NXRQ[v݋ S(u -a Speb0 W,g N pipe line v^(u(W shell d\O N/f^8^^lv $\vQ/f(W text filtering eb Q>N cat, more, head, tail, wc, expand, tr, grep, sed, awk,& I{I{eW[Yt]wQ -dMw pipe line egO(u `OO`ɉ command line Seg/f;m_Ydk|i_vW 8^N g Ȏ[NCS~v^ 6qV NtS(WopkpsYW KNa0}YN sQN I/O Redirection vN~1\0RdkJTNk=0 eT gzzv݋ Q:N'Y[N~vQ[(W shell N}YsvNW `O if ؏/f case bT ؏_bN(W,{ 10 z@bN~v return value T/fv c NegN~vQ[NKN gsQ `Ov__NGPgv"kPNeIQ@bbmcv݋ ^`؏/fHQVS)n`N)n`NQVeg0`O_return value b``O_N^勰_N && N || /fuHNa`'T(uُ$N*N&{SQM-d command group v݋ bNS shell script S_fRjfT0ke comd1 && { comd2 comd3 } || { comd4 comd5 }a`/fGPY comd1 v return value :N true v݋ RgbL comd2 N comd3 &TRgbL comd4 N comd5 0 N[ N bN(WQ shell script veP ~8^(u0Rُ7h7hvagNN\OQ N TvYtR\O0(u && N || vnxSNbagNgbLvHeg 6q N N{| Negt tS N/fHNv‰0fYeP bN؏/fU"k(u if & then & else & ُ7hv keyword eghagNgbL0(W bash shell -N bNSNYdkO9e NNkNx if comd1 then comd2 comd3 else comd4 comd5 fiُ_N/fbN(W shell script -Ng8^(u0Rv if $Re_S if Tbv command line vreturn value:Ntrue (bNg8^(u test }TNegQ return value) RgbL then Tbv}TN &TRgbLelse Tv}TNTfi R/f(ueg~_g$Re_v keyword 0(W if $Re_-N else NSN N(u FO then /f_v0 ( then T N`эNUO command S(u  ُ*N null command Nf)0 S_6q then b else Tb _NSNQO(ufۏNB\vagN$Re_ ُ(W shell script N_8^0 gYyagN O^ ۏL$Rev݋ bNRSO(u elif ُ7hv keyword  if comd1; then comd2 elif comd3; then comd4 else comd5 fia`/f comd1 :N true 6qRgbL comd2 &TRQKmՋ comd3 6qRgbL comd4 P comd1 N comd3 GW Nbz 1\gbL comd5 0 if $Re_vOP[_8^ `OSN_Y shell script -N w_0R bُ̑1\ NQ>NOP[N0c Neg:N'Y[N~v/f case $Re_0}6q if $Re_]S^N'YNvagNgbLN 6q (WgN:WT-N tS NYup;m $\vQ/f(W string _7hv$Re N keY N QQ () { echo -n "Do you want to continue? (Yes/No): " read YN if [ "$YN" = Y -o "$YN" = y -o "$YN" = "Yes" -o "$YN" = "yes" -o "$YN" = "YES" ] then QQ else exit 0 fi } QQNO-N bN w_Qeg gpvN/f(WN$Re YN ve(W,{NzMOe, Mb gcdKNR. >NO: [!a]* h:yS_MRvU_ N@b g NN a _v_ Ty /tmp/[a\!]* h:y /tmp vU_ NN a b ! _v_ Ty. (`: :NUO ! MRbR \ bT? c:y: AS NKN 4 ) 2) [ -] -Nv - ]S$NGW gW[&{e, Mbh:yNkV, &TRN\O  (QS) W[&{egYt. >NO /tmp/*[-z]/[a-zA-Z]* h:y /tmp vU_ N@b gN z b - ~>\vP[vU_ NNeW[k( NR'Y\Q)_v_ Ty 3) N * b ? _v wildcard N9SMυeN(sSN . _veN). >NO *.txt v^ N9SM .txt FOS9SM 1.txt ُ7hv_ Ty FO 1*txt S 1?txt GWS9SM 1.txt ُ7hv_ Ty0 W,g N, cc wildcard v^ N, SYR~`N, QRN`, 1\qRЏ(uN.Q!kc: +R_N ibEQ+͑~ ُ*N͑yr'`, NS\O(u(W argument v path N.ke, GPS_MRvU_ N g a.txt b.txt c.txt 1.txt 2.txt 3.txt ُQNeN.S_bN(W}TNL-N N ls -l [0-9].txt v}TNLe, V:N wildcard YN argument vMOn N, N/f9hncvQ9SMv_, ibU\:N 1.txt 2.txt 3.txt ,Q͑~Q ls -l 1.txt 2.txt 3.txt ُ7hv}TNL.Vdk, `O(W}TNL Nre ls -l [0-9].txt N ls -l 1.txt 2.txt 3.txt /f T7hv~g, vQSVck/fNdkN... :) Part-II: Regular Expression c Negv Regular Expression(RE) S/f*N'Yv, v_Y, bُ̑S_6q NS__[hQ.S ^g&^~'Y[N*NW,gveQ蕂i_, 1\_/fYN0HQegN Ne}YN: What is expression?{USeg, 1\/f h , _N1\/fNN(Wle@bHvQ[.6q , u;m-N, henZiv\a`cnZi c6ee[teNevO, S N/fN[fvN`.V MbOQsHNYv O , wSSS h Nf JU0 T7hv`b__NSu(W{:gvpencYtǏ z-N, $\vQ/fS_bN(Wc/gNk eW[Q[ veP0HN, bN Ny: gUOelSN'Y[vOMgNO z^ hv|nx^0Rgؚ z^bT?T{Hh1\/f hQS N, N1\/fbNُ̑v Regular Expression fU0 6q , (WۏeQ RE N~KNMR, N2HQbN)n`NN N shell AS N,{ 4 , _N1\/fsQN quoting vN.sQ./fY:SR shell command line Nv meta N literal ُ$Ny N TvW[&{{|+R.6qT, bُ̑Mbߍ`ORE h_̑vW[&{_N/fR:N meta N literal ُ$Ny! uT, NwN1rv/f&TbdmqNNbT?ُ_N*`fU, V:Nُvnx/fg[fmqNv0We, Rf[ RE v gS_YeP{k(Wُ̑!Vdkyr+R\_tT0 {US , d^`O\ RE Q(Wyr[ z^O(uv,g̑,&TR, bNv RE _N/fǏ command line eQv.6q , N\ RE @bY(uv meta W[&{, ߍ shell meta W[&{/fQzv.ke, * ُ*NW[&{, (W RE ̑/fN*N modifier(T), (W command line N, tS/f*N wildcard !HN, bN勂YUO㉳Qُ7hvQzbT? sQ.1\/f w`O[AS N,{ 4 @bcv quoting /f&TYt㉆N!`Of}v0R shell quoting 1\/f(W command line NsQ shell meta ُNW,gSt,`O1\_{~gv㉳Q RE meta N shell meta vQzN:(u shell quoting sQc shell meta 1\/fN!1\ُHN{US0QNRc0Rv * W[&{:NO, (W command line -Nl g quoting Ytv݋, Y abc* , 1\O\O:N wildcard expansion egibEQS͑~N.\KNnN quoting -N, Y "abc*", RSMQ wildcard expansion vYt. }YN, N'YJS)Y, ؏lۏeQck_v RE N~bT0'Y[+R%`, V:NbvYef[ΘeǏbN'T? (W RE vh_̑, ;NR$NyW[&{(character): literal N meta.@b literal 1\/f(W RE ̑ NwQyrkRvW[&{, Y abc, 123 ُN; meta (W RE ̑wQ gyrkvR, sQKN(W meta MRbO(u escape( \ )W[&{.6q , (WN~ meta KNMR, HQbNegƋN NW[&{~T(character set)Of}YN. @bv char. set 1\/f\Y*Nޏ~vW[&{\ON*NƖT, ke abc h:y abc N*Nޏ~vW[&{, FO|_dkrz ^ƖT. (S{USƉ:N N*N char. set) (abc) h:y abc ُ N*Nޏ~W[&{vƖT. (S{USƉ:NN*N char. set) abc|xyz h:yb abc b xyz ُ$N*N char. set KNN [abc] h:yUSNW[&{, S:N a b b b c . (N wildcard KN [abc] Stv T) [^abc] h:yUSNW[&{, N:N a b b b c sSS. (N wildcard KN [!abc] Stv T) . h:yNaUSNW[&{. (N wildcard KN ? Stv T) (WƋN char. set ُ*Ni_T, 6qTQbNYƋQ*N RE -N8^v meta W[&{ p(anchor)(uNhƋ RE NSP[-NvMOn@b(W. 8^ g: ^ h:yS. Y ^abc h:yN abc _vSP[ $ h:yS>\. Y abc$ h:yN abc ~>\vSP[ \< h:y͋. Y \<abc h:yN abc _v͋ \> h:y͋>\. Y abc\> h:yN abc ~>\v͋ OpW[&{(modifier)rzh:ye,g NwQaIN, N(uNO9eMRN*N char. set vQs!kpe. 8^ g * h:yMRN*N char. set vQs!kpe:N 0 bY!k. Y ab*c h:y a N c KNS g 0 bY*N b X[(W ? h:yMRN*N char. set vQs!kpe:N 0 b 1 !k. Y ab?c h:y a N c KNS g 0 b 1 *N b X[(W + h:yMRN*N char. set vQs!kpe:N 1 bY!k. Y ab+c h:y a N c KNS g 1 bY*N b X[(W {n} h:yMRN*N char. set vQs!kpe_{:N n !k. Y ab{3,}c h:y a N c KN_{ g 3 *N b X[(W.{n,}: h:yMRN*N char. set vQs!kpe\:N n !k. Y ab{3,}c h:y a N c KN\ g 3 *N b X[(W {n,m} h:yMRN*N char. set vQs!kpe:N n 0R m !k. Y ab{3,5}c h:y a N c KN g 3 0R 5 *N b X[(W 6q , S_bN(WƋ+R modifier e, tS_[f_eu Lu(boundary) W[&{v͑'`.NRc0Rv ab{3,5}c :NO, ُ̑v a N c 1\/fLuW[&{N.傡l gLuW[&{v.^_, bN_[N\OQv.ke: bN(u ab{3,5} ُ*N RE (\N c ُ*NLuW[&{)SNb0R abbbbbbbbbbc (a T g 10 *N b )ُ2NW[T?NRMbv modifier bNN,O:NbNv b /f 3 0R 5 *N, 傅QNdkV, 1\ N/fbNhv.Vdk, bNbO_{sv:Nُ*N RE b N0R~g06q T{HhtS/fSNv! :NuHNbT?bN͑e ab{3,5} ُ*N RE w w: bNhv/f a Tc 3 0R 5 *N b sSS, FO 3 0R 5 *N b TbbNtSlĉ[/fuHN, Vdk(W RE TbSN/fNaveW[, S_6qSb b _NSNfU! (f}vNT?) T7hv, bN(u b{3,5}c _N T7hSNb0R abbbbbbbbbbc ُ2NW[v.FObNO(u ab{3,5}c ُ7hv RE e, 1uN Te g a N c ُ$N*NLuW[&{, 1\*b6q N TN! gzzQ`N N, :NUObN(u NbُN RE Sb0R abc ُ2NW[bT? x* ax*, abx*, ax*b abcx*, abx*c, ax*bc bx*c, bcx*, x*bc (؏ gfY...) FO, bN(WُN RE MRTR+RRN*N ^ N $ ُ7hv anchor, SYUObT?Rf[ RE e, Scc NbُNW,gv meta 'Yv1\SNeQ蕆N.NYMR, RE /fNyĉSveW[he_, ;N(uNgNeW[Yt]wQKN,Y grep, perl, vi, awk, sed, I{I{. 8^(uNh:yNkޏ~vW[&{2N, UcKNbfbcKN.6q , ky]wQ[ RE h_vwQSOb gNN~_]_, NǏ, W,gSR؏/fNv.Scc RE vW,gSt, 1\Nt~vtfN, S/f(W[\Oe zRSsSS. keN grep eg, (W Linux N`OS~b0R grep, egrep, fgrep ُQ*N z^, vQ]_'YY N * grep: O~v grep z^, (Wl gSpev`Q N, SQ&{T RE W[&{2NKNSP[. 8^SpeY N -v S!j:y, SQ" N+T" RE W[&{2NKNSP[ -r R_!j_, S TeYt@b gB\~P[vU_̑veN -q Y؞!j_, NQNUO~g(stderr dY. 8^(uNS return value, &{T:N true, &TR:N false .) -i _eu'Y\Q -w te͋k[, {| -n TeQLS -c SQ&{Tk[vLpe -l SQ&{Tk[veN Ty -o SQ&{T RE vW[&{2N. (gnu eHrr g, N_@b gHr,g/ec.) -E Rbc:N egrep * egrep: :N grep vibEQHr,g, 9eoNY O~ grep Nb NOvd\O. ke: - grep KN N N/ec ? N + ُ$Ny modifier, FO egrep RS. - grep N/ec a|b b (abc|xyz) ُ{| bN k[, FO egrep RS. - grep (WYt {n,m} e, (u \{ N \} Yt, FO egrep R N Ydk{|v b*NNO^(u egrep 1\ N(u grep fU0 * fgrep: N\O RE Yt, h_N\ON,W[&{2NYt, @b g meta GW1YSR. }YN sQN RE veQ, bfe1\N~0Ȓُ. }6qQ_ gpqN, N gN‰__N N_|nx, NǏ, YN{/f['Y[ gN*NN]'T0ُ$N)Y؏ gev݋, bQ>NNOegRgN N, NR'Y[f}Yvt. GPYf gSv݋, _NzS:N'Y[N~N N sed ُ*N]wQ.      PAGE 22 46LPdf$&(,ln dfTVĕƕZ\"$ hjl68<@üüïïïhHh5KHhHKHOJQJo(hHhKHOJQJ h"dKHo(hh3]hKH h"do( h"[o(h"[h"[o(h"[KHaJo(hh3]huKHaJ h"[h h"[h<&*,n fmhgd"[{kd)$$Ifl J!  t 0644 l` ap $$1$Ifa$gd"[l fVƕ\mhgd"[{kd *$$Ifl J!  t 0644 l` ap $$1$Ifa$gdl \$<$$1$Ifa$gdlgdH`gdH`gd"dgd"[`gd"[ @Dx~RVœĜƜLNĞƞȞ̞<>  ƻyhh3]hKHaJo(hh3]hKHaJhKHaJo( hOh hOhO hOo(hOhOo( hOhhh3]h BKHaJhh3]hKH hOKHo(hh3]hKHhHhHKHo( hHKHhHhKH hHKHo(,VNvv___$$1$Ifa$gdl`gdOgdO{kdz*$$Ifl J!  t 0644 l` ap ƞʞ̞>RMMgd{kd*$$Ifl J!  t 0644 l` ap $$1$Ifa$gdl$J$1$If`Ja$gdl(*FH¡46*.^`nprtv:<TV:<>@z|ܼܼܼܼܼܼܼܼh$XKHaJo(hh3]h BKHaJ hD hhh3]hKH hD ho hoo( hD hD hD o( hD hmhD hD o( hD hhh3]haJhh3]haJhh3]hKHaJ9*6`<V<@|$$1$Ifa$gdlgdD `gdo`gd6gd8hhh$$1$Ifa$gdlgd$X{kdZ+$$Ifl J!  t 0644 l` ap |NP*,02hj:`b֩ة@BNPVXҪԪ46:<>@dfhh3]hsDKH h!$KHo( hsDKHo(hh3]hKHh$XKHaJo( h$Xh h$Xh$X h$Xo(h$Xh$Xo( h$Xhhh3]h BKHaJ@8:bةBXԪ@vmmd[[`gd!$^gd!$`gd$X^gd$Xgd$X{kd+$$Ifl J!  t 0644 l` ap  68ptĭƭnpvxzZ\`bNP\^prα.0ƻyr h6h6 h6hh6KHaJo( hq@h h6o( hq@hq@ hq@o(hq@hq@o( hq@hhh3]hc3KHaJhh3]hq@KHaJhh3]hKHhh3]hKH hp~"o( hC)hj`0hj`0 hj`0o( hC)hC) hC)o( hC)h,8ƭpxP^r_ZZZgdq@{kd:,$$Ifl J!  t 0644 l` ap $$1$Ifa$gdl`gdp~"gd$X ṟαβmhgd6{kd,$$Ifl J!  t 0644 l` ap $$1$Ifa$gdl0BD̲β "$~ "&(*,xz(*,.ȵʵ $DF^`df02|ϻϻ϶ϝϑϑόόόόόό h Fh3} h3}o( h(o( h Fhr! hr!o(h~OJQJo(h~hOJQJ h~o( h`o( h FhEh FhEo( h Fhh6KHaJo(hh3]hc3KHaJ h6hh6h6o( h6h4 $,zʵ$~vmdd`gd3}`gd(`gd`gd F{kd-$$Ifl J!  t 0644 l` ap |~&(vx̸θNP¹VX24PRdfLNTV^޼ѽ᭥}hh3]huBKHaJ hJ<,hhJ<,hJ<,o( hJ<,huB hJ<,h{yhJ<,h{yo( hJ<,hh{yKHaJo( h^" h h{o(h^" h^" o( h^" hh^" KHaJo(hh3]hc3KHaJ h Fh h Fh h3}o(/(xθPXmhhhgd^" {kd-$$Ifl J!  t 0644 l` ap $$1$Ifa$gdl 4RfZlmhgdJ<,{kd-$$Ifl J!  t 0644 l` ap $$1$Ifa$gdl XZn̽ν68LxzξҾ.024bdfh,.02BDVXZ\jl~· hJ<,o(hChh3]huBKHOJQJhh3]haJhh3]haJhh3]hKHaJhh3]hKHaJhh3]hJ<,KHaJhh3]hB*KHaJphhJ<,hJ<,o( hJ<,hhh3]huBKHaJhJ<,KHaJo(4lnν8Jhhh$$1$Ifa$gdlgdJ<,{kdj.$$Ifl J!  t 0644 l` ap JLоҾ0dDlzulllllll`gdJ<,gduBgdgd{kd.$$Ifl J!  t 0644 l` ap l "L2V_VQgd' $1$a$gd{kdJ/$$Ifl J!  t 0644 l` ap $$1$Ifa$gduBlgdJ<,`gdJ<, "HL02XZ"$BNPrtώzqfqq]hSKHaJo(hh3]hDKHaJhDKHaJo( h$DKHo( hDKHo( h$DKHhh3]huBKHhh3]huBKHOJQJhh3]hKHaJo(h'KHaJo(hCKHaJ h'h h'hhh3]hKHaJhJ<,KHaJo(hh3]huBKHaJ hJ<,hhh3]hKHaJ$VX{d$$1$Ifa$gduBl $1$a$gduB{kd/$$Ifl J!  t 0644 l` ap Ptv__$$1$Ifa$gdl $1$a$gd$DgduB{kd*0$$Ifl J!  t 0644 l` ap <\hhhh$$1$Ifa$gdlgdS{kd0$$Ifl J!  t 0644 l` ap t:<Z\8:^~8:bdjl"$npοο}hIKHaJo(hh3]hf@KHaJ hWh hWo( hWh hWhW hWhf@hh3]hf@KHOJQJhho( hh hhhKHaJo(hSKHaJo( hSh hShhh3]huBKHaJ/:\h$$1$Ifa$gdlgd{kd 1$$Ifl J!  t 0644 l` ap \^h$$1$Ifa$gdlgd{kdz1$$Ifl J!  t 0644 l` ap dhhhhh$$1$Ifa$gdlgd{kd1$$Ifl J!  t 0644 l` ap $pzqqqZZ$$1$Ifa$gdl`gdWgdWgdf@{kdZ2$$Ifl J!  t 0644 l` ap 6hh$$1$Ifa$gdlgdI{kd2$$Ifl J!  t 0644 l` ap 46\8:  8:^z|  <>DFHJl޽ hu-hu-hu-hu-o( hu-hhh3]h{LKHOJQJhh3]h{LKHaJhh3]hKHaJ hIhf@ hIhIhIhIo(hIKHaJo(hh3]hf@KHaJ hIh hIh5Zh$$1$Ifa$gdlgdI{kd:3$$Ifl J!  t 0644 l` ap Z\:h$$1$Ifa$gdlgdI{kd3$$Ifl J!  t 0644 l` ap :vvvv__$$1$Ifa$gdl`gdIgdI{kd4$$Ifl J!  t 0644 l` ap \^B0mb]TTTOgdu-`gdu-gd{L $1$a$gd{kd4$$Ifl J!  t 0644 l` ap $$1$Ifa$gdl lv8:~@B24,.08:<@BH02rž̵žž̵̵̵̵̵ž̵̵̵̮hEh[hEh[o( hEh[h\CKhEh[h\CKo( hEh[hh\CKKHaJo( h\CKh h\CKhhh3]hcKHaJ hu-h hu-o( hu-hu-hu-hu-o( hu-h hu-h0G9022hh$$1$Ifa$gdlgd\CK{kd4$$Ifl J!  t 0644 l` ap 24*h$$1$Ifa$gdlgd\CK{kdj5$$Ifl J!  t 0644 l` ap *,06hhhhhh$$1$Ifa$gdlgd\CK{kd5$$Ifl J!  t 0644 l` ap 68<BFhhhh$$1$Ifa$gdclgd\CK{kdJ6$$Ifl J!  t 0644 l` ap FHt$hhh$$1$Ifa$gdlgdEh[{kd6$$Ifl J!  t 0644 l` ap rt&vx Z\xz LNnp@B`b׹h)KHaJo( h)hh)h)o( h)hyNh)hyNo( h)hhyNKHaJo( hyNhhyNhyNo( hyNhEh[hyNhEh[o( hyNh hEh[hhEh[KHaJo(hh3]hcKHaJ hEh[h3$&xhhhh$$1$Ifa$gdclgdEh[{kd*7$$Ifl J!  t 0644 l` ap zhhhh$$1$Ifa$gdlgdyN{kd7$$Ifl J!  t 0644 l` ap pBbhhhhhhhh$$1$Ifa$gdlgd){kd 8$$Ifl J!  t 0644 l` ap &($&(fhln "$ JL|~ɻ hAo( h'h hBlh' h'o(hBl hBlo(hBlhBlo( hBlh h)h hLyo( h)o(h)h)o( h\o( h)hh\hh3]hcKHaJh)KHaJo(9("v__$$1$Ifa$gdcl`gd)gd){kdz8$$Ifl J!  t 0644 l` ap "$ L~6{n{n{a{a{a $1$`a$gdA $1$`a$gd' $1$a$gdc{kd8$$Ifl J!  t 0644 l` ap 46\^`XZ(*HJL>@nptvɾwlwwcWhh3]h'KHaJo(hKHaJo(hh3]h'KHaJh'KHaJo(h'KHOJQJaJo(h'hKHOJQJaJ h\h h\hc h\o(h\h\o( h\hhh3]hcKHaJ h'hhAKHOJQJaJo(hAhKHOJQJaJhAKHaJo(hh3]hKHaJ Z*Ld_V_`gd\gd\{kdZ9$$Ifl J!  t 0644 l` ap $$1$Ifa$gdl $1$a$gdczu^C$;$1$If`;a$gdCwl$$1$Ifa$gdlgdCwgdgd{kd9$$Ifl J!  t 0644 l` ap .08:rtv~ $&.0:мxxxxxh(KHaJo(h(KHOJQJaJo(h(hKHOJQJaJhh3]h|KHaJh|KHaJo(hh3]hKHaJhh3]hKHaJhCwKHaJo(hh3]hcKHaJ hCwh hCwo( hCwhhh3]haJhh3]haJ/RI $1$a$gd)c{kd::$$Ifl J!  t 0644 l` ap $$1$Ifa$gdCwl$;$1$If`;a$gdCwl&0<HN$$1$Ifa$gd(l$;$1$If`;a$gd(l$$1$Ifa$gdl $1$a$gd :<FHP(*<> *,68XZdfnpz|<>ིਫ਼{{t hahhahao( hahh<KHaJo(hh3]hKHaJhh3]h!TKHaJh!TKHaJo(hh3]h.;KHaJh.;KHaJo(h)cKHaJo(h)cKHaJhAKHaJo(hh3]hKHaJhh3]hcKHaJh(KHaJo(+NP>,8{{{dI$;$1$If`;a$gd<l$$1$Ifa$gdl $1$a$gdc{kd:$$Ifl J!  t 0644 l` ap 8Zfp|>@RMMgda{kd;$$Ifl J!  t 0644 l` ap $;$1$If`;a$gd<l$$1$Ifa$gd<l>@HJXZfhpr$&,..0>@ ">@TVz|PZ(*Ѽ hxh0G hxhx hxh hxhhxKHaJo(hh3]hcKHaJ hah hah hao(J@JZhr$$1$Ifa$gdxl$J$1$If`Ja$gdxl$$1$Ifa$gdlgda &.hhh$$1$Ifa$gdlgdx{kd;$$Ifl J!  t 0644 l` ap 0@hMM6$$1$Ifa$gdxl$J$1$If`Ja$gdxl$$1$Ifa$gdlgdx{kd;$$Ifl J!  t 0644 l` ap "@V|$J$1$If`Ja$gdxl$$1$Ifa$gdxl *:Tj~hhhhhhhhhh$$1$Ifa$gdlgdx{kdj<$$Ifl J!  t 0644 l` ap *8:RThj|~,.>@\^jl24@Bxz~ .0>@rtxz¹ hxh7Jw h7Jwo( hxhx hxo(hxhxo( hxhhh3]haJhh3]haJhh3]hKHaJhh3]hKHaJhh3]hxKHaJhxKHaJo(hh3]hcKHaJ9.@^hjmhgd{kd<$$Ifl J!  t 0644 l` ap $$1$Ifa$gdl  0@DNX$$1$Ifa$gd`l$J$1$If`Ja$gd`l$$1$Ifa$gdlgdx`gd7Jwgdgd zBDLNZpr68  &(4*,HJNPfhprӿӿӿȸ硙 h h ho( h h h o(h h o( h hh KHaJo( hrh hrhhrKHaJo(hh3]hKHaJhh3]hKHaJh`KHaJo(hh3]hcKHaJ hxh hxh0XZr8 {nnnniR$$1$Ifa$gdlgdr $1$`a$gdr $1$a$gd{kdJ=$$Ifl J!  t 0644 l` ap (24RMM6$$1$Ifa$gdlgd {kd=$$Ifl J!  t 0644 l` ap $$1$Ifa$gd l$J$1$If`Ja$gd l T V ` b                  N P Z \             4 6 L N l n z   ̛̛̹̔h+?h#o( h+?hh#KHaJo( hWo( hyJhhyJ hyJo( hyJhhh3]h??KHaJo(hh3]h??KHaJ ho^(h ho^(hho^(KHaJo(hh3]hcKHaJ h h6  V b  mhQQ$$1$Ifa$gd??lgdo^({kd*>$$Ifl J!  t 0644 l` ap $$1$Ifa$gdl       P RMDD`gdyJgdyJ{kd>$$Ifl J!  t 0644 l` ap $$1$Ifa$gdl$J$1$If`Ja$gdo^(lP \       6 N n x $$1$Ifa$gd#l$J$1$If`Ja$gd#l$$1$Ifa$gdl`gdW`gdyJgdyJ x z P>v__$$1$Ifa$gdl`gd+?gd+?{kd ?$$Ifl J!  t 0644 l` ap    $,NP<>bd*,8^`úúúúïäúúúúÝ hjhsC hsCo( hjhj hjo( hjhhh3]hKHaJhh3]hKHaJh?6KHaJo(hh3]h??KHaJ h+?hhINh+? h+?o(h+?h+?o( h+?hh+?h#o( h+?h#2>dRI $1$a$gd{kdz?$$Ifl J!  t 0644 l` ap $$1$Ifa$gd?6l$J$1$If`Ja$gd?6l,68;{kd?$$Ifl J!  t 0644 l` ap $$1$Ifa$gd?6l$J$1$If`Ja$gd?6l$$1$Ifa$gdl8h&d@^z^gdf`gdfgd[d`gd[dgd"Lgd"Lgd`gdB`gdjgdjfh "&bd<@Z^`dxz|ļķķĬķĬķķļķĒĒĒĒĒĒ hfo( h[dh[d ho(h[dOJQJo(h[dh OJQJ h[do(h[dh[do( h[dh  hh3]h"L hh3]h hh3]h"LKHaJhjho( hjh hjhB hBo(9,.jlrtz~hjz|  & (        !!!>!@!!!""""N"P"""###໿嶯 hh3]h@ h@o(h: h:o( hh3]hw|hw|OJQJo(hw|hw|OJQJo( hw|o( hh3]h  hh3]h"L h[dh  hfo(Eltj  !!""p%r%%l(`gdgd gd`gd@gd@`gd:`gdw|gd[d^gdf`gdf##n%p%r%%%&&L&N&`&&&&&&&&&'('<'>'B'D'P'R'Z'\'^'`'''''''(((("($(h(l(((X)Z)p)r)2*4*H*L*****++++,,,,--"-$-----J.L.~... hhh hhV, ho( hh hho( h o( hh3]h  h@o(Ol(L*L.0L222V3344445z55506n66f77n89:L>R>r>>>gdj`gd....8/://///////4060t0v0001$1z1|111J2L222222233T3V3d3f33333444 4444444054585H5J5x5z5|5555555555.6064686l6n6666666d7f7h%e} h%e}o( hjo(hj hh3]hh hh3]h  ho(Tf7h7j77777l8n8t8v89999::T:V:Z:n:p:|:~:::::;;;<2<4<R<T<<<:=>===>>J>L>P>R>p>r>>>>>>>>*?,???.@0@@@@@@ATAXAhAjAAAAABBBB4B6B:B hh3]h0G hh3]har haro(harh%e} hh3]h%e} h%e}o( hh3]h S>>XAjAAB6BBBCC2CRCCCCC(DDDBEEEEEEFFFgdj:B*phf@3f ZKQ l   ( I r    \ ]  g s :"/Rao/J\g|#9Oo+GP $]o?Q]^(.8:DFG~V!'SUGa(]k   u!x!|!!!!" """&")"*""""##>#D#E#c###$$$$9%R%S%7&O&h&i&&&&I'M'f'''''''z((()t))))))*,*Q*b*v********+++++++++,,,,6-------U.a.n........ /l//////0%0+0e0k0s00~111111 2 2r2x2~2223<3D3E3{333333333@4E4O4P4Z4d4e44444444545@5E5Q5V5W5555556%6]6f6n6z666666677&7D7X7a7j7{7777777718P8t888888N99v:::;<V<q<}<=(>d>>>>??&?'??@G@v@@@@ AA+A6ADAiAAAAAAB0B5BcBzB{B|BBBBBBBBBB CC(C)CCCCCDD EZEEGFF3GGGGGGGGGGGGGGHHH HjHJJJKKKKL5LYLLLLLLMMMMMNNNN6OCOFO+P9PZPqPPPPQGQiQQQQQR#RBRiR|RRR!SgSSS;TTTDUUVLVVVWBWWX,X5XUXXXhX|XXXXXXXXKYYYzYYYYYYZZCZ[Z`ZeZnZwZ}ZZZZ[[[\\\\\\^^^^>^^^~^^^^^^^^^_-_@___y______`G```` b+bEbbbbc_ccd,d8d9dDdNdPdQddddddef=fjfffff gg4g6gCgjggggggcitixiiiiii jjUjjjjkk#l'lElFlslmmmmmmAnRn\n^n_npn}no(ooo2pmppppppp'qRqeqfqqr8r@rrrrrrr[scsssssstttStTt_t`tuu8uYuyuuuuuuuuuvvvvvvvvwwww xx4xaxjxkxyyy+yNyOyz-z>zQzezmznzozzzz}{{{{|,|5|6|g|||};}<}}}}h~~~~~~`a+cԀ1Wف2IY\s Ѓ';RbdeԄ#CQaz@؆Uxo͉?PÍɍύ֍܍4 ؏ r ƑΑ$/4CFHKL~ 9ARm|“ÓQ^guƔؔ9DIЕѕu{– $Zۗnz9ORfkl˙ݙ3nҚ-U]@jɜ /45:@\oǝϝڝƞޞɟʟ۟~Ԡ Ѣ!_cߣ [դ<v7!N5i/RƯ"^"$8ITѵMVlv˶̶ն,]޷߷bdeghjkmnop|}0000000000000000000000000000000000000000000000000 00k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k 0] 0] 0] 0] 0] 0] 0] 0] 0] 0] 0] 0] 0] 0] 0] ] ] ] 0] 0] 0] 0] 0] 0] 0] 0]  00000000 0 000 0 00000 0 00000000000000000000000 0 00000 0 00000 0 00000 0 0000000 0 00 000000000000000000000000000000000000 0 00000000000 0 000000 0 000000 0 000000000000 0 0000000 0 000000 0 00 0 000 0 00 0 000000 0 00000 00(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0( 0( 0(0(0( 0( 0(0(0(0( 0( 0(0( 0( 0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0( 0( 0(0( 0( 0(0(0(0( 0( 0(0(0( 0( 0(0(0(0( 0( 0(0(0( 0( 0(0(0(0(0(0( 0( 0(0(0(0(0(0(0(0(0(0(0(0(0( 0( 0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0( 0080808080808080808080808080808 08 080808 08 0808080808080808080808080808080808080808080808 08 0808080808080808 08 08080808 08 08080808 00C0C0C0C0C0C0C0C0C0C0C0C0C0C0C 0C 0C0C0C0C0C0C0C 0C 0C0C0C 00J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J0J 00Z0Z0Z 0Z 0Z0Z0Z 0Z 0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z 0Z 0Z0Z0Z0Z0Z0Z0Z0Z0Z 0Z 0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z 0Z 0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z0Z 0Z 0Z0Z 0 0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d 0d 0d0d0d0d 0d 0d0d0d0d0d0d0d0d0d0d0d0d0d0d 0d 0d0d0d0d0d0d 0d 0d0d0d0d 0d 0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d 0d 0d0d0d0d0d0d0d0d0d 0d 0d0d0d0d 0d 0d0d0d0d 0d 0d0d 0  0TtTt0_t0_t0_t0_t0_t0_t0_t0_t0_t0_t0_t0_t 0_t 0_t0_t0_t 0_t 0_t0_t 0_t  0TtTt0v0v0v 0v 0v0v0v0v0v 0v 0v0v 0v 0v0v 0v 0v0v0v0v0v0v 0v  0XtXt0vz0vz0vz0vz0vz0vz 0vz 0vz0vz0vz 0vz 0vz0vz 0vz 0vz0vz 0vz 0vz0vz0vz0vz0vz0vz0vz0vz0vz0vz 0vz 0vz 0XtXt0h0h0h0h0h 0h 0h0h0h 0h 0h0h 0h 0h0h0h0h0h0h0h 0h 0h0h0h0h0h 0h 0h0h0h0h 0h 0h0h0h0h0h 0h 0h0h0h0h0h 0h 0h0h0h0h0h0h0h0h0h 0h 0h0h0h0h0h 0h 0h0h0h0h0h0h0h0h0h0h0h0h 0h 0h0h0h0h 0h 0h0h 0 00000000 0 0000000000 0 0000000000 0 00000000000000 0 0000 0 00000000000000 0 000000000000000000000 0 00 0 0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ 0ٕ 0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ 0ٕ 0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ 0ٕ 0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ 0ٕ 0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ 0ٕ 0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ 0ٕ 0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ 0ٕ 0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ0ٕ 0 0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0ҟ0@0X00@0X00@0X00@0X00@0@0@0@0X00,- !"#$%&'()*+,-./0123456789:@kx> l \ ] g s :"/ao/J $]^(FG~a  ")"*""D#E#c#$$$$9%R%S%7&h&i&&&&I'''())))))+++,,,,6-------. /l///1111 2 2r222<3D3E3{333333@4d4e44V5W5&7888N99q<}<=>>>?&?'?@zB{BBBBB(C)CCDGGGGH HJJJZZ[[\\\\\^^^___bbb,dddddefggciii'lElFlmmmAn^n_n}no(ooopeqfq8rrr[ssssttStTt_t`tuuuvvvvvvvvwww xjxkxyyy+yNyOyzmznzoz}{{{|5|6|g|||};}<}~`aԀ1ف2'de#؆Uxo͉?4r KL~“ÓQЕѕ–$n9klU45:ɟʟ۟޷߷bdgjm0000000000000000000000000000000000@0 @ 0Z0$0% Z0$0Z0$0@00  0Z0*0+Z0*0Z0*0Z0-0.Z0-0Z0-0Z00014Z000Z000Z0405Z040Z040@0 Z090Z090@0 @0   0Z0000000000000000000000000000000  0@0r0r0r0r0r@0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r0r  0Z00qZ00pZ00oZ00n@0,@0,0,0,0,0,0,0,0,0,0,0,0,0,0,Z00]$Z00\Z00[Z00Z@0,@0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,@0,0,  00>0>@0>0>0>@0>0>0>0>0>0>@0>0>0>0>0>0>0>0>0>0>  00J0J0J0J0J0J0J0J  0@0R0R  0 0b0b0b0b0b0b0b0b0b0b0b0b@0b0b0b0b0b0b 0b0b  0 0em0em0em0em0em0em0em0em0em0em0em0em0em0em0emZ00h%Z00Z000em@0em@0em0em0em0em0em0em0em0em0em0em0em0em0em0em  0  0q}q}0|}0|}0|}0|}0|}0|}0|}0|}0|}0|} 0q}q}000000000000000 0q}q}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0} 0q}q}000000000000000000000000000@0/Z0X1_Y,0/0/@0/@0/Z0]1^Z0]1\0/@0/@0/@0/@0/@0/@0/0/0/@0/0/ 0/ 0/  0 0000000000000000000000 0 00  0 0000000000000000000@00000 0 00  0K02Z016Z01Z01Z01@0@0K00@0?@0@0? 00  t  :ZLd #'h+d1.7 <BHzNVZ\afjm rdw2{F~Lܐ,؛,z^@|0|tlr:>*z #.f7:BG(Gaefghijklmnoqrtvy|$(+.0358<@FKQUX[^agjmrvwy{|~j4$)f+-J/13346<BPDE:ILMFQRTUW:[r_a>ccgklmn"oop~r twJyzʕ,ܛڶT&f\8rlJlV\Z02*6F$"N8@X P x >8l(>F(Gbdpsuwxz{}~%&')*,-/124679:;=>?ABCDEGHIJLMNOPRSTVWYZ\]_`bcdefhiklnopqstuxz}&Gc@XYy;\xz{}0235Uk:=>@`p0346V\x{|~  .4PSTVv 1Fbefh'B(x(z(((1E1{1>CCCOOP X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%̕XXXXX!8  @ 0(  B S  ? _Hlt201114778 _Hlt201114779 _Toc201114760 _Toc201114761 _Toc201114762 _Toc201114763 _Toc201114764 _Toc201114765 _Toc201114766 _Toc201114767 _Toc201114768 _Toc201114769 _Toc201114770 _Toc201114771 _Toc201114772 _Toc201114773 _Toc201114774 _Toc201114775 _Toc201114776 _Toc201114777k] (8CJZdTt_tvnz`ѕʟ@@ w )8DJZd^t_tvnz`ڟG,dG,#G,T]G,t#v*1A4Yx*5A6Y<*urn:schemas-microsoft-com:office:smarttagschmetcnv L] 012aFalseHasSpaceinNegative NumberType SourceValueTCSCTrueUnitName           @xy:;TU_`UV-.uv01ij??NNeettttvvabbddeeghjkmp{|}@xy:;TU_`UV-.uv01ij??NNeettttvvabbddeeghjkmnp{|}@j??NNeettttvvabbddeeghjkmn}ttbbddeeghjkmn}P^M  P^`PhH @@^@`hH. 0^`0hH.. ``^``hH... ^`hH .... ^`hH ..... ^`hH ......  `^``hH.......  00^0`hH........P^.VEj/Lb* x!~;i^(#Uvt.&xczZXr>B#Ul =To $r{ZL,!(bfXQ=`epErK5;~#CXNGJ:;[oti#U"GLfwToCs V'" ly$qWJPZXrX?r{NIyF|qm*GS8WJqo[} X?MWS 2}(n `ed dAQ3] p:1|> qm%j x!~; ' V#r G/ ?@U3 L;TH ;Y $ a %(]T)P1 :A\ >*j!a *Nq+BTrcrM7 i`@]\U=Yl $ crM"b@~6 }'@.9 wT.MG/|{j jA>Td{qZfgF SX&xK:#k;k?K:#6}N!@Zwv~}U{qo[c[$KA$7S,#o5f5i|K0=M~>(r{*;"'Ma`jnTor{vREoR@~];(GOSACZ+H4$6i> W^`h\y"$aS=f AK?M2% <@./q35Xz4=4~*Nq+7Q3] 6Hol@>(w67T.M{L&sqmPB lyQ&x2qm- #U #U>*j!{L&s]|I"'"#UT"a #?@U/0#{S,##UI##&5O0$ |bT3&R20&'@Mvd&>GH}&;(&T3&,\'UIoA'r{!(2}(r{P',)y*B>x *w*9 w*Nq+{L&sSl,5KX~,#U[>-f6FJ,F. Ae.^Es*.tj<@./{QY0ICIpY0{R1A~P"=\2O\%G~2xDbM2G/t3~}7|4#UBn4>*j!4%l5Xsx5G#&5G/4$6vt.@~6V#r67G/<<7w*}O7 <:M7MWS 18g]S8#U2?8!(Wk <:Q\M:Tet:oK4':Bk;G/W ;Bn4L;#Ux!~;r{;ZXr=p:=Q=qm~AB=&xU= p:=dmw!{->hBO&1>M2A>#U2>^EsK?GH}&g$+?> !S?ya{Z@vjW i`@ZXr'@&x AG/$KAHQm\SAp:1|CmAVImjA $%GApErdA#Uy*B|'s.C2C#U?D |b^D{L&saDQ6DfgwDEDEDSF(qUFV#`F@~6yFA>pGzG#UG{L&sUHICIZ&7HwdP*_HoA'myHb* VIZXrUI{ICIr{3SI2IdA k4JI%Rf6FJS8 &JcM{$K|'soKP]%L6fWEj/LV#reLX?Lj-$Mfb;"'MA~PcrM#U@SNF SesjNR20&gENz4GO i`@hBO#UO#PppgA~P&xwdPqmyP8YWy< PbfX1P$ as9P>(brQG%~R3 9RZXr$RCWwREj/LfXwRHlI%R|zOSr{F SZXr$vuSC\:SA>|pT#U%(]TTe#U?@UV#r)IUS`kgV#`<@./g`\z`WTak;$ a&x"$a#&5P*a ' }a~AB=xDb/0# |bV#reb7|4fbhBOb'"cL^$cdmwcf0c"xNc.Cccz#el =_Ve ' !e(be^DCeBTrTer{/oef:f9Rkg hs_gya{ppgVI+gl_nhqmE76hP*a7h|pT^`h&xgi7|45f5i5XMHiS,#S2`aP!W(oJ * Rs | ^" ; D dc   XSxHw6:rxj@RLv '}1c:I_W7 Bpo r!z!p~"#'#@#b#x#LL$#&;&1'{d'p'(8(o^(C)nM)++J<,pI-u-.ne.I0j`0J/2lm2c3|3 >4n485>Z5o5$688t8"9 d:.;(8;<(<1x< =x=(=q=c>Bs;BuBw{B$D'DE+ER FAF0G%G;pG*HFZH/I-KIyJK\CKbK{LfMINOhOTbP Qc0QXQ_QsRRSnS+T TB^UCVzVaX~XXY[S[Eh[Nw[.J\i\h3]Ym_Cz_a}ta)cn,c"d9d[d%hdiBlfwnonoJ8qBWqUvqrrItXtAuhLut]vmtvKwCw7JwcxxyLy{y%e}~/~\~: NU&81e xj)k$Fb;n0CrD#up,eiE)E\*V+;6ikV '-2-!T^ajw!$a::Z_ja&+q@B'5; E.b6J&zU_c??3S\?iu%uSw|D6AAY`!{@s,zm%CJn%(Y)D[%'3"[dL sD4hR^>>?&?'?@zB{BBBBB(C)CGGGGH H[\\\\\^^^___bbb,dddfggciii'lElFlmmmAn^n_npeqfq8rrr[ssssttuuuvvvvvvwww xjxkxyyy+yNyOyzmznz}{{{|5|6|g|||};}<}~Ԁ1ف2'de#؆rKL~“ÓQ–n9kl45:@tt8tt "()+-12:;?ABCGKLORY[]  .8@HL@Z^bjl|~@UnknownGz Times New Roman5Symbol3& z Arial;ўSOSimHei;5 N[_GB2312;[SOSimSun 1 hfjƦdKvݜ^Nݜ^N!-!),.:;?]}    & 6"0000 0 0 00000 =@\]^([{  0 0 00000;[d2QHX ?n42ShellAS N  ChinaUnix[W|NStetlkydeer_o(u7b Oh+'0 ,8 X d p |(ShellʮʡChinaUnix̳lkydeer Normal.dot ΢û331Microsoft Office Word@DX@)@}X@L_ݜ՜.+,D՜.+, X`px zccpN^'  8@ _PID_HLINKSAO{6http://www.chinaunix.net/forum/viewtopic.php?t=201843RNx6http://www.chinaunix.net/forum/viewtopic.php?t=191051ROu6http://www.chinaunix.net/forum/viewtopic.php?t=201843RTr6http://bbs.chinaunix.net/forum/viewtopic.php?t=216729RSo6http://bbs.chinaunix.net/forum/viewtopic.php?t=207178R5hR_Toc2011147775bR_Toc2011147765\R_Toc2011147755VR_Toc2011147745PR_Toc2011147735JR_Toc2011147725DR_Toc2011147715>R_Toc20111477058R_Toc20111476952R_Toc2011147685,R_Toc2011147675&R_Toc2011147665 R_Toc2011147655R_Toc2011147645R_Toc2011147635R_Toc2011147625R_Toc2011147615R_Toc201114760  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-.012345689:;<=>ERoot Entry FJGData Z@1TablefWordDocumentSummaryInformation(/DocumentSummaryInformation87CompObjm  FMicrosoft Office Word ĵ MSWordDocWord.Document.89q