1 `+--------------------------------------------
2 FileName: shell.note
3 Desc: learning shell
4 Author: Mocker
5 Email: Zuckerwooo@gmail.com
6 HomePage: http://hi.baidu.com/new/lsin30
7 Version: 0.0.1
8 LastChange: 2012-08-08 13:46:36
9 Tool: Vim
10 ---------------------------------------------+`
11
12 mynameisYoungWmWmmWmmWmWmmWmmWmWmmWmmWmWmmWmmWmWmmWmmWmWmmWmmWmWmmWmmBmmF ]WmmBmBWmBBBBmBWF\#m($mBmWmmWmWmmBBmBBBBmBBmB
13 WmmmBmmmBBmmWmmmBBmmWmmmBBmmWmmmBBmmWmmmBBmmWmmmWmmBBmBmmWmmWmmmBBmmWmWZ_m,$mBBBmmBBmWmBmP\mmBrdBBBmWmmBmBWmBBmWmBBmWmW
14 BmWmWmWmWmWmmBWmWmWmmBWmWmWmmBWmWmWmmBWmWmWmmBWmBmWmBBBBWmmWmmWmWmWmmW#\dQf#mBmWmWmBmBmmD\dW#WL3WmBmmWmWmBmmWmWmmWmWmmm
15 WmmWmmBmBmmBWmmBmmmWmWmmmBmBWmmBmmmWmWmmmBmBWmmBBBmBBmWmmmWmmWmmBmmWmD\dBm[jBmWmmBmWmWmB'dW#mW(jmBBBWmmmBBBBmmmBBmmmBBW
16 mWmmBBBBBBWmmBBBBWmmBmmWmWmBmBBBBWmmBmmWmWmBmBBBmWmmWmmBBWmmWmmWmWmmmfj#BBf]mWmBBBBmmBm[)mmWmW[]WmBmmBBWmBmWmWmWmWmWmBm
17 WmmWmBmWmmmBBBmWmmBWmWmBmBmWmBmWmmBWmWmBmBmWmBBmW#P%$mWmBmmWmmWmmmWmFjWW#m[]WmmWmBmWmW2_#mWmmm[]WmWmWmBmBmWmmBmBmmBmBBB
18 BmWmmWmmBWmWmBBmmWmmBmBBBBBmBBBmmWmmBmBBBBBmBmWeJW(L]WmBBBBmBBmBBW#W`dB#Bm[]WmWmmWmmW#'dmWmmWm[]mmmBmBBmWmmBBBBBBWmWmBm
19 WmmBBmWmWmmmBmWmWmmWmWmmWmmWmBmWmBmWmWmmWmmWmWmfL4<B)WmWmmWmBmWmBmBfjWmWmB[]WmmBBmBBm(qQmmmBmm[]#BWmWmBBmWmWmBmWmmmmWmW
20 mWmWmBmBmmWmWmmBmBBmBmmWmmWmmWmmWmWmmmBWmmWmmmB{m7jmp#mmBBmBBBmBBB#`mWmmmW[]BmWmBBBmE.mWmWmWmB[jBmmBmBmWmmBmBmWmmWmWmmm
21 WmmmBBBBBBmBmWmWmWmWmWmBmWmmWmmWmmmBBWmmmWmmWWm]Qr3m[$mmWmWmBmWmWm[jWmmWmm[]BmBmWmmB[jWmmmWmBm[jWBBBBBBmBWmWmWmmWmmBmWm
22 BmWmWmBmBmWmWmmmBmmmBmBBmBmWmmWmmWmWmmBBWmmWmmW]WLQm[3mmBmmBBBmBmW[jWmBmWm[jmWmWmBWFjmmmWmmBBm[jWmBmWmBBmmBmmmBBmBBBBmW
23 WmmWmmWmWmmBmmWmWmWmWmWmWmWmmWmmWmmBmWmmmBBmmBm]W5mmk]WmWmWmBmWmmEjBWmBBmB[]BmBmWmD'jWmWmBWmBm[jWBmWmmWmWmWmWmWmBBmWmBm
24 mWmmBBmmmWmWmWmmBmBmBmmmmBmmWmmWmmWmWmmWmWmWmBW%WjQmm/Q#mBmBBBmBm[j#mmWmmW(jmWmWmW(jmmBmBmmBBm[jWmWmmWmmmBmBmBmBmWmmBBB
25 WmmWmBBWmmBmBmBWmWmWmWmWmWmWmmWmmWmmmBBmWmmmBWW[#)mmmLJYmWmBmWmW# dWmWmmWmfdWmmmmZ`jWmWzhiWmWm[]mWmmWmmWmWmWmWmWmmBWmBm
26 BmWmmWmmBWmWmWmmmmBmmmWmmBmmBBmmWmmWmWmWmmWmW#mqmj#WmWmp?BBWmmBmfjWmmmBBmW=mmmWmW(QWmBmWyoummW[]#mBBmBBmBmBmmmBmBBBmmWm
27 WmmBBmBBmmBmmmBBWmWmWmmBWmWmWmWmmBBmBmmmBmBmmmZjW#mmmBmm/WmmmWmB'jWmWmWmmW'mWmBmZ mmBnimBBBBBm[]mWmBBmWmWmWmWmWmBmWmWmm
28 mWmWmWmBBWmWmWmBmBmBmWmWmmmBmmmWmWmWmWmWmWmWmW(mmmWBWmB#[]WmWmmW/QmW#BmBBmc$#mWmLjWmBmtingBmBW[]WmmWmWmmmBmmBmBmWmmBmmW
29 WmmmBmmWmmmBmBmWmBBBmBmmBBWmWmWmmmBmmBmBmBmmBF]$[w)Q#mWmm]WmW###L4$#mWW#W#'#mWmf\WBWmdemmBmWmmfjWmWmmmmWmWmWmWmWmmWmWmB
30 BmWmWmWmmWmWmWmmBBmWmWmWmBmmBmBmWmWmWmWmWmWmW[/][jr#mWmmmc)#mWa/?w)Wmm#WZ'jBBmB`jmmmBmdaoWmmBWfjWmmmWmWmmBmmBmmmBBmBmBB
31 WmmWmmmBBmBmBmBWmBBmBmmBmWmWmWmWmmBmmBmmBmmBm(q]%m\WmmBBW#p4#mmg,]]mmW#`jwmmmWk.3WmWmWmBmBmWmW'mmmWmBmBmWmWmWmWmWmWmWmB
32 mWmmBBWmBBBBBBmmBmWmWmWmWmmmBmmmBBBBWmWmWmWmW[qd6swmBWmmmWm/$mWD?f]WmmCgad#mW#Wp]BmmBmBBBBBmB#.mmWmmWmWmmWmmBmBmBmmBmBm
33 WmmWmBmBmWmmWmWmWmmBmmBmmBBWmWmWmBmWmmmBmBmBm[3WmmmWmmBWW#m[]#mEM>j#mm(iqdQ#mZ!Gp)WmWmWmmBmWWZ_BmBmWmmmWmmBBBBBBBBWmWmW
34 BmWmmWmBBmBBmmmBmBWmWmWmWmBmmBmBmWmmmWmWmWmW#[3mWmWmBmmmW#Wmg"$hu[jWmZqagdWmWp'JG/mmmBmBWmWmmCjWmWmmBWmmBWmBmWmBmBmmmBm
35 WmmBBmBBmWmBBWmWmBmmmBmBmBBBWmWmWmmWmBmBmmBmWfmmmWmmBWmQ#mD?!`"=__)e`']"?9AWmVw+/'mmWmWmmBmmm']W#mBWmmBWmmBmWmmWmWmWmWm
36 mWmWmWmBBmBmWmmmWmWmWmWmWmBmmmBmmBBmWmWmWmWmBfmmBmmWmmWZ!~\gawmmmBBmmmwwgg,!"L4o+=m#mBmBW#TY^_dBmWmmBBmmBBBBmBBmmBmmWmm
37 WmmmBmmWmWmWmmWmmBmBmBmmBmWmWmWmWmBBmmBmBmmBW[#WmQmmBY!_wmmWmmmmBBmWmBmWBWmga,;]f=W#mWmF"_gawmWmWmmWmBWmWmBmWmBBWmWmmBB
38 BmWmWmWmmmBmmWmBWmWmWmWmWmmBmBmBmBBmWmWmWmWmWp3W##?~`gyW#mmWmWmWmWmBBBWmmmmmmaga:jWWmmW[]Y?!?WWmmmWmmWmmmBBBmBmWmmmWmWm
39 WmmWmmmBBWmWmmBmmBmmmBmBmBWmWmWmWmBBmBmmBmmmW[jQZ'qdmQm#WmmBmmWmmBmWmmmBWmWmWCmg,]#mmW# ]?YSmW#WmWmmWmmWmWmBBBBmmWmmBmB
40 mWmmBBWmBmmmWmWmWmWmWmWmWmmmmBmmmBmWmWmWmWmW#Z`"\jWmWmmW#mWmWmmBBBBmBWmW#mmWmWBWmWmWWm[-Ynag"9mmmmBBmBmBmBmWmmWmWmmWmWm
41 WmmWmBmBmWmWmmBmmWmmBmBmmBWmWmWmWmWmmmBmmWmf]'jwwmmmmmWmmWmmBmWmBmWmBmBmBWmmmmBmWmmmmW'+mgp4maBWmWmBBBBBBBBmmWmmmBWmmBm
42 BmWmmWmBBmBmBBBBWmmWmWmWmWmmBmBmBmBmWmWmQm[.sdWmmW#BWmmBmmBWmWmmWmmBBBmWmmBWmWmWmmWmmE_,:3$W#mmmmBmWmBmWmBmWmBmWmWmmWmW
43 WmmBBmBBmWmWmBmBmmWmmmBmBmmWmWmWmWmWmmBmQr=j#mmm#mWmmBWmWmWmmmBBmWmWmBBmBBmmWmmmBBmBWmmqp,-?$WmWmWmmBmWmmWmmWmBmBmmWmmm
44 mWmWmWmBBmBmBBBBBBmBBWmWmWmmBmmBmmBmmWmBD_mW#WmQmWmmWmmBmBmmWmWmBmBmmWmWmBWmmBWmWmBmW#mmWmp`]$#mmBmWmWmmWmmWmmWmWmWmmWm
45 WmmmBmmWmWmWmBmWmBBmWmmmBmBWmWmWmWmWmmW#`jWmmmBmmmWmmWmWmWmWmmBmWmWmWmmmBmmBWmmBmBmWmmBBmmWwp-4#WmWmmmBBmmWmmWmmmBmmWmB
46 BmWmWmWmmmBmmWmmBmWmmmWmWmBmmBmmWmmBmWm[jBmmWmWmWmmWmmBmmmBmBBBBmmmBmBBWmWmWmmWmWmWmmWmBWmmmmc $mmBmWmWmWmmBBmmWmWmWmmW
47 WmmWmmmBBWmWmmWmWmmWmWmmBmWmWmWmmBWmmWZ_mBW#BmmBmBWmmWmWmWmWmBmWmWmWmBmmBmBmmWmmmBmmWmmW#mWmWw,]9WW#mBmmmWmWmWmBmBmmBBm
48 mWmmBBWmBmmmWmmBmBBmBmBBBBmmBmmWmWmmQ#`jBmmmWmWmWmmmWmmBmBmmBBBmmBmBmWmWmWmWmmBWmWmWmmWmmWmWm#Qa-4mWmWmWmBmmBmBBBBBWmBB
49 WmmWmBmBmWmWmmWmWmBBBBmWmBWmWmWmmmBmB[]W#BBW#BWmBmWmBmWmWmWmWmBBWmWmWmmBmmBmBWmmBmmmBBmBBmBmmBm#C)4WmmmBmWmWmWmBmWmmBmW
50 BmWmmWmBBmBmBBmBmBmWmBBmBmmBmBmBBWmWmLdmmBmmWmmmWmmWmWmWmmmBmBmBmmBmmBBBBWmWmmBBBBWmWmWmBBBBBBmWc )mmWmWmmBmBmBmWmmWmWm
51 WmmBBmBBmWmWmBBBBBBmmWmWmWmWmWmWmmmmE]WmWmWmmmBmBUYVWmmmmWmWmWmWmWmWmWmmWmmmBBBmWmmBmmmBmWmmWmBmWq,4W#mBmWmWmWmWmmWmmmB
52 mWmWmWmBBmBmBmWmBmWmWmmmBmBmBmmmBBWm[)mWmmmWmWmP~gag/?WmWmmBmmBmmBmmBmBBmmWmWmBBmmWmWmWmWmmWmmWmmm6:4mmWmBmmBmmmBBmmWmW
53 WmmmBmmWmWmWmWmmWmmBmmWmWmBBWmWmWmmW(jmmmWmBWmD=yW#Wm/3WmmWmWmWmWmWmWmBmWmBmBmWmWmmBmBmBmBBmBBmBBmh,]WmWmBBWmWmWmBBWmmB
54 BmWmWmWmmmBmmmBBmBWmWmBmBmWmmBmmm#V!.dBWmBmW#WfjmmmmWk]WmWmmBIwillmBmBBBmBBBBmmmmWmWmWmWmBmWmBBmWmWL-$#mmWmmmBmBmWmmmWm
55 WmmWmmmBBWmWmWmBBmmBmBBBBBmBmWU?^. jmWmmWmWmm#<2~$#W#mc$mmBBBBWmfindyoumWmBmWmWmWmmmBmmmWmWmmWmWmmmWr]mmWmmWmWmWmmBBWmm
56 mWmmBBWmBmmmWmmWmWmWmBmWmBBBB(./)wcp)$mWmmmmWfjL;]mW#Wf3WmWmBmmBmmBmmBBBmBBBmBmWmmWmWmWmmBmmWmmmmWmmc]mBmBBmBmBmBWmmmBW
57 WmmWmBmBmWmWmmWmmmBmBBBmmWmm#,dmp4#Wa/$mmWmWm[]=-]mmW#p]WmmBBBWmWmWmWmBmWmBmWmBmmWmmBmBmWmWmmBBWmBmWmp4mBmWmBBBBmmBWmWm
58 BmWmmWmBBmBmBBmBBWmWmBmWmmBW#.Z?Wp3m#mdWmmWmmL)agmWmmWL)mmWmBmmBmBmBmBBBmBBBmBBBWmmWmWmWmmBmWmBmBBBmW6/$mmmBmWmBBWmmBmm
59 WmmBBmBBmWmWmBBmWmmmBBBmBWmmZ\LgjkjmQ#BmBBmmQm]$WBBWQF\wmWmBBWmWmWmBBBmWmBmWmWmmmBBmBmmmBWmWmmWmBmWmWmp)mWmWmmBmWmmWmWm
60 mWmWmWmBBmBmBmWmmmWmWmBBmmBB'dWWWmWW#mWmBmWmm#L"Wmm#(\dWmmWmBmmBmmBBmWmmBBBmmmBWmWmWmWmWmmmmBBmBBBmmmmp]WmmWmWmWmmWmmmW
61 WmmmBmmWmWmWmWmmWmBmmmWmBf"^<mmBmBmmmWmmWmmWmW#wgM^agmWWmWmmWmWmWmWmBmBBBmWmWmWmmmBmmmWmBWmWmBBBmWmWmWk+$mWmmmBmmWmmWmB
62 BmWmWmWmmmBmmmBBkeepmWmWmmwcjQmWmBBBBmmWmmWmmmmmWmWWmQm#mmmWmmmBmBmmWmWmBBmmBmBmWmWmWmmBmmBmBBmWmmBmW#mr]mmmWmWmWmmWmmW
63 WmmWmmmBBWmWmWmWsmilemmmmQ#[]BWmmWmBmWmmBBmBmWmBmBmmWmmBBWmmBWmWmWmWmmmBmWmWmWmWmmBmmWmWmWmWmBBmBWmBmWm[)WmWmmBmmBBmBBm
64 mWmmBBWmBmmmWmmmBWmBmmWZ?^" jmmmWmmWmmWmWmWmWmmWmWmWmmW#BmBWmmBmmmBmBBWmWmmmBmmmBBBBWmmBmBmmBBmWmmBmWmmh 3mWmWmWmWmWmBB
65 WmmWmBmBmWmWmmWmWmmWWmk_wwm'Q#WmmmWmmWmmBWmmmWWmBmW#mWmmWmBmWmWmWmWmWmmmmBBWmWmWmBmBmmWmWmWmWmWmmWmWmmWmp]mBmmBmBmmmBmW
66 BmWmmWmBBmBmBBmBmmWmm#WWm#T{mmmWmWmmWmmWmmmmW#mZ~""?YTUWmmWmmmmWmmBmmBBWmWmmmBmBmWmWmWmmmBmBmmmBBmBmBBmBL]BBBWmBBBWmWmm
67 WmmBBmBBmWmWmBBBBWmmWmmm#f.jQmWmmBmWmmWmmWE!4#W#wg,,.. -"!V#BBWmmmWmWmBmBmBBWmWmWmmmBmBWmWmWmWmWmWmBBmWmm XWmmBBmBmBmBW
68 mWmWmWmBBmBmBmWmmmmW#BmBWmWrXWmBWmWmmWmmW#L .+"?#mWWmmwaag,=""?VmBmmmWmWmWmmmBmmmBWmWmBmmBmmBmBmmmBmWmmBWrjmmWmBBBBBBmm
69 WmmmBmmWmWmWmWmmWmWmmWmBmmWp3X$#mmmBBmmWmmmBgag_-!?$mW#mmBWmmwg,/MV$WmmmBmmWmWmWmWmmmWmWmWmWmWmWmWmWmmWmm[)mWmmWmBmWmWm
70 BmWmWmWmmmBmmmBBmBmBBmBBBV"`]a)WmWmWmWmmBmWmmmmWga,,7!T$mWmmmmWWmwap#mWmWmWmBmBmBmmWmmBmmBmBmmBmBmBmBBmWmh)mmmWmmWmmmmW
71 WmmWmmmBBWmWmWmBBBBBmWmBm=<wdWW#mBmBmmBWmWmmBWBmmBWmap,-"9mmWmmmmmmWmmBmmBmBmWmWmWmBmWmWmWmWmWmWmWmWmBBmmWrXWmBmWmmWmWm
72 mWmmBBWmBmmmWmmWmBmWmmWm}=jmmmmmWmWmWmWmmmmWmmmWmmW#mWmwg,"?9WmmWmWmmWmWmWmWmmBmmBmWmBmmBmBmmBmmBmmmBmWmWm(]mBBBmmWmBmB
73 WmmWmBmBmWmWmmWmmWmmmWmF dQmWmBW#mmWmmmmWmWmBWr"9mmmBmmmWmwg/"?$mmW#BmBmBmBmBWmWmWmmBBBWmWmWmWmWmWmWmWmmmmc]WmBmWmmBmWm
74 BmWmmWmBBmBmBBmBBmBWmm!_jV?!4mBmmWmmBBWmBmBmW#wp )4#mBmW#mmWQwc,"9mmBBBBBBmWmmmBmmWmWmmmBmmmBmBmBmBmWmmWmWf=BmWmmWmWmmW
75 WmmBBmBBmWmWmBBmWmBmW(.?^'_.,"?VW#WmWmmBBWmWmmmWw, +?Q#mWmWm#mBmwg7?WmmWmBBmBBWmWmmBmBWmWmWmWmWmWmWmmmWmmmk.mWmmWmmBmWm
76 mWmWmWmBBmBmBmWmmBBm[. _ammWmwp_)4#mmmWmBmmmmmW##mg,:"4W#mBmWmmmmWmwmWmmBmWmWmmmBmWmWmmBmBmBmBmmmBmBBWmmWBk-mmWmBmWmWmm
77 WmmmBmmWmWmWmBmW#Wm( syWmBBmWmmWw,74mWmBmWmWmWmmWmmBw,."AmWW#mWmW#mmWmmWmWmmmBBWmWmmBmWmWmWmWmWmWmWmmmBBW#f=WmmBBBmBmmW
78 BmWmWmWmmmBmBmWmBm! jWmWmBmWmmWmWWa,?mmmWmmBmBmWmBBmmBw, ?W#mWmBmmWmmWmmWmmWmWmmmmBBBBmBmmmBmmmBmBmBWmWmmmk $mWmBmWmWmB
79 WmmWmmmBBWmWmBmmF`jwWmmmmBBmBBmmm##mp)$mmBWmWmWmmWmBWmmWwp]$#mmWmWmmWmmWmmWmmmBBWmWmBmWmWmWmWmWmWmWmmBmmWmm,]WmWmWmmmWm
80 mWmmBBWmBmmmBmW!-aW#mBmWmWmWmBBWmmQmma]$mWmmmBmBWmmBmmBBmma/4BBBmmBBmBBmBBmmWmWmmBmBmWmmmBmBmBmWmmmBBBBWmmWk/$mmmmBBWmm
81 WmmWmBmBmWmWmB[ jmmmBBmBmmBmmWmmBBmmW#aJWmmWmWmBmmWmBBBmWmmmwWmWmWmWmWmWmBBBmWmmWmWmWmmWmWmWmWmmBBWmBmBmmWmmp3BWmWmBmmW
82 BmWmmWmBBmWmWF'wW#mWmBBBWmWmWmmWmBBBmmL)##W#WmmWmWmmWmBBmBBBmmmmBmBmmmBmmWmBBmmWmmmBmmWmmBmmBmBBBmmBBBBBBmBB[]mmBmBBBBm
83 WmmBBmBBmWm#P qmmmmBmWmmmBmmBmWmmWmBBmWc)$#mmBBmmmBBmBmWmWmWmWmWmWmWmWmWmmBmWmWmmWmWmWmmWmWmWmWmBBWmBmWmBBmW6)mWmWmBmWm
84 mWmWmWmBmWm#'j#BmWmBBmBWmWmWmWmmWmmWmWmmk"9mWmWmWmWmWmWmmmBmBmmWmmmmWmmmWmWmmBmmWmmBmmBBmBmBmmmBmWmmWmmBmWmmWr]WmmBBBmB
85 WmmmBmmWmWm(_m#mWmmWmWmmBmBmBmmWmmWmmmmBWw,4W#mWmmBmmBmmWmWmBBWmmWmWmmWmmBmBWmWmmWmWmWmBBBBBBWmWmmmWmmWmWmmW#k]QmWmBmWm
86 BmWmWmWmmmZ=d"s]mmWmmmBBBBmWmWmmBBmmWmWmm#LJ$mmBmWmWmWmWmmmBBmmmWmmBmWmBWmWmmmBmWmmmBmBBmWmBmmBmBWmmBBmBmmWmmm-WmmBBBmB
87 WmmWmmmBWm'`qyk]WmmBBWmBmWmmBmBWmBBWmmBmWWmc]$WmWmmBmmBmBBWmBBWmmBBBBmmWmmmBWmWmmBWmWmWmWmmWmWmWmmBWmBBBBWmmWF`3BBBmWmW
88 mWmmBBWmW(=wWWCjWmWmBmmWmmWmWmBmmWmmBWmW#mW#p]WmmmWmWmWmWmmBmWmmWmBmWmWmmWmWmmmWmWmmmBmmmBBmBmBmBBmmBBmWmmBBmq,]BmWmmmB
89 WmmWmmmQe_wmmme]BmBmWmWmBmBmmBBBWmmWmmmmBBmmm,4#WmmWmmBmmBBBBmmWmmWmmBmmWmmmmWmmBmmWmWmWmWmBBBBBmWmWmBBmBBmWmWc4WmmBWmW
90 BmWmmWm#`]?^{Q[]WmWmBmBmWmmWmWmmmBmBmWmWmBBBm6/4WmWmmWmWmWmBmWmmWmmWmWmWmmWmWmBWmWmmWmmBmBmWmmWmBmBmBBmWmBBmW#G-$mWmmBm
91 WmmBWmWf:.gw,$C]mmBmWmWmmWmmBmBWmWmWmmWmmWmBWWc)mmmmWmmBmmBBBmBWmmWmmmBmBBmBmBmmBmBBmmWmWmWmmWmmWmWmWmWmmWmBmWL mmBmWmW
92 mWmW#mm[ mQmk]f]#WmWmmmWmUmWmWmmBmBmBBmBBmBmW#m,#mWWmmWmWmWmBBmmBBmBWmWmWmBBBBBWmWmBBWmmmBmmWmmWmmmBmmmBBmBmW#W,3BmWmmm
93 WmmmWm#`jmmmBp=dWmmmWmV"<,)$mmmWmWmWmBBmWmWmBmmL3WmmmWmmmWmmWmWmWmBmmBmBmmWmBmWmmmBmBmmWmWmWmmWmmWmWmWmWmBBBmmmL]mBmmWm
94 BmWmW#[]mmWmWmwmmmmQZ":qmm/3mWmmBmmmBmWmmBmWmmWf]BmWmmBWmmBBmmmBmmWmWmWmWmmBBBmmWmWmWmWmmBmmBBmmWmmBmmWmmWmBmWmk]BBmWmB
95 WmmBmW[jmWmW#mWmmWWF'qmQmmL)mmWmWmWmWmmWmWmmWmmm/$BmBWmmBWmBBWmWmWmmBmmBmBWmBmWmmWmmmBmBBBWmWmWmmBWmWmmBBmmWmmBQ/WmBmBm
96 mWmWm#=mmBmmmWmmW#F'uVVmmBk]mWmmBmBmBmWmmBmWmmWmp]BWmmBBmmBmWmmmBmBBBBWmWmmBBBmWmmBBWmWmBmmBmmmWmWmmmWmWmWmmWmWm[#mWmWm
97 Wmmmmk]mBBBBWmmWmWwgqap]mBk+WmBmWmWmWmmWmWmmWmmm[jW#mWmBWmWmmBBWmWmBmWmmmBBBmWmmBWmmmBmmWmWmWmWmmmBBBmBmmmWmBmmmwmBmmmW
98 BmWmWmjBmWmmmBBmmmmWBQmc"Qk mmWmmBmmmWmmBmBBmBWm6/$mWmmWmmBmWmBmmmBBBmmWmWmBBmBBBmBWmWmWmmBmmBmBBWmBmWmWmWmmWmWm[3mQmWm
99 WmmW#mmWmmBWmWmWmWmmmmmWp4k)mmmWmWmWmBmWmWmBBmmWm[]mBmWmmWmWmmWmWmWmBBBmBmBmWmBmWmBmBmBmBBBBWmWmBmmWmmBmBmBBmBmB(]mmmmB
100 mWmmWmWmmWmmBmmmBmWmWmW#mJEjWmWmmBmBBWmBmmBmWmWmmkjWmWmmWmmmBBmBmBmBmWmWmWmWmmWmmBmWmWmWmBmBmmBmWmWmmWmWmWmBBBBm[]WmWmW
101 WmmWmmmBBmWmWmWmWmmWmmBmWpNjWmmBWmWmmmWmBWmWmmBmWk]#BmBBmBBWmBBBBBBBBmmmBmmmBBmBWmWmmmmmBmWmWmWmmBmBBmBmmmBmWmBmk)mWmmB
102 BmWmmWmWmBmBmmBmBmWmmWmWmmpjWmWmmmBmWmmWBmBmmWmW#LjWmWmBBBmmBmWmmWmBmWmWmWmWmBBmmBmmWmWmWmBmmBmBWmWmBBBBWmWmBmWm#-W#mWm
103 WmmBBmBmBmWmWmWmWmmBBmBmW#WmmWmmWmWmBWmW#WmWmmBmmk]mBmBBmWmWmWmmWmmWmmWmmBmBmWmWmWmWmBmWmmWmWmWmmmmBmWmmmBmBBBmm#=BBBmB
104 mWmWmWmWmWmmmBmBmBWmBBBmW#mmWmmWmmBmD"(!#mmmWmWmBC]mWmWmWmmmBmmWmmWmmWmmWmWmWmmmBmBmBmWmmWmmBmmBWmWmWmmWmWmWmBBBmgQmmWm
105 WmmmBmmmBmmWmWmWmBmBmWmWmmWmmBBmmWmP\gy/]WmWmmmWmE)mmBmmmBBWmWmmBBmmWmmWmmBmmBBWmWmWmWmmWmmWmWmWmmBmmBBmBmBmBmWmBBmmWmm
106 BmWmWmWmWmWmmBmmBBBmWmmmmWmmWmWmBWF_jQmL]WmmBBWmmf]mWmWmWmBmmBmWmWmWmmWmmWmWmWmmmmBmmmBBmmWmmmWmmWmWmWmWmWmWmWmmWmBBmBB
107 WmmWmmBmBmmBWmWmWmBBmBBWmmBBmBmBmF_JWmmk=WmWmmmmWhmmBmBmBmWmWmWmmmBmBBmBBmBmBmmWmWmWmWmBBWmmWmmBmBmmBmmmBmmmBmmWmmWmWmB
108 mWmmBBBBBBWmmmBmmBmWmBmmWmWmWmWmm )!?VWh.#mmBWmWmWmWmWmWmWmmmBmmWmWmBmWmBBmWmWmBmBmBmBmWmmmWmBWmWmWmWmWmWmWmWmWmmWmmmBm
109 WmmWmBmWmmmBWmWmWmWmmWmWmmmBmmmBQqwgw,3W(WmmWmmBmmmmWmmmBmmWmWmWmBmBBBmBmWmmBmBBBBBBBBBmmWmmBmmBmmBmmBmBmBmWmmmBBmmWmWm
110 BmWmmWmmBWmWmmmBmBmmWmmmBWmWmWmW#mmmm6/$[#mWmmWmWmWmmBBWmWmBmBmmBmWmBmWmWmmWmWmBmWmBmWmWmBmWmWmWmWmWmWmWmWmmBBWmBBWmmBm
111 WmmBBmBWmmBmmWmWmWmWmmWmWmmmBmBmBWmWmmL]'#mmBBmBmBmWmWmmmBmWmWmWmWmmWmmBmmWmmBmWmmBmWmmmBBBmWmmBmmWmmBmmBmBBBmmBBmmBBBB
112
113
114
115 *笔记说明
116 =============1=============== ---------------------------------------------------
117 brief introduction ~ 1
118 ============================= ~ 2 ==n==
119 script language of *nix ~ 3 title
120 sharp tool of OS management ~ 4 =====
121 ~ 5
122 ~ 6 --------
123 ~ 7 subtitle
124 ==============2============== ~ 8 --------
125 explainer ~ 9
126 ============================= ~10 #subsubtitle
127 ~11
128 etc: ~12 ------------------
129 ------------------- ~13 | |
130 |#!/bin/sh | ~14 | code |
131 |#!/bin/bash | ~15 | |
132 |#!/usr/bin/zsh | ~16 ------------------
133 ------------------- ~17
134 ... ~18 ----------------------
135 ~19 explain
136 ~20 ----------------------
137 ---------------- ~--------------------------------------------------
138 执行脚本:
139 source 脚本名字
140 ./脚本名字
141 ----------------
142
143 ===============3=============
144 注释
145 =============================
146 只有行注释#
147
148
149
150 ===============4=============
151 输入输出
152 =============================
153 输入(读取行):
154 ---------------------------
155 read [-n 提示信息] 变量名
156 ---------------------------
157 输入密码时,可以:
158 ------------
159 |stty -echo|
160 ------------,关闭回显
161
162 输出:
163 --------------
164 echo
165 printf
166 --------------
167
168
169
170
171
172 ===============5=============
173 变量
174 =============================
175 -----5.1----
176 |自定义变量
177 ------------
178 #声明变量
179 etc:
180 -------------------------------------------------------
181 |var1=linux |
182 |var2="linux or windows" #or var2='linux or windows' |
183 |var3=$var1 |
184 |var4=$var1$var2$var3 |
185 |var5="$var1 $var2 $var3" #only " here |
186 | ------------------------------------------- |
187 | | readonly a=3 #like const in C | |
188 | | | |
189 | | a=3 | |
190 | | readonly a #set readonly mode | |
191 | ------------------------------------------- |
192 -------------------------------------------------------
193 注:等号两边不能有空格
194
195 ----------------------------------------
196 " 可以包含$引用其他变量值
197 ' 不能引用$
198 ` 命令输出结果赋给变量,等同于$(命令)
199 ----------------------------------------
200
201 #引用变量
202 etc:
203 -----------------
204 |echo $var1 |
205 |echo $var2 |
206 |echo $var3 |
207 |echo $var4 |
208 |echo $var5 |
209 -----------------
210
211 #删除变量(unset)(删除后的变量将不再能被引用)
212 etc:
213 -----------------
214 |a=3 |
215 |echo $a |
216 |unset a |
217 -----------------
218
219
220 -----------------
221 |a=3;b=4;c=5 |
222 |echo $a$b |
223 |unset -v a |
224 -----------------
225 unset -v 变量a => 删除除a以外的其他变量
226
227
228 ------------5.2------------------
229 |环境变量(set查看所有的环境变量)
230 ---------------------------------
231 放在/etc/profile
232 或者用户主目录shell的配置文件里面
233 用户可以修改
234
235
236 #常见环境变量
237 ----------------------------------
238 $USER 当前用户名
239 $LOGNAME 当前登录用户
240 $UID 当前用户ID
241 $SHELL 当前shell
242 $HOME 主目录位置
243 $PWD 当前工作目录
244 $PATH PATH指定路径
245 $PS1 PS1提示符
246 $PS2 PS2提示符
247 ----------------------------------
248
249
250
251
252 ----5.3----------------
253 |预定义变量(不能修改`)
254 -----------------------
255
256 ------------------------------------------------------
257 $# 参数个数(相当于python的len(sys.argv))
258 $* 所有位置参数内容(相当于python的sys.argv)
259 $0 当前执行的进程/程序名(脚本名字)
260 $? 上一条命令执行状态,0正常,非0不正常
261 -----------------------
262 |test 1=2 |
263 |echo $? |
264 -----------------------
265 outcome:0
266
267 -----------------------
268 |test 1 = 2 |
269 |echo $? |
270 -----------------------
271 outcome:1
272
273 $$ 当前进程进程号
274 $! 后台运行的最后一个进程
275 ------------------------------------------------------
276
277
278 ----5.4---------------
279 |位置变量(脚本的参数)
280 ----------------------
281 etc:
282 -----------------------------
283 |$0 #the name of script |
284 |$1 |
285 |$2 |
286 |$(10) |
287 -----------------------------
288 注:引用的第9个以后的参数时候需用括号wrap起来
289
290
291
292 -----------------------------------------
293 |file= verbose= quiet= |
294 |while getopts f:vq; do |
295 | case $opt in |
296 | f) file=$OPTARG |
297 | ;; |
298 | v) verbose=true |
299 | quiet= |
300 | ;; |
301 | q) quiet=true |
302 | verbose= |
303 | ;; |
304 | esac |
305 |done |
306 |shift $((OPTIND - 1)) #get the optval |
307 -----------------------------------------
308 getopts(类似python的getopt模块)
309 这里有个技巧,v,q同时选中只有一个有效
310 shift移除opt只留下参数值
311
312
313
314
315 ===============6===============
316 I/O重定向(/dev/std*设备)
317 ===============================
318 ----6.1----
319 |输入重定向
320 -----------
321 <
322 << 配对符号
323
324 etc:
325 ---------------------
326 |wc -l < /etc/passwd|
327 ---------------------
328
329 cat << EOF
330 终端可输入,直到再次输入EOF时候结束
331 注:这里的符号可以为其他任何字符或者字符串
332
333
334 ----6.2----
335 |输出重定向
336 -----------
337 > 清空并使用
338 >> 追加到文件
339
340 etc:
341 -----------------
342 |ls > demo.txt |
343 |ls >> demo.txt |
344 -----------------
345
346 ----6.3----
347 |错误重定向
348 -----------
349 2> 清空并使用
350 2>> 追加到文件
351
352 ----------6.4-----------
353 |标准输出及标准错误重定向
354 ------------------------
355 &>
356 &>>
357
358
359 ---6.5---
360 |特殊文件
361 ---------
362 #/dev/null
363 将输出或错误重定向到这个文件,效果是命令执行将不会显示反馈信息
364
365 etc:
366 -----------------------------------
367 |if who|grep mocker > /dev/null |
368 |then |
369 | echo "hello mocker" |
370 |else |
371 | echo "you got a name?" |
372 |fi |
373 -----------------------------------
374
375 #/dev/tty
376
377 关闭回显在输入密码时很有用
378 --------------------------------------------
379 |stty -echo #turn off |
380 |stty echo #turn on |
381 --------------------------------------------
382
383
384
385
386
387 ===============7===============
388 各种运算
389 ===============================
390 ---------------
391 |expr 运算命令(速度较下一方法更慢(新建shell的缘故),不推荐)
392 ---------------
393 -------------------------------------------
394 + 加法
395 - 减法
396 \* 乘法,注意要有转义字符
397 / 整除
398 % 取模(求余)
399 各种逻辑运算符号(=、!=、<、<=、>、>=、&、|)
400 字符串操作(具体用法man expr)
401 -------------------------------------------
402 注:expr表达式定义等于符号是=而不是==
403
404
405 -------------------------------
406 |expr 4 + 5 |
407 |expr 4 - 5 |
408 |expr 4 \* 5 |
409 |expr 4 / 5 |
410 |expr 4 % 5 |
411 -------------------------------
412 注:上面运算变量之间必须要有空格
413
414
415 --------------
416 |各种运算符号(与C一模一样,优先级也是)
417 -------------
418 -----------------------------------------------
419 ++,--
420 + - ! ~
421 * / %
422 + -
423 >> <<
424 < <= > >=
425 == !=
426 & ^ |
427 && ||
428 ?:
429 = += -= *= /= %= &= ^= <<= >>= |=
430 -----------------------------------------------
431 以上运算符号要放在$(())中,这一语法好比双引号,除了双引号,无需转义!
432
433 etc:
434 -------------------------------------
435 |for (( i = 0; i < count; i++ )); do|
436 | echo $i |
437 |done |
438 -------------------------------------
439
440
441
442
443
444
445 =================8==================
446 条件测试
447 ====================================
448
449 语法
450 -------------
451 |test |
452 |[ ] |
453 -------------
454
455 参数
456 更多参数:
457 -------------
458 |man test |
459 -------------
460
461
462 ---------
463 |if 语句
464 ---------
465 -------------------------
466 |if [ ];then |
467 | ... |
468 |elif [ ];then |
469 | ... |
470 |else |
471 | ... |
472 |fi |
473 -------------------------
474
475 ----------
476 |case 语句(常用来做菜单)`
477 ----------
478 -------------------------
479 |read choice |
480 |case "$choice" in |
481 | U|u) whoami ;; |
482 | L|l) ls -l ;; |
483 | *) ;; |
484 |esac |
485 -------------------------
486 ;;相当于break
487 *)相当于default
488
489
490 #文件/目录
491 ---------------------------
492 -d 测试是否为目录
493 -e 测试文件/目录是否存在
494 -f 测试是否为文件
495 -r 测试是否有read权限
496 -w 测试是否有write权限
497 -x 测试是否有excute权限
498 -L 测试是否为link文件
499 ---------------------------
500
501 #比较
502 ---------
503 |数字比较
504 ---------
505 ---------------------------
506 -eq 等于
507 -ne 不等于
508 -gt 大于
509 -lt 小于
510 -le 小于等于
511 -ge 大于等于
512 ---------------------------
513
514 etc:
515 ----------------------------------
516 |pth=/tmp/demo.txt |
517 |if [ -f $pth ];then |
518 | echo "file!!" |
519 |elif [ -d $pth ] |
520 | echo "directory!!" |
521 |else |
522 | echo "not file or directory" |
523 |fi |
524 ----------------------------------
525 注:[ ]/[[ ]]两边的空格,不能少
526
527 ----------------------------------------------------------------
528 |use=`df -h|grep "/dev/sda5"|awk '{print $5}'|cut -d "%" -f 1` |
529 |if [ $use -gt 80 ]; then |
530 | echo "warning:sda5 used more than 80%" |
531 |fi |
532 ----------------------------------------------------------------
533 -----
534 awk \
535 - >很有用的两个命令
536 cut /
537 -----
538
539 其他工具
540 -----------------
541 sed
542 wc
543 find
544 ...
545 -----------------
546
547 -----------
548 |字符串比较
549 -----------
550 -----------------
551 = 等于
552 != 不等于
553 -z 为空
554 -----------------
555
556 etc:
557 -------------------------
558 |if [ "fi" = "if" ];then|
559 | echo "equal" |
560 |fi |
561 -------------------------
562
563 -------------------------
564 |if [ -z "" ];then |
565 | echo "empty" |
566 |fi |
567 -------------------------
568
569
570
571 ----------
572 |逻辑测试
573 ----------
574 ------------------------
575 |-a或&& 逻辑与
576 |-o或|| 逻辑或
577 |! 逻辑非
578 ------------------------
579
580 etc:
581 ----------------------------------------
582 |[ $USER = "mocker" ] && echo "mocker" |
583 ----------------------------------------
584
585 ----------------------------------------
586 |[ $USER != "mocker" ] || echo "mocker"|
587 ----------------------------------------
588
589
590
591 =================9==================
592 循环(break,continue功能类似C)
593 ====================================
594 --------------------
595 |for循环(类似python)
596 --------------------
597 etc:
598 ---------------------------------
599 |for day in "Mon" "Tues" "Wed" |
600 |do |
601 | echo $day |
602 |done |
603 ---------------------------------
604
605 -------------------------------------
606 |for (( i = 0; i < 5; i++ )); do |
607 | echo $i |
608 |done |
609 -------------------------------------
610
611 --------------------------------------------------
612 |for line in `cat /etc/X11/xorg.conf|grep Option`|
613 |do |
614 | echo $line |
615 |done |
616 --------------------------------------------------
617
618
619 ----------
620 |while语句
621 ----------
622 ---------------------------------
623 |count=0 |
624 |while [ $count -ge 10 ]; do |
625 | echo $count |
626 | count=`expr $count + 1` |
627 |done |
628 ---------------------------------
629
630
631 -----------
632 |until语句
633 -----------
634 ---------------------------------
635 |count=0 |
636 |until [ $count -ge 10 ]; do |
637 | echo $count |
638 | count=`expr $count + 1` |
639 |done |
640 ---------------------------------
641
642 while 和 util 的区别
643 --------------------------
644 从字面意思就可以区别:
645 while 当条件成立 => 执行
646 util 当条件成立 => 结束
647 --------------------------
648
649
650
651
652
653 ================10==================
654 函数
655 ====================================
656 -------------------------
657 |function_name(){ |
658 | ... |
659 | [return exitcode] |
660 |} |
661 -------------------------
662
663 #返回值
664 -----------------------------------------------------------------------
665 return 作用相当于exit,但exit会终止shell运行
666 正是由于函数可能有返回值,使得在if,while里面可以调用函数(有结束条件)
667 -----------------------------------------------------------------------
668
669
670 #参数
671 ---------------------------------------------------------------
672 在函数体中,位置参数($1、$2...、$#、$*)都是函数的参数。
673 父脚本的位置参数则临时地被函数参数所掩盖或隐藏。
674 $0依旧是父脚本名字
675 当函数完成时,原来的命令行参数(位置参数)会恢复
676 ---------------------------------------------------------------
677
678 etc:
679 demo.sh
680 -------------------------------
681 |test() { |
682 | echo "$0" |
683 | echo "$1" |
684 | echo "$2" |
685 | return 0 |
686 |} |
687 |test "1" "2" |
688 -------------------------------
689 运行: ./demo.sh mocker fucker
690 结果: ./demo.sh
691 1
692 2
693 结论: test函数内部掩盖了$1,$2;
694 $0还是父脚本路径
695 3 lines:
698 #局部变量
699 ---------------------------------------------------------------
700 posix shell里面没有局部变量这一说,函数与父脚本共享变量
701 但是,bash、ksh88、ksh93、zsh都提供局部变量功能,可惜语法不一致
702 ---------------------------------------------------------------
703
704 etc:
705 ---------------------------------------------
706 |wait_for_login() { |
707 | until who | grep "$!" > /dev/null;do |
708 | sleep ${2:-30} |
709 | done |
710 |} |
711 ---------------------------------------------
712
713 #传参
714 etc
715 --------------------------------------
716 |wait_for_login mocker #30 seconds|
717 --------------------------------------
718
719 --------------------------------------
720 |wait_for_login mocker 60 #60 seconds|
721 --------------------------------------
722
723
724
725 expand:
726 ----------------------------------------------------------------
727 ${var:-word} var存在且非null =>返回var;否则返回word
728 ${var:+word} var存在且非null =>返回word;否则返回null
729 ${var:?msg} var存在且非null =>返回var;否则显示msg
730 ----------------------------------------------------------------
731
732 ----------------------------------------------------------------
733 ${var#pattern} 去除开头pattern匹配的最短部分(非贪婪匹配)
734 ${var##pattern} 去除开头匹配pattern的最长部分(贪婪匹配)
735 ${var%pattern} 去除末尾匹配pattern的最短部分(非贪婪匹配)
736 ${var%%pattern} 去除末尾匹配pattern的最长部分(贪婪匹配)
737 ----------------------------------------------------------------
738
739
740
741
742
743 ================11==================
744 代码块
745 ====================================
746
747 ---------------------------------------------------
748 结构 | 符号 |认可的位置 |另外的进程
749 ---------------------------------------------------
750 subShell () 行上任何位置 是
751 代码块 {} 换行符、分号或关键字之后 否
752 ---------------------------------------------------
753
754
755 --------------------------------------------------------
756 1.需要用subShell还是代码块,个人喜好
757 2.代码块与subShell共享状态:
758 2.1 cd命令会对主脚本造成影响
759 2.2 也会对变量赋值产生影响
760 2.3 代码块里的exit会终止主脚本
761 --------------------------------------------------------
762
763 etc:
764 ----------------------------------
765 |[ -f /usr/bin/2to3-2.6 ] && { |
766 | echo "hello," |
767 | exit |
768 |} |
769 |echo "world!" |
770 ----------------------------------
771
772 ----------------------------------
773 |[ -f /usr/bin/2to3-2.6 ] && ( |
774 | echo "hello," |
775 | exit |
776 |) |
777 |echo "world!" |
778 ----------------------------------
779
780 outcome:可以看到第一段代码输出hello,而第二段代码输出hello,world!
781
782
783
784 ================12==================
785 命令工具
786 ====================================
787 -------
788 |find
789 -------
790 详细参数,just man it
791
792 etc:
793 ----------------------------
794 |find / -name test -print |
795 ----------------------------
796 打印名字为test的文件(一切皆文件)
797
798 --------------------------------------------------------
799 |find . \(-name _* -or -newer while2 \) -type f -print |
800 --------------------------------------------------------
801 打印以_开头或者比while2新建的文本文件
802
803 -----------------------------------------
804 |find . -newer while2 -exec ls -l {} \; |
805 -----------------------------------------
806 罗列比while2新的文件
807 这里说明下-exec,该参数以\;结束,{}是其特殊参数,表示当前文件的完全路径
808 -ok和-exec用法一样,不过ok会在执行每条命令前询问用户是否执行
809
810 ---------------------------------------------------------------------------------------------------
811 QQQQQQQQQQQQ[vnnnnnnnnnnnnnnnno=2?QQQQQQWWW
812 QQQQQQQQQQQ[<nnvnvnvnnnnnnnnnnnvns3WQQQQWmm ------------------------------
813 QQQQQQQQQQF<=nvnnnnvnnnvnnnnnnnnn=s)$QQQmWB ~1
814 QQQQQQQQQD<onvnnnvvnnnvnnnnvnnvnvnon7$QQWmW ~2 where there is a shell,
815 QQQQQQQQQ(InnnnnvnnnvvvIvvnnnnnnnnnnn)WQmWm ~3 there is a way
816 QQQQQQQQ#|vnvnvnvl:::i:ii::lvnvnnnnnne4QBBB ~4
817 QQQQQQQQflnvnnnl::::::::::::::vnvnnvn=7QmWm ------------------------------
818 QQQQQQQQfonnnvl::::::::::::i:i:vnvnnnnn3mWm
819 QQQQQQQW(=vvnI:::::::::::iii::i:vnnnvno/WmW
820 QQQQQQQF<nvnv::i+::l::::i:iiiiiiInnvnnn=WBB
821 QQQQQQQLlnnvv::=g;+::::iiiiiii:::vnnnvncWmW
822 QQQQQQQ[vvvn::|QoXa/I:::::i:ii|::nnvv=vvWmW
823 QQQQQQQ[vvnv::{noZZ6p|:::iiii::::nlc==ncWmW
824 QQQQQQQL=vnI::{nX#ZZZop|:l::::liiqwpconvWmW
825 QQQQQQQ(nvn::l]oZ##Z##msg=i:ii_gwmWmpnncWmW
826 QQQQQQQfvnnii:jo####Z#Z##ws_au####mW[{n(WmW
827 QQQQQQQEnnvii:>n###Z####Z###ZZZ#Z#mW[ln(WmW
828 QQQQQQQL=vvi:ijv3Z####Z####Z#Z#Z#Z#m[n=vWmW
829 QQQQQQQpnovii=vXsMX##Z####Z##Z#ZZ##W()n)mWm
830 QQQQQQPLw/li:jon#6p?######ZZ#Z#Z#ZYomc=jWmW
831 QQQQQEq#Zq,:i)oWqoSm7Y########ZZeQdWW(=jmWm
832 QQQQQ(d#XXo|:jn3WWmwa,3Y#Z##XZ!Qu##BE=1dWmW
833 QQQQQQ#Znv3p:)2XZWWWWmag2z##+1vXSYYU[ia)WmW
834 QQQQW<#Znn%[-noZ#qZVUUAmqq#ZawawgmmmEIdcmWm
835 QQQQQm#Z21is]oo#Z#Z##########UmWWBGmC=XZWmW
836 QQQQQ%Z#Z1vvjoXZ###Z#Z########qwXmm#vjvZWmW
837 QQQQQc3ZXvv3%oo#Z#Z#######mm#####ZWkivnZWmW
838 QQQQQm)onnldWn2###Z#Z####mmmmm####WCj{XeWmW
839 QQQQQQcM*5l"4n2#Z########mmmmmm###W[iu#fWBB
840 QQQQQQE_s%In)voZ##Z#Z####m#mmmm###W(X#eQWBW
841 QQQQQW\nn=nn=3{X#Z########wmmmm#mmW<#2\QmWm
842 QQQQQ[vnvnv=vn={####Z#######mm#m#BF)MqmQBBB
843 QQQQ@:nnvvvn=vnn3Z#Z###XX#######mW'agQQQWmW
844 QQQQ[lnv:vqcv=nv%S#####o*YX####mWF_)QWQQBWm
845 QQQW1ivI<a%1vnnnv3####Z#qam#####F':q)QQQWmW
846 QQQF|lviw#mavvn=vnMYX######Z#ZXMa=n3i]QQmWm
847 QQQ[lIvqQQQQQ;v)p=n_vM!YYYYYM5wmIXn=IcQQBBW
848 QQQflvvjQiQiQim;lnnlQmgWQap<qiiilp==<h]QWmB
849 QQW\vn|3iQiQQQiWmg_wliQiQQm#iiiivz=o3v%WmWm
850 QQfnInjmWQiQQiQXQii|iiiiQQQQiiiivkvnX3k3mWm
851 QQ(Ivn]mcQQQiiQZWiim#iiiilililiiv[in=)!jWmW
852 QQ(:vn>YCQQWWQ&ZQiiiZiiiiiiiiiiiv(=novcQmWm
853 WWmBBmWmBBWmWmBBWmWmWmWmWmWmWmWmWmWmBmmmWmW