¸ß¼¶Bash½Å±¾±à³ÌÖ¸ÄÏ zz

ÉÏһƪ / ÏÂһƪ  2006-11-28 15:13:15 / ÌìÆø: Array / ¸öÈË·ÖÀࣺÆäËû


!rVM2`W\-V?0y0
`kWm:unxQ5tA0
Y7ro6j,R~[^3C(T0
;?!vw:Ty+` Wn1II0ÒëÕßÐò
3X[JC7T5q_k;I'_2[0ľîìУ԰ BBS ÉçÇø d,V5nxC7AMG
ºÁÎÞÒÉÎÊ£¬UNIX/Linux×îÖØÒªµÄÈí¼þÖ®Ò»¾ÍÊÇshell£¬Ä¿Ç°×îÁ÷ÐеÄshell±»³ÆÎªBash(Bourne Again Shell)£¬¼¸ºõËùÓеÄLinuxºÍ¾ø´ó²¿·ÖµÄUNIX¶¼¿ÉÒÔʹÓÃBash¡£×÷ΪϵͳÓëÓû§Ö®¼äµÄ½»»¥½Ó¿Ú£¬shell¼¸ºõÊÇÄãÔÚUNIX¹¤×÷ƽ̨ÉÏ×îÇ×ÃܵÄÅóÓÑ£¬Òò´Ë£¬Ñ§ºÃshell£¬ÊÇѧϰLinux/UNIXµÄµÄ¿ªÊ¼£¬²¢ÇÒËü»áʼÖÕ°éËæÄãµÄ¹¤×÷ѧϰ¡£
M[@/qMu0
F9r$nZ5`'[1X&OI0shellÊÇÈç´ËµØÖØÒª£¬µ«ÁîÈ˾ªÆæµÄÊÇ£¬½éÉÜshellµÄÊéûÓÐÕæÕýÁîÈËÂúÒâµÄ¡£ËùÐÒµÄÊÇ£¬ÎÒ¿´µ½ÁËÕâ±¾±»È˳ÆÎªabsµÄÊ飬Õâ±¾Êé½éÉÜÁËbash´óÁ¿µÄϸ½ÚºÍ¹ãÀ«µÄ·¶Î§£¬ÎÒÓöµ½µÄ¾ø´ó²¿·ÖµÄ¼¼ÊõÎÊÌâ--ÎÞÂÛÊÇÎÒÍü¼ÇµÄ»òÊÇÒÔǰûÓз¢ÏÖµÄ--¶¼¿ÉÒÔÔÚÕâ±¾ÊéÀïÕÒµ½´ð°¸¡£ÕⱾʹÓôóÁ¿µÄÀý×ÓÏêϸµØ½éÉÜÁËBashµÄÓï·¨£¬¸÷ÖÖ¼¼ÇÉ£¬µ÷ÊԵȵȵļ¼Êõ£¬ÒÔÑ­Ðò½¥½øµÄѧϰ·½Ê½£¬ÈÃÄãÁ˽âBashµÄËùÓÐÌØÐÔ£¬ÔÚÊéÖл¹ÓÐÐí¶àÁ·Ï°¿ÉÒÔÒýµ¼Äã˼¿¼£¬ÒԵõ½¸üÉîÈëµÄ֪ʶ¡£ÎÞÂÛÄãÊÇÐÂÊÖ»¹ÊÇÀÏÊÖ£¬»òÊÇʹÓÃÆäËûÓïÑԵijÌÐòÔ±£¬ÎÒÄܿ϶¨ÄãÄÜÔÚ´ËÊéÓÃÊÜÒæ¡£¶ø±¾Êé³ýÁ˽éÉÜBASHµÄ֪ʶ֮Í⣬ҲÓÐÐí¶àÓÐÓõĹØÓÚLinux/UNIXµÄ֪ʶºÍÆäËûshellµÄ½éÉÜ¡£Ä¾îìУ԰ BBS ÉçÇøy'h Ay6i${5@db

)c-A.af0e*^_J0ÔÚ¿´µ½±¾ÊéµÄÓ¢Îİæºó£¬ÎÒ¾ö¶¨°ÑËü·­Òë³öÀ´£¬ÔÚLinuxsirÂÛ̳ÉϽáʶÁËÒëÕßÖ®Ò»Ñî´ºÃô¹²Í¬·­ÒëÕâ±¾Ê飬600¶àÒ³µÄÊéÊDZ¾´ó²¿Í·µÄÊ飬ÎÒÃÇ»¨ÁË6¸öÔµÄÒµÓàʱ¼ä²Å·­ÒëÍêÁË¡£Ä¾îìУ԰ BBS ÉçÇøt,~Dm]\ \

_7_?vU3{"\e0¹ØÓÚ°æÈ¨µÄÎÊÌ⣬ӢÎİæµÄ×÷ÕßMendel Cooper¶ÔÓ¢ÎİæµÄ°æÈ¨×öÁËÏêϸµÄÔ¼¶¨£¬Çë²Î¿¼£ºAppendix Q. Copyright¡£ÖÐÎÄ°æ°æÈ¨ÓÉÒëÕßÑî´ºÃôºÍ»ÆÒ㹲ͬËùÓУ¬ÔÚ×ñÊØÓ¢ÎÄ°æ°æÈ¨ÏàÓ¦Ìõ¿îµÄÌõ¼þÏ£¬»¶Ó­ÔÚ±£Áô±¾ÊéÒëÕßÃû×ֺͰæÈ¨ËµÃ÷ÒÔ·ÇÓ¯ÀûµÄ·½Ê½×ÔÓÉ·¢²¼´ËÖÐÎİ棬ÒÔÓ¯ÀûÄ¿µÄµÄËùÓÐÐÐΪ±ØÐëÁªÏµÓ¢ÎÄ×÷ÕߺÍÁ½Î»ÖÐÎÄÒëÕßÒÔ»ñµÃÐí¿É¡£Ä¾îìУ԰ BBS ÉçÇøh/Z6vJ4V*nQ/Q+y
ľîìУ԰ BBS ÉçÇøW5Fjx8C
±¾ÊéµÃÒԳɸ壬ÎÒ£¨»ÆÒ㣩Ҫ¶àлÎÒµÄÅ®ÅóÓÑ£¬±¾¸Ã¸øÓèËýµÄʱ¼äÎÒÓÃÀ´ÁË·­Ò룬¶àлÄãµÄÀí½â£¬ÄãÊÇÒ»¸öºÜ°ôµÄÅ®ÅóÓÑ£¡
,Atb^ w!gv:cV'a0
T:zr7N.fD I.p t0r0                       ÒëÕß Ñî´ºÃô »ÆÒãľîìУ԰ BBS ÉçÇøq6] f8Mb u8?8h
                           2006.5.15ľîìУ԰ BBS ÉçÇøn E D2aI9LVWQ W8B

'aA O iLJ0Advanced Bash-Scripting GuideľîìУ԰ BBS ÉçÇø]nc!R D@
<<¸ß¼¶Bash½Å±¾±à³ÌÖ¸ÄÏ>>
P%q+?4E4Xd"XQ9R \$bL0Ò»±¾ÉîÈëѧϰshell½Å±¾ÒÕÊõµÄÊé¼®
#HC){v4QY%Xo/x0ľîìУ԰ BBS ÉçÇø*Zh{"V9g+@0{dq
Version 3.7.2ľîìУ԰ BBS ÉçÇøfww!g/XBQRx
2005/11/16
&SX5b&|8{ va}2Q)`0
}j3p5k#V$u0[ R0×÷Õß:Mendel Cooper
? c P%C|$S,W2S R0
%i pTJD3F4S0mail:thegrendel@theriver.com
:{L?*Lg%_.~SrZ0ľîìУ԰ BBS ÉçÇø"z VN b"lg?`
Õâ±¾Êé¼Ù¶¨ÄãûÓÐÈκνű¾»òÒ»°ã³ÌÐòµÄ±à³Ì֪ʶ,µ«ÊÇÈç¹ûÄãÓÐÏà¹ØµÄ֪ʶ,ÄÇôÄ㽫ºÜÈÝÒ×
tv Hd0Qm3y0´ïµ½Öи߼¶µÄˮƽ...all the while sneaking in little snippets of UNIX? wisdom and
X5}W.M/[k!jqj\0lore(Õâ¾ä²»ÖªµÀÔõôÒë).Äã¿ÉÒ԰ѱ¾Êé×÷Ϊ½Ì²Ä,×ÔѧÊÖ²á,»òÕßÄã»ñµÃshell½Å±¾¼¼ÊõµÄÎĵµ.
q zBO2St:J0ÊéÖеÄÁ·Ï°ºÍÀý×ӽű¾ÖеÄ×¢Êͽ«»áÓë¶ÁÕßÓиüºÃµÄ»¥¶¯,µ«ÊÇ×î¹Ø¼üµÄǰÌáÊÇ:
x"Pc3^t5v)_ G0ÏëÕæÕýѧϰ½Å±¾±à³ÌµÄΨһ;¾¶¾ÍÊDZàд½Å±¾.ľîìУ԰ BBS ÉçÇø Pk/Nl }N

@%wh!jkHftU0Õâ±¾ÊéÒ²¿É×÷Ϊ½Ì²ÄÀ´½²½âÒ»°ãµÄ±à³Ì¸ÅÄî.ľîìУ԰ BBS ÉçÇø6}7b}(uG;[;X

@5K2X%~Xd.e0ÏÂÔØ±¾Êé×îа汾,http://personal.riverusers.com/~thegrendel/abs-guide-3.7.tar.bz2,ľîìУ԰ BBS ÉçÇø'L#z(t7P"qA
ÕâÊÇÒ»¸öÒÔtarºÍbzip2½øÐдò°üµÄ,²¢ÇÒÊÇÒÔHTMLÀ´·¢ÐеÄ.µ±È»,ÄãÒ²¿ÉÒÔ»ñµÃ±¾ÊéµÄpdf°æ±¾
8b/J~V$Mp0ÔÚhttp://www.tldp.org/LDP/abs/abs-guide.pdf.¿ÉÒÔÔÚľîìУ԰ BBS ÉçÇøy5J&l[W:M*T `2r,q
http://personal.riverusers.com/~thegrendel/Change.logÖв鿴ÐÞ¶©ÀúÊ·.ľîìУ԰ BBS ÉçÇø_uc-S]#mM:H#O

~s*z5OA0ÒëÕß:Ñî´ºÃô£¬»ÆÒã
(B*\#]OfWJ'Tv0mail:chunmin.yang@gmail.comľîìУ԰ BBS ÉçÇø@YO%um zY l&m

]w!m^oaYCn0Ò»Ö±ÏëºÃºÃѧϰһÏÂbash,¿ÉÏ§ÍøÉϵÄ×ÊÁ϶¼ÔÓÂÒ²»¿°,ÎÒ»¹ÊÇϲ»¶Í¨¹ýÒ»±¾ÊéϵͳµÄѧϰ.Õâ±¾
BDR,I;`;]"E0ÊéÀ´µÃÕýÊÇʱºò.±¾ÊéµÄ×÷ÕßÕæÊǷdz£µÄÑϽ÷,´ÓÀý×ÓÀïµÄ¸Ä½øÈËÃûµ¥¾ÍÄÜ¿´³öÀ´.¿ÉϧÎÒË®Æ½ÕæÄ¾îìУ԰ BBS ÉçÇø]'S4k!Pm F6@Hf
µÄÊǷdz£ÓÐÏÞ,ºÃ¶àµØ·½¹À¼ÆÒëµÃ¶¼ÓÐÎÊÌâ.Ï£ÍûÔĶÁµÄÅóÓÑÃǶà¶àÌáЩÐ޸Ľ¨Òé.ÎһᾡÎÒµÄ×îľîìУ԰ BBS ÉçÇøwN-W2ff,R
´óŬÁ¦È¥ÐÞÕýËü.ľîìУ԰ BBS ÉçÇø6X(K[bz `n
ľîìУ԰ BBS ÉçÇøN6e/v}2QtF[
Ŀ¼
`$e2l3bm0++++
i V8Fhm0µÚÒ»²¿·Ö. ÈÈÉíľîìУ԰ BBS ÉçÇø.qNT4C)^ j7x?KX

Byh1`&d)|j0   1. ΪʲôʹÓÃshell±à³ÌľîìУ԰ BBS ÉçÇø]3Z#g^N ?}7Uu
   2. ´ø×ÅÒ»¸öSha-Bang³ö·¢(Sha-BangÖ¸µÄÊÇ#!)
;hR;rx%A fE0ľîìУ԰ BBS ÉçÇø(@i2Gm/x5h7r3Z(c^
       2.1. µ÷ÓÃÒ»¸ö½Å±¾Ä¾îìУ԰ BBS ÉçÇø%Ecb;vrN/s{N(o
       2.2. ³õ²½µÄÁ·Ï°Ä¾îìУ԰ BBS ÉçÇø!y/dnu$` z1`u

7I}PO7?t5]Bz0µÚ¶þ²¿·Ö. »ù±¾
`7i?A%zPzUB0ľîìУ԰ BBS ÉçÇøsEU,O2j w!B5sZ'UO
   3. ÌØÊâ×Ö·ûľîìУ԰ BBS ÉçÇøs/yi2hi&b
   4. ±äÁ¿ºÍ²ÎÊýµÄ½éÉÜ
1KqpY N9v0ľîìУ԰ BBS ÉçÇø l.C$MsN'[+o ~
       4.1. ±äÁ¿Ìæ»»
;^ G jE3FE/Q0       4.2. ±äÁ¿¸³ÖµÄ¾îìУ԰ BBS ÉçÇø}d*[cbsM,C
       4.3. Bash±äÁ¿ÊDz»·ÖÀàÐ͵Ä
"W\m5Cj*LYV1}0       4.4. ÌØÊâµÄ±äÁ¿ÀàÐÍľîìУ԰ BBS ÉçÇøD&sc)oY'V.j

AC8{#_~0   5. ÒýÓÃ(·­ÒëµÄ¿ÉÄÜÓÐÎÊÌâ,ÌØÖ¸ÒýºÅ)
8D+n/Y*X$EBK0
;?1Dwd*]K@}0       5.1. ÒýÓñäÁ¿
t:\&\x\2zm5Q0       5.2. תÒå(\)
6k;u9@L T&FEk0ľîìУ԰ BBS ÉçÇøj3`LlK
   6. Í˳öºÍÍ˳ö״̬
6FUH7L%v[.|%_ f J"[0   7. TestsľîìУ԰ BBS ÉçÇø(g P]\3|p!A,\

V~P,hD"{uQY0       7.1. Test½á¹¹Ä¾îìУ԰ BBS ÉçÇøvS~JSp0?%p-?x
       7.2. Îļþ²âÊÔ²Ù×÷
"O"GxV/T \8u^m4D.V0       7.3. ÆäËû±È½Ï²Ù×÷
#f?9Q f,u%h F lN;j0       7.4. ǶÌ×µÄif/thenÌõ¼þtest
bd T)j3a)U0       7.5. ¼ì²éÄãµÄtest֪ʶľîìУ԰ BBS ÉçÇø;Su(~:c.mw7Z1t
ľîìУ԰ BBS ÉçÇø%W0m6I,P-E~ G
   8. ²Ù×÷·ûºÍÏà¹ØµÄÖ÷Ìâ
z:cJf*lFyb0ľîìУ԰ BBS ÉçÇø]:g9MZ-N@ h
       8.1. ²Ù×÷·û
hT:Sa6p@6{{mw0       8.2. Êý×Ö³£Á¿
!q7GXl(C4N0
@+D"v!Qn][+k0µÚÈý²¿·Ö. ³¬Ô½»ù±¾
'| ?*cf0}0
]_9dRw gLK.ap0   9. ±äÁ¿ÖØÓÎ
/t/]K8b5IYn0ľîìУ԰ BBS ÉçÇø;kxw7mPv-^7I3?
       9.1. ÄÚ²¿±äÁ¿
VXORs N&q0       9.2. ²Ù×÷×Ö·û´®Ä¾îìУ԰ BBS ÉçÇø_w3\;{Z?|4d'Y+{
       9.3. ²ÎÊýÌæ»»
z e$]R'@#aPz ns0       9.4. Ö¸¶¨ÀàÐ͵ıäÁ¿:declare»òÕßtypesetľîìУ԰ BBS ÉçÇøyF}J5]sf
       9.5. ±äÁ¿µÄ¼ä½ÓÒýÓÃ
]?1I${j;h:v-II0       9.6. $RANDOM: ²úÉúËæ»úÕûÊýľîìУ԰ BBS ÉçÇøI Y0uv&@R0P
       9.7. ˫ԲÀ¨ºÅ½á¹¹
b,}'S+N'F$p.?{/~0ľîìУ԰ BBS ÉçÇø\\Lz;H,Y&N*m?
   10. Ñ­»·ºÍ·ÖÖ§
FX5G[^0
(M7\ |8X8yZ6`D@0       10.1. Ñ­»·
-^ ~$~6p|.@I#@0       10.2. ǶÌ×Ñ­»·
O_,GX0QD/x0       10.3. Ñ­»·¿ØÖÆÄ¾îìУ԰ BBS ÉçÇø'e^UC6]
       10.4. ²âÊÔÓë·ÖÖ§(caseºÍselect½á¹¹)ľîìУ԰ BBS ÉçÇø"I0S$]t&{o

F"meO'rd0   11. ÄÚ²¿ÃüÁîÓëÄÚ½¨Ä¾îìУ԰ BBS ÉçÇøu\8hfC$WV1|6X I
ľîìУ԰ BBS ÉçÇøT-z"Wh2p
       11.1. ×÷Òµ¿ØÖÆÃüÁî
GV Qo:b PyS"X0ľîìУ԰ BBS ÉçÇø XRG3G9|/H
   12. Íⲿ¹ýÂËÆ÷,³ÌÐòºÍÃüÁî
(^ j,~4c`v0
G3l8e*f.uy0       12.1. »ù±¾ÃüÁîľîìУ԰ BBS ÉçÇø2~%Z3|:C b PH`S'v
       12.2. ¸´ÔÓÃüÁîľîìУ԰ BBS ÉçÇøgz-O4m9V6yq.N U~
       12.3. ʱ¼ä/ÈÕÆÚ ÃüÁî
`llS7M8o8h!B@0       12.4. Îı¾´¦ÀíÃüÁî
K d*pB8K"F;_X0       12.5. ÎļþÓë¹éµµÃüÁî
7[P0uY1VJE0       12.6. ͨѶÃüÁî
udi.b {0       12.7. ÖÕ¶Ë¿ØÖÆÃüÁî
r mJG^9ld0       12.8. Êýѧ¼ÆËãÃüÁî
,oL%o6Gr.g.O0       12.9. »ìÔÓÃüÁîľîìУ԰ BBS ÉçÇø$K N#s-O!a7h]
ľîìУ԰ BBS ÉçÇøDC iol+L$\,}
   13. ϵͳÓë¹ÜÀíÃüÁîľîìУ԰ BBS ÉçÇø[0U ?x9]%w E4]6E4w^
ľîìУ԰ BBS ÉçÇø-}$O2d3i gdf
       13.1. ·ÖÎöÒ»¸öϵͳ½Å±¾Ä¾îìУ԰ BBS ÉçÇø6] {T.u&^x&U e ~1}
ľîìУ԰ BBS ÉçÇøeO|%w4O5}g m8V+~u
   14. ÃüÁîÌæ»»Ä¾îìУ԰ BBS ÉçÇø6wqo0kg0@FCV
   15. ËãÊõÀ©Õ¹Ä¾îìУ԰ BBS ÉçÇø6L3sw6g v {6K,Z
   16. I/O ÖØ¶¨Ïò
+I6P)GJ?0
"SWLd Por0       16.1. ʹÓÃexec
4x'AE*RO0       16.2. ´úÂë¿éµÄÖØ¶¨Ïò
G\ v cwy ^f0       16.3. Ó¦ÓÃľîìУ԰ BBS ÉçÇø qQ5}#N)jr~e
ľîìУ԰ BBS ÉçÇø&N_ \G5kDLSb
   17. Here Documents
R^)V3I@ va?0ľîìУ԰ BBS ÉçÇøII&_2S|0JK
       17.1. Here StringsľîìУ԰ BBS ÉçÇø3A+~-ONp*g&lXh\

(Uz1|.qS4C0   18. ÐÝϢʱ¼äľîìУ԰ BBS ÉçÇø2O@9K$}BjL6B U
ľîìУ԰ BBS ÉçÇøqu t)m0^G@
Part 4. ¸ß¼¶
H'tNArPvq#q:G s0ľîìУ԰ BBS ÉçÇøX'\3w IrLv
   19. ÕýÔò±í´ïʽ
&faP t9f6] d _,Q0ľîìУ԰ BBS ÉçÇø6e$[:S%I$~{7sx
       19.1. Ò»¸ö¼òÒªµÄÕýÔò±í´ïʽ½éÉÜ
6jF#KK7M0       19.2. ͨÅäľîìУ԰ BBS ÉçÇøxZ3N4\Z b4q

e`.V@AR0   20. ×Óshell(Subshells)ľîìУ԰ BBS ÉçÇøh~Tq1Kr l,C%H f
   21. ÊÜÏÞshell(Restricted Shells)ľîìУ԰ BBS ÉçÇøzP:OnJ?!}
   22. ½ø³ÌÌæ»»Ä¾îìУ԰ BBS ÉçÇøoO'A:^$W4U)P'o
   23. º¯ÊýľîìУ԰ BBS ÉçÇøg d K5JA-P2J}
ľîìУ԰ BBS ÉçÇø+PI{a)A2tv(vA
       23.1. ¸´ÔÓº¯ÊýºÍº¯Êý¸´ÔÓÐÔ
w8tbL:s,i0       23.2. ¾Ö²¿±äÁ¿Ä¾îìУ԰ BBS ÉçÇøTNYWUwC6v$qRg
       23.3. ²»Ê¹Óþֲ¿±äÁ¿µÄµÝ¹éľîìУ԰ BBS ÉçÇø3w F,vH!QxD5ix,D

}&O?"@2b#~6^+^"cv0   24. ±ðÃû(Aliases)ľîìУ԰ BBS ÉçÇø;f?!m [:gK1o8A
   25. Áбí½á¹¹
:D*@@7N/@ r+`2x0   26. Êý×é
'I t \.]/k]"^f0   27. /dev ºÍ /procľîìУ԰ BBS ÉçÇøm!s(M,h|4nB5Ak
ľîìУ԰ BBS ÉçÇø@!["CzwP
       27.1. /dev
8LzB0zs ~)UE0       27.2. /procľîìУ԰ BBS ÉçÇø f.G,al~9f
ľîìУ԰ BBS ÉçÇøo-h?$ND
   28. ¹ØÓÚZerosºÍNullsľîìУ԰ BBS ÉçÇø[ Pd6q }6H?#A
   29. µ÷ÊÔľîìУ԰ BBS ÉçÇøi#E$rv1x0a(yd
   30. Ñ¡Ïî
\0| @)Pensl R0   31. GotchasľîìУ԰ BBS ÉçÇø2ew,X2s t O
   32. ½Å±¾±à³Ì·ç¸ñ
3X&e)C1{v D{2G s0
_(@0s#jR%A0       32.1. ·Ç¹Ù·½µÄShell½Å±¾·ç¸ñľîìУ԰ BBS ÉçÇø)f!q4i!c@'k |-K1f1c)F_\

:Y%t!T lba+JLG0   33. ÔÓÏîľîìУ԰ BBS ÉçÇø{5R~6O&x*}eoX#{%Sro

hNh |t*C0       33.1. ½»»¥Ê½ºÍ·Ç½»»¥Ê½µÄshellsºÍ½Å±¾
Ut9n0eEv\ZE0       33.2. Shell °üװľîìУ԰ BBS ÉçÇøN#NA#vh3vBsLK
       33.3. ²âÊԺͱȽÏ: ÁíÒ»ÖÖ·½·¨Ä¾îìУ԰ BBS ÉçÇø.J5O8owfid4yF
       33.4. µÝ¹éľîìУ԰ BBS ÉçÇølPn*pIR [p
       33.5. ²ÊÉ«½Å±¾
8cr'R-D*jQ4a-b0       33.6. ÓÅ»¯Ä¾îìУ԰ BBS ÉçÇø r)x%mfM!N%}o [n
       33.7. ¸÷ÖÖС¼¼ÇÉ
? F7`v c0       33.8. °²È«»°ÌâľîìУ԰ BBS ÉçÇø@?,El,F&{
ľîìУ԰ BBS ÉçÇø l8H)|C,K
           33.8.1.    ±»¸ÐȾµÄ½Å±¾
Dn0z7m#Q,Q ] N#s I0           33.8.2. Òþ²ØShell½Å±¾Ô´Âë
C&h,b%r0T8aW"q/h0ľîìУ԰ BBS ÉçÇø;I2Q1q0s+`_(R
       33.9. ÒÆÖ²»°Ìâ
6_M,b!_8b7fX0       33.10. ÔÚWindowsϽøÐÐShell±à³Ì
%M-^(UiMp!x0ľîìУ԰ BBS ÉçÇø u:iL&{ V\
   34. Bash, °æ±¾ 2 ºÍ 3
0c1s-x,c1w.q&z0
:l.Q,jHDM$D;p0       34.1. Bash, °æ±¾2
4h$~NG!m$s)H0       34.2. Bash, °æ±¾3
w5B;{VK2e*@ w0
%M%?AcA7mtS035. ºó¼ÇľîìУ԰ BBS ÉçÇøk'lJN kM

)J,C%IYpDa-DD0   35.1. ×÷Õߺó¼Ç
-y[/M om0   35.2. ¹ØÓÚ×÷ÕßľîìУ԰ BBS ÉçÇø;f5w F+]:NbG)}5H T D
   35.3. ÄÄÀï¿ÉÒÔÈ¡µÃ°ïÖú?ľîìУ԰ BBS ÉçÇøb)Tr&w5q!RE$q h
   35.4. ÖÆ×÷Õâ±¾ÊéµÄ¹¤¾ßľîìУ԰ BBS ÉçÇø;Zhm+~(R9K)_i
ľîìУ԰ BBS ÉçÇø;X%Q Z LN+y0x
       35.4.1. Ó²¼þľîìУ԰ BBS ÉçÇøz0t @EV0fs}8p
       35.4.2. Èí¼þºÍÅŰæÈí¼þ
ga]_ Eb0ľîìУ԰ BBS ÉçÇøIM?N8R,wG?V
   35.5. CreditsľîìУ԰ BBS ÉçÇø y `$~j-Z c)WbZ|O

Vt6L7~l?0Bibliography
0c~R-} L7eDl0A. Contributed ScriptsľîìУ԰ BBS ÉçÇø uoR8Y;Kn4?
B. Reference Cards
PeuO!p0C. A Sed and Awk Micro-PrimerľîìУ԰ BBS ÉçÇø1~6b5R XX^2J1Da

!V+u9b5Xh5tV L:Q"iX)p0   C.1. SedľîìУ԰ BBS ÉçÇø!F*} r-JlH N,} E$_,^
   C.2. Awk
T3d M |H5{h)Jsx0
E&C|_ fT8E ROA0D. Exit Codes With Special Meanings
Q9p\&L"wd*u$pG6@0E. A Detailed Introduction to I/O and I/O Redirection
L+hk2\u qr3K:Z0F. Standard Command-Line Options
a!G.A|`G!_ U:y0u,x0G. Important Files
Q:k\`ke hd0H. Important System DirectoriesľîìУ԰ BBS ÉçÇøtT9z#b,u)y
I. Localization
3VH*D O%I3E2X0J. History CommandsľîìУ԰ BBS ÉçÇø-Bf9d*n}A T(v};T
K. A Sample .bashrc FileľîìУ԰ BBS ÉçÇøET jgD,Sp~
L. Converting DOS Batch Files to Shell ScriptsľîìУ԰ BBS ÉçÇø"b J1?"BS4K*e(nt%c4R;P
M. Exercises
^OT#A-\8l-NL;b7c0ľîìУ԰ BBS ÉçÇø u-y@8eCW1u"p4Z8y
   M.1. Analyzing ScriptsľîìУ԰ BBS ÉçÇødj9d%r Wy6_\G
   M.2. Writing Scripts
DQe2r J0ľîìУ԰ BBS ÉçÇøV#F.p9KU H-Wd"e[
N. Revision HistoryľîìУ԰ BBS ÉçÇø/N2EP5H Q"umB
O. Mirror SitesľîìУ԰ BBS ÉçÇø$P|e&qR9U6l
P. To Do ListľîìУ԰ BBS ÉçÇø:KfK,}4J(_
Q. Copyright
-TCz6^ SA)m0ľîìУ԰ BBS ÉçÇø$DXxLC1iw"KI
±í¸ñÇåµ¥:
~"kz*jd&m0
;|(F:c d EBw5\?011-1. ×÷Òµ±êʶ·ûľîìУ԰ BBS ÉçÇø3ea$L V9`9O o
30-1. Bash Ñ¡Ïî
#b0ZU _,at|E}?033-1. תÒåÐòÁÐÖÐÊýÖµºÍ²ÊÉ«µÄ¶ÔӦľîìУ԰ BBS ÉçÇø(j,\8k+^`}:]
B-1. Special Shell VariablesľîìУ԰ BBS ÉçÇø3H(vjS8_n ^
B-2. TEST Operators: Binary ComparisonľîìУ԰ BBS ÉçÇø'{Vl+al/N
B-3. TEST Operators: Files
2n2{? k4?Xr0B-4. Parameter Substitution and Expansion
VoQE'bi5B,c+Jb+C0B-5. String OperationsľîìУ԰ BBS ÉçÇø,^h5{'nRsY
B-6. Miscellaneous Constructs
$Hs9x$`Kn0C-1. Basic sed operatorsľîìУ԰ BBS ÉçÇø$x){Mz"v s
C-2. Examples of sed operatorsľîìУ԰ BBS ÉçÇø,d1DqH&_]_5N
D-1. "Reserved" Exit Codes
_M2Il/n;HO0L-1. Batch file keywords / variables / operators, and their shell equivalents
};S a EP3l0L-2. DOS commands and their UNIX equivalents
v'n[:h"W2? nv t y0N-1. Revision History
^$_GWiOjf0ľîìУ԰ BBS ÉçÇø1RyNw&X6wj+g2L
Àý×ÓÇåµ¥:ľîìУ԰ BBS ÉçÇø'A7Q6CGOy!AEZ

*}1GYMv7}x8Wy02-1. Çå³ý:Çå³ý/var/logϵÄlogÎļþľîìУ԰ BBS ÉçÇøV@I.Q.U*`u)T)Q
2-2. Çå³ý:Ò»¸ö¸ÄÁ¼µÄÇå³ý½Å±¾
7Eq2LBW?(~02-3. cleanup:Ò»¸öÔöÇ¿µÄºÍ¹ãÒåµÄɾ³ýlogfileµÄ½Å±¾Ä¾îìУ԰ BBS ÉçÇø.ja6t~ o:V6v^
3-1. ´úÂë¿éºÍI/OÖØ¶¨Ïò
3}/?MM0jp2V9h/Z03-2. ½«Ò»¸ö´úÂë¿éµÄ½á¹û±£´æµ½ÎļþľîìУ԰ BBS ÉçÇø&x"w}%HWv }
3-3. ÔÚºǫ́ÔËÐÐÒ»¸öÑ­»·
4CW;z:OOI%}*^03-4. ±¸·Ý×îºóÒ»ÌìËùÓÐÐ޸ĵÄÎļþ.
]RnUJ:fCk04-1. ±äÁ¿¸³ÖµºÍÌæ»»
^s T"U D04-2. Ò»°ãµÄ±äÁ¿¸³ÖµÄ¾îìУ԰ BBS ÉçÇø!B2zJj)j W.@lh w
4-3. ±äÁ¿¸³Öµ,Ò»°ãµÄºÍ±È½ÏÌØÊâµÄ
[8gI0Ii_1|z%s2H04-4. ÕûÐÍ»¹ÊÇstring?ľîìУ԰ BBS ÉçÇø @E3v4[O;Dn
4-5. λÖòÎÊýľîìУ԰ BBS ÉçÇø?V#gcBKsy&?
4-6. wh,whois½ÚµãÃû×Ö²éѯ
.Y7^LrOG#e$q04-7. ʹÓÃshift
!U(Jd(|E!bg05-1. echoһЩ¹îÒìµÄ±äÁ¿
*Uq\4mp0mGqJ;K05-2. תÒå·û
#OP9aJA7sD7Ac06-1. exit/exit״̬
e9Le([3gG06-2. ·ñ¶¨Ò»¸öÌõ¼þʹÓÃ!ľîìУ԰ BBS ÉçÇøP Zpmdk-}qC
7-1. ʲôÇé¿öÏÂÎªÕæ?
b J*sbz1g07-2. ¼¸¸öµÈЧÃüÁîtest,/usr/bin/test,[],ºÍ/usr/bin/[
C{b0}ioomi07-3. ËãÊý²âÊÔʹÓÃ(( ))ľîìУ԰ BBS ÉçÇøggxg6v
7-4. testËÀµÄÁ´½ÓÎļþ
"@e3E1BQ z07-5. Êý×ÖºÍ×Ö·û´®±È½ÏľîìУ԰ BBS ÉçÇø9M)O-R ClN$I`
7-6. ²âÊÔ×Ö·û´®ÊÇ·ñΪnullľîìУ԰ BBS ÉçÇø8G~zRPWMf3F
7-7. zmoreľîìУ԰ BBS ÉçÇø"\#grU+AP$CDD
8-1. ×î´ó¹«Ô¼Êý
0]b}d\(^t a08-2. ʹÓÃËãÊõ²Ù×÷·ûľîìУ԰ BBS ÉçÇø*M+s9t%WI/Hzcho
8-3. ʹÓÃ&&ºÍ||½øÐлìºÏ״̬µÄtestľîìУ԰ BBS ÉçÇøS n E.H^d t iK
8-4. Êý×Ö³£Á¿µÄ´¦Àí
)h~bb(rJC#b09-1. $IFSºÍ¿Õ°×ľîìУ԰ BBS ÉçÇø eL ap/A)n6\,h Xo
9-2. ʱ¼äÊäÈë
m-m#~u*z)y!pR3~L09-3. ÔÙÀ´Ò»¸öʱ¼äÊäÈëľîìУ԰ BBS ÉçÇø/X ? }[@?
9-4. Timed readľîìУ԰ BBS ÉçÇø kh+l2Hl7`
9-5. ÎÒÊÇroot?ľîìУ԰ BBS ÉçÇø9[[;pBlllKN
9-6. arglist:ͨ¹ý$*ºÍ$@ÁгöËùÓеIJÎÊýľîìУ԰ BBS ÉçÇø%H$Kd`&}$o
9-7. ²»Ò»ÖµÄ$*ºÍ$@ÐÐΪľîìУ԰ BBS ÉçÇø3Cj8i4lK'\8|R
9-8. µ±$IFSΪ¿ÕʱµÄ$*ºÍ$@
(p*f/i$Ba8I&Z$n*}!a09-9. Ï»®Ïß±äÁ¿Ä¾îìУ԰ BBS ÉçÇø$m#qq(RTun5P,do
9-10. ÔÚÒ»¸öÎı¾ÎļþµÄ¶Î¼ä²åÈë¿ÕÐÐľîìУ԰ BBS ÉçÇøjJYJ `VQ#qr
9-11. ÀûÓÃÐÞ¸ÄÎļþÃû,À´×ª»»Í¼Æ¬¸ñʽľîìУ԰ BBS ÉçÇø D-TwleW-p2WWF
9-12. Ä£·ÂgetoptÃüÁî
e%z2C%d)EvxU c09-13. ÌáÈ¡×Ö·û´®µÄÒ»ÖÖ¿ÉÑ¡µÄ·½·¨Ä¾îìУ԰ BBS ÉçÇø R2^Y@-ezE
9-14. ʹÓòÎÊýÌæ»»ºÍerror messagesľîìУ԰ BBS ÉçÇø{^ji [G7?
9-15. ²ÎÊýÌæ»»ºÍ"usage"messages
*{@MPrCo8qF09-16. ±äÁ¿³¤¶ÈľîìУ԰ BBS ÉçÇøS5P9zT2g,N3v]_ jq
9-17. ²ÎÊýÌæ»»ÖеÄģʽƥÅäľîìУ԰ BBS ÉçÇø7s:AR&y%NH
9-18. ÖØÃüÃûÎļþÀ©Õ¹ÃûľîìУ԰ BBS ÉçÇø!qMV9T,G)[Ow@[
9-19. ʹÓÃģʽƥÅäÀ´·ÖÎö±È½ÏÌØÊâµÄ×Ö·û´®Ä¾îìУ԰ BBS ÉçÇøei^w$L |k o
9-20. ¶Ô×Ö·û´®µÄǰ׺»òºó׺ʹÓÃÆ¥Åäģʽ
uPvUn1Zq;k09-21. ʹÓÃdeclareÀ´Ö¸¶¨±äÁ¿µÄÀàÐÍľîìУ԰ BBS ÉçÇø n?M%gFJZI
9-22. ¼ä½ÓÒýÓÃ
1Jk W^7Ya+Kq1KW09-23. ´«µÝÒ»¸ö¼ä½ÓÒýÓøøawkľîìУ԰ BBS ÉçÇøT/{f'fGip;B$kd
9-24. ²úÉúËæ»úÊýľîìУ԰ BBS ÉçÇø7^%i u X q3X ~+?
9-25. ´ÓÒ»¸±ÆË¿ËÅÆÖÐÈ¡³öÒ»ÕÅËæ»úµÄůľîìУ԰ BBS ÉçÇø/R/Rr8Q} l\;cV
9-26. Á½¸öÖ¸¶¨ÖµÖ®¼äµÄËæ»úÊý
+gc6o u#O!y[ ]09-27. ʹÓÃËæ»úÊýÀ´Ò¡Ò»¸ö÷»×Ó
/Qj$M%YS5M;Hw0N@09-28. ÖØÐ·ÖÅäËæ»úÊýÖÖ×Ó
&dMJX(s"y:I!V2p09-29. ʹÓÃawk²úÉúÎ±Ëæ»úÊýľîìУ԰ BBS ÉçÇø5zzK*V@Ro[$eV
9-30. C·ç¸ñµÄ±äÁ¿´¦Àí
f!iS{3]t&R c9y010-1. Ñ­»·µÄÒ»¸ö¼òµ¥Àý×Ó
_#|,Q w)uJ#UTL6I010-2. ÿ¸ö[list]ÔªËØ´øÁ½¸ö²ÎÊýµÄforÑ­»·
+V"AK"b.jb010-3. ÎļþÐÅÏ¢:¶Ô°üº¬ÔÚ±äÁ¿ÖеÄÎļþÁÐ±í½øÐвÙ×÷
'} W[@Fu010-4. ÔÚforÑ­»·ÖвÙ×÷ÎļþľîìУ԰ BBS ÉçÇø[ pz5~U \Q:N
10-5. ÔÚforÑ­»·ÖÐÊ¡ÂÔ[list]
w'}Y*N%g:u010-6. ʹÓÃÃüÁîÌæ»»À´²úÉúforÑ­»·µÄ[list]ľîìУ԰ BBS ÉçÇø4b-rk R:C
10-7. ¶ÔÓÚ¶þ½øÖÆÎļþµÄÒ»¸ögrepÌæ»»
U@~MzA}3ZA010-8. ÁгöϵͳÉϵÄËùÓÐÓû§
%P5umwPl}@010-9. ÔÚĿ¼µÄËùÓÐÎļþÖвéÕÒÔ´×Ö´®Ä¾îìУ԰ BBS ÉçÇøOxS})O z$?
10-10. ÁгöĿ¼ÖÐËùÓеķûºÅÁ¬½ÓÎļþľîìУ԰ BBS ÉçÇør&RDqT [1YRx@
10-11. ½«Ä¿Â¼ÖеķûºÅÁ¬½ÓÎļþÃû±£´æµ½Ò»¸öÎļþÖÐ
,E4x@0`iH*_9[010-12. Ò»¸öC·ç¸ñµÄforÑ­»·Ä¾îìУ԰ BBS ÉçÇø wYH1gpV]
10-13. ÔÚbatch modeÖÐʹÓÃefax
Of3e R&}f%Dx010-14. ¼òµ¥µÄwhileÑ­»·
*E_D/yu$X'C2]j/K010-15. ÁíÒ»¸öwhileÑ­»·
s2^ f%h/{@010-16. ¶àÌõ¼þµÄwhileÑ­»·Ä¾îìУ԰ BBS ÉçÇø J%S ZV$N'VN`0nW}
10-17. C·ç¸ñµÄwhileÑ­»·
S:w@ J8y%v.Dxe010-18. untilÑ­»·
7a9s/^\*UW${'I010-19. ǶÌ×Ñ­»·
|Rc_H010-20. breakºÍcontinueÃüÁîÔÚÑ­»·ÖеÄЧ¹ûľîìУ԰ BBS ÉçÇøe@5d nE
10-21. ¶à²ãÑ­»·µÄÍ˳ö
W%n#\W+x"@!~#B010-22. ¶à²ãÑ­»·µÄcontinue
r!Ue*b BS.KZ0S010-23. ÔÚʵ¼ÊµÄÈÎÎñÖÐʹÓÃ"continue N"
"Y7[(\ osZ010-24. ʹÓÃcaseľîìУ԰ BBS ÉçÇø S;W/Na4kk3X
10-25. ʹÓÃcaseÀ´´´½¨²Ëµ¥Ä¾îìУ԰ BBS ÉçÇø[S;E^}5s ?-}
10-26. ʹÓÃÃüÁîÌæ»»À´²úÉúcase±äÁ¿Ä¾îìУ԰ BBS ÉçÇøZ`!R5m1y)JaG
10-27. ¼òµ¥×Ö·û´®Æ¥ÅäľîìУ԰ BBS ÉçÇø1NlV)k;y Se1p
10-28. ¼ì²éÊÇ·ñÊÇ×ÖĸÊäÈëľîìУ԰ BBS ÉçÇø^F,Bu S0xJ
10-29. ÓÃselectÀ´´´½¨²Ëµ¥
4j ~_;B0Fs0E;x010-30. Óú¯ÊýÖÐselect½á¹¹À´´´½¨²Ëµ¥Ä¾îìУ԰ BBS ÉçÇø;[:WwK4R}~
11-1. Ò»¸öfork³ö¶à¸ö×Ô¼ºÊµÀýµÄ½Å±¾
!e/N u7?b1d6xn011-2. printfľîìУ԰ BBS ÉçÇøhX"^xeapjkm
11-3. ʹÓÃread,±äÁ¿·ÖÅä
q7H{yyj1T011-4. µ±Ê¹ÓÃÒ»¸ö²»´ø±äÁ¿²ÎÊýµÄreadÃüÁîʱ,½«»á·¢Éúʲô?
T ~ P$N O011-5. readÃüÁîµÄ¶àÐÐÊäÈëľîìУ԰ BBS ÉçÇø(L*u#G5Vn {Z&{)J
11-6. ¼ì²â·½Ïò¼ü
:g @+E,Ud*y$e8l011-7. ͨ¹ýÎļþÖØ¶¨ÏòÀ´Ê¹ÓÃreadľîìУ԰ BBS ÉçÇøh_8aC:{[B/Q8|
11-8. ¹ÜµÀÊä³öµ½readÖеÄÎÊÌâ
y1Z(h ltE011-9. Ð޸ĵ±Ç°µÄ¹¤×÷Ŀ¼ľîìУ԰ BBS ÉçÇø1jt7Qc'eI
11-10. ÓÃ"let"ÃüÁîÀ´×÷ËãÊõ²Ù×÷.ľîìУ԰ BBS ÉçÇøk4^BHBU
11-11. ÏÔʾevalÃüÁîµÄЧ¹û
.sO j i"\9p]f011-12. Ç¿ÖÆµÇ³ö(log-off)ľîìУ԰ BBS ÉçÇø_%{%hU.hl&VM/]
11-13. ÁíÒ»¸ö"rot13"µÄ°æ±¾
ifa {E+\C011-14. ÔÚPerl½Å±¾ÖÐʹÓÃevalÃüÁîÀ´Ç¿ÖƱäÁ¿Ì滻ľîìУ԰ BBS ÉçÇø ^[9V0@&SC;Zj
11-15. ʹÓÃsetÀ´¸Ä±ä½Å±¾µÄλÖòÎÊýľîìУ԰ BBS ÉçÇø^Z ` X.Tr)@
11-16. ÖØÐ·ÖÅäλÖòÎÊý
v9b x;mv3e%n O011-17. UnsetÒ»¸ö±äÁ¿
x%Ber2{7B&t011-18. ʹÓÃexportÃüÁî´«µÝÒ»¸ö±äÁ¿µ½Ò»¸öÄÚǶawkµÄ½Å±¾ÖÐ
J3d/FM O{2qULL N2_,]7{011-19. ʹÓÃgetoptsÃüÁîÀ´¶ÁÈ¡´«µÝ¸ø½Å±¾µÄÑ¡Ïî/²ÎÊý.ľîìУ԰ BBS ÉçÇø~t7?7X2q
11-20. "Including"Ò»¸öÊý¾ÝÎļþ
.U4?9j}5N T_011-21. Ò»¸öûʲôÓõÄ,source×ÔÉíµÄ½Å±¾
g$\#D;[f(K$? |0p011-22. execµÄЧ¹û
ye aK:TdE4F011-23. Ò»¸öexec×ÔÉíµÄ½Å±¾Ä¾îìУ԰ BBS ÉçÇøT*C1C GsD)@ p.H$c\
11-24. ÔÚ¼ÌÐø´¦Àí֮ǰ,µÈ´ýÒ»¸ö½ø³ÌµÄ½áÊø
$GQ/I%E)aS011-25. Ò»¸ö½áÊø×ÔÉíµÄ½Å±¾.
]3bu&s&m]k012-1. ʹÓÃlsÃüÁîÀ´´´½¨Ò»¸öÉÕ¼CDRµÄÄÚÈÝÁбíľîìУ԰ BBS ÉçÇøFo/[Z3b*j\$B7dW
12-2. Hello or Good-bye
8B Sf TF0x'|(L'W4P012-3. ɾ³ýµ±Ç°Ä¿Â¼ÏÂÎļþÃûÖаüº¬Ò»Ð©ÌØÊâ×Ö·û(°üÀ¨¿Õ°×)µÄÎļþ..
&R(N'A2Un7aT,n(n012-4. ͨ¹ýÎļþµÄ inode ºÅÀ´É¾³ýÎļþľîìУ԰ BBS ÉçÇø X Bvj6r
12-5. Logfile: ʹÓà xargs À´¼à¿ØÏµÍ³ logľîìУ԰ BBS ÉçÇø+S i8@w6c#i
12-6. °Ñµ±Ç°Ä¿Â¼ÏµÄÎļþ¿½±´µ½ÁíÒ»¸öÎļþÖÐ
Tcx^Ee012-7. ͨ¹ýÃû×ÖKill½ø³Ì
2{ di[*YZ8a:R"iN `012-8. ʹÓÃxargs·ÖÎöµ¥´Ê³öÏֵįµÂÊ
m!UkSH S012-9. ʹÓà expr
C+xwdF2j2QO2V4v012-10. ʹÓà date ÃüÁî
L*_$hrJ-Us,?012-11. ·ÖÎöµ¥´Ê³öÏֵįµÂÊľîìУ԰ BBS ÉçÇø `e#w&{_aq;k
12-12. ÄǸöÎļþÊǽű¾?ľîìУ԰ BBS ÉçÇøLd#M0U6k2QT#v
12-13. ²úÉú10½øÖÆËæ»úÊýľîìУ԰ BBS ÉçÇøE:bgq&`\T@u
12-14. ʹÓà tail ÃüÁîÀ´¼à¿ØÏµÍ³log
o7PGb-N`4[012-15. ÔÚÒ»¸ö½Å±¾ÖÐÄ£·Â "grep" µÄÐÐΪ
8c} YHKf012-16. ÔÚ1913ÄêµÄΤÊϴʵäÖвéÕÒ¶¨Òå
Zq;ioe F9X A012-17. ¼ì²éÁбíÖе¥´ÊµÄÕýÈ·ÐÔ
^9AVR"|w7|012-18. ת»»´óд: °ÑÒ»¸öÎļþµÄÄÚÈÝÈ«²¿×ª»»Îª´óд.
_ pP Yd+G'`012-19. ת»»Ð¡Ð´: ½«µ±Ç°Ä¿Â¼ÏµÄËùÓÐÎÄÈ«²¿×ª»»ÎªÐ¡Ð´.
"|3H1pf8T4A `Io0z012-20. Du: DOS µ½ UNIX Îı¾ÎļþµÄת»».ľîìУ԰ BBS ÉçÇøt9a:N3bf F*`
12-21. rot13: rot13, ÈõÖǼÓÃÜ.ľîìУ԰ BBS ÉçÇø }N(XY-y(_o
12-22. Generating "Crypto-Quote" PuzzlesľîìУ԰ BBS ÉçÇø"Z;v"]oD3~
12-23. ¸ñʽ»¯ÎļþÁбí.ľîìУ԰ BBS ÉçÇørb'nrr!bK#L
12-24. ʹÓà column À´¸ñʽ»¯Ä¿Â¼ÁбíľîìУ԰ BBS ÉçÇøx9|c;n/H2Np${h
12-25. nl: Ò»¸ö×Ô¼º¼ÆËãÐкŵĽű¾.ľîìУ԰ BBS ÉçÇøs1G#] `1~8nP2Q8O
12-26. manview: ²é¿´¸ñʽ»¯µÄmanÒ³
&n%l1z7`(Px_#C012-27. ʹÓà cpio À´¿½±´Ò»¸öĿ¼Ê÷
1qA:_ [CL7^r0C012-28. ½â°üÒ»¸ö rpm ¹éµµÎļþľîìУ԰ BBS ÉçÇø Y6N F1V$^ iH$F%^7L Z
12-29. ´Ó C ÎļþÖÐÈ¥µô×¢ÊÍ
EMW5pP+M012-30. Exploring /usr/X11R6/binľîìУ԰ BBS ÉçÇø3Ij5a)hbm
12-31. Ò»¸ö"¸Ä½ø¹ý"µÄ strings  ÃüÁî
K9b*wQW@4l012-32. ÔÚÒ»¸ö½Å±¾ÖÐʹÓà cmp À´±È½Ï2¸öÎļþ.
ND)ykX0j012-33. basename ºÍ dirname
-l-I1`yW012-34. ¼ì²éÎļþÍêÕûÐÔľîìУ԰ BBS ÉçÇøs up:kT#[k E Z&Q
12-35. Uudecod ±àÂëºóµÄÎļþ
_J*`+g(zom*X1U _M012-36. ²éÕÒÀÄÓõÄÁ¬½ÓÀ´±¨¸æÀ¬»øÓʼþ·¢ËÍÕß
~I.E*a3UP ^B0`012-37. ·ÖÎöÒ»¸öÀ¬»øÓʼþÓòľîìУ԰ BBS ÉçÇø$dRqd)W/K| W
12-38. »ñµÃÒ»·Ý¹ÉƱ±¨¼Û
x-T.r-N*A;i012-39. ¸üРFedora Core 4ľîìУ԰ BBS ÉçÇøtUf L5J+Kkz l
12-40. ʹÓà sshľîìУ԰ BBS ÉçÇø3m{+Y3hk)i8c+m
12-41. Ò»¸ö¿ÉÒÔmail×Ô¼ºµÄ½Å±¾Ä¾îìУ԰ BBS ÉçÇøSK2w9dc |U S
12-42. °´Ô³¥»¹´û¿î
eCU ]y012-43. ÊýÖÆ×ª»»Ä¾îìУ԰ BBS ÉçÇø/T`L7Nxeh4P/e
12-44. ʹÓà "here document" À´µ÷Óà bcľîìУ԰ BBS ÉçÇøx6HoU-b:~ ^
12-45. ¼ÆËãÔ²ÖÜÂÊ
D,V0EH v8q,yc5G012-46. ½«10½øÖÆÊý×Öת»»Îª16½øÖÆÊý×ÖľîìУ԰ BBS ÉçÇø%Y%?|(`,K$tg;@8M
12-47. Òò×Ó·Ö½â
R`U5C^:~9q@012-48. ¼ÆËãÖ±½ÇÈý½ÇÐεÄб±ß
6D0oS'Rdy']mf012-49. ʹÓà seq À´²úÉúÑ­»·²ÎÊý
(p{!B$[t m012-50. ×Öĸͳ¼Æ
'Ct![9bu_wH012-51. ʹÓÃgetoptÀ´·ÖÎöÃüÁîÐÐÑ¡Ïî
X2TB1w&IC$?2d!z012-52. Ò»¸ö¿½±´×ÔÉíµÄ½Å±¾
o0i#|0|(|h k012-53. Á·Ï°ddľîìУ԰ BBS ÉçÇøFjP)x"R1a
12-54. ¼Ç¼°´¼ü
xbjAk012-55. °²È«µÄɾ³ýÒ»¸öÎļþľîìУ԰ BBS ÉçÇø!Py4@ ~ ~:LL
12-56. ÎļþÃû²úÉúÆ÷
:I&@_|+Wb z A-f*P012-57. ½«Ã×ת»»ÎªÓ¢ÀïľîìУ԰ BBS ÉçÇø ?;G#^L+a}AG
12-58. ʹÓà m4
3\+g{D!xt7A R}013-1. ÉèÖÃÒ»¸öÐÂÃÜÂë
Nw,eU$R013-2. ÉèÖÃÒ»¸ö²Á³ý×Ö·ûľîìУ԰ BBS ÉçÇøI(gkmEk&D J9I7o
13-3. ¹ØµôÖն˶ÔÓÚÃÜÂëµÄecho
Y{} eMm n013-4. °´¼ü¼ì²â
&fU)W^}"d013-5. Checking a remote server for identdľîìУ԰ BBS ÉçÇø1Y V1B)J&o#A-`i
13-6. pidof °ïÖúɱµôÒ»¸ö½ø³Ì
-pz?2AMc,@o-E013-7. ¼ì²éÒ»¸öCD¾µÏñ
$Bk7Lc9j,Q5Y(~r013-8. ÔÚÒ»¸öÎļþÖд´½¨Îļþϵͳ
2b']id;k#l013-9. Ìí¼ÓÒ»¸öеÄÓ²ÅÌÇý¶¯Æ÷ľîìУ԰ BBS ÉçÇø.\!j$y"t7hP xRhW
13-10. ʹÓÃumaskÀ´½«Êä³öÎļþÒþ²ØÆðÀ´
o Z0zH4N7k S"LF;i013-11. killall, À´×ÔÓÚ /etc/rc.d/init.d
+Gkej[;R014-1. ÓÞ´ÀµÄ½Å±¾²ßÂÔľîìУ԰ BBS ÉçÇøZIv~H0\
14-2. ´ÓÑ­»·µÄÊä³öÖвúÉúÒ»¸ö±äÁ¿
O)KFS8D014-3. ÕÒanagram(»ØÎĹ¹´Ê·¨, ¿ÉÒÔ½«Ò»¸öÓÐÒâÒåµÄµ¥´Ê, ±ä»»Îª1¸ö»ò¶à¸öÓÐÒâÒåµÄµ¥´Ê, µ«ÊÇ»¹ÊÇÔ­À´µÄ×Óĸ¼¯ºÏ)
/[}?b _@ s016-1. ʹÓÃexecÖØ¶¨Ïò±ê×¼ÊäÈë
4YWxC:tz#u9U fJ016-2. ʹÓÃexecÀ´Öض¨Ïòstdout
;_/`R0jq*X016-3. ʹÓÃexecÔÚͬһ½Å±¾ÖÐÖØ¶¨ÏòstdinºÍstdout
2U2{.z~c016-4. ±ÜÃâ×Óshell
Z's*I6J[C016-5. whileÑ­»·µÄÖØ¶¨ÏòľîìУ԰ BBS ÉçÇøu.n,A6@r9{
16-6. ÁíÒ»ÖÖwhileÑ­»·µÄÖØ¶¨Ïò
8]@K0Ne^b5B016-7. untilÑ­»·Öض¨ÏòľîìУ԰ BBS ÉçÇø0z1qq b+Q hKd S8[&Uj(_
16-8. forÑ­»·Öض¨ÏòľîìУ԰ BBS ÉçÇø0p6D G EAFB [{
16-9. forÑ­»·Öض¨Ïò loop (½«±ê×¼ÊäÈëºÍ±ê×¼Êä³ö¶¼Öض¨ÏòÁË)
vN8Dy.n.f.M016-10. ÖØ¶¨Ïòif/then²âÊԽṹ
ZtI`b?L6?016-11. ÓÃÓÚÉÏÃæÀý×ÓµÄ"names.data"Êý¾ÝÎļþ
a Y.v{'N6Z4K016-12. ¼Ç¼ÈÕ־ʼþľîìУ԰ BBS ÉçÇøl/S3|h7bd4x+[
17-1. ¹ã²¥: ·¢ËÍÏûÏ¢¸øÃ¿¸öµÇ¼ÉϵÄÓû§
8E-g-n{ cy*@%P#wW/P3Q017-2. ·ÂÔìÎļþ: ´´½¨Ò»¸öÁ½ÐеķÂÔìÎļþľîìУ԰ BBS ÉçÇøj'lx(F)xe-e8Um
17-3. ʹÓÃcatµÄ¶àÐÐÏûÏ¢
4M.L#^.p.fw017-4. ´øÓÐÒÖÖÆtab¹¦ÄܵĶàÐÐÏûÏ¢
Ia P.^K4GC,Iw?017-5. ʹÓòÎÊýÌæ»»µÄhere documentľîìУ԰ BBS ÉçÇøW(V|7[ B2W S3~ L
17-6. ÉÏ´«Ò»¸öÎļþ¶Ôµ½"Sunsite"µÄincomingĿ¼
*Z~q(P3O;T:xi U7{017-7. ¹Ø±Õ²ÎÊýÌæ»»
&o]|K { v7H017-8. Ò»¸ö²úÉúÁíÍâÒ»¸ö½Å±¾µÄ½Å±¾Ä¾îìУ԰ BBS ÉçÇø}wD_z:I
17-9. Here documentsÓ뺯Êý
:qIt2\y017-10. "ÄäÃû" here DocumentľîìУ԰ BBS ÉçÇøuW H{P k!d+`h
17-11. ×¢Ê͵ôÒ»¶Î´úÂë¿é
vFc-QA017-12. Ò»¸ö×ÔÎĵµ»¯(self-documenting)µÄ½Å±¾
R y*e)l6K7K017-13. ÔÚÒ»¸öÎļþµÄ¿ªÍ·Ìí¼ÓÎı¾
-Z\v%i4Z*s020-1. ×ÓshellÖеıäÁ¿×÷ÓÃÓòľîìУ԰ BBS ÉçÇø(I3R\Qbo:~y
20-2. ÁгöÓû§µÄÅäÖÃÎļþ
A}&Qo+tjtR O+b6O@020-3. ÔÚ×ÓshellÀï½øÐд®Ðд¦ÀíľîìУ԰ BBS ÉçÇøq S+sisJt
21-1. ÔÚÊÜÏÞµÄÇé¿öÏÂÔËÐнű¾Ä¾îìУ԰ BBS ÉçÇø a9\U7p1[F.R2@
23-1. ¼òµ¥º¯Êý
"W3p:H/hYf|023-2. ´ø×ŲÎÊýµÄº¯Êý
\ tp#IP'wX023-3. º¯ÊýºÍ±»´«¸ø½Å±¾µÄÃüÁîÐвÎÊý
1^.IT:Q ]Pu:A023-4. ´«µÝ¼ä½ÓÒýÓøøº¯ÊýľîìУ԰ BBS ÉçÇø M G?%@/F3\nc,[]Y
23-5. ½â³ý´«µÝ¸øº¯ÊýµÄ²ÎÊýÒýÓÃ
OlI'@w?2s J9iO023-6. Ôٴγ¢ÊÔ½â³ý´«µÝ¸øº¯ÊýµÄ²ÎÊýÒýÓÃľîìУ԰ BBS ÉçÇøQ*s Walw$ri7B%E
23-7. Á½¸öÊýÖеÄ×î´óÕßľîìУ԰ BBS ÉçÇø6Qc%xusJ;Z~nn
23-8. °ÑÊý×Öת»¯³ÉÂÞÂíÊý×ÖľîìУ԰ BBS ÉçÇø,pM$?R8Y'e'K3Fn
23-9. ²âÊÔº¯Êý×î´óµÄ·µ»ØÖµÄ¾îìУ԰ BBS ÉçÇøB)f qZ,]u
23-10. ±È½ÏÁ½¸ö´óÕûÊýľîìУ԰ BBS ÉçÇø wN}y.L/W
23-11. Óû§ÃûµÄÕæÊµÃûľîìУ԰ BBS ÉçÇøa@ }!g4R;n$W)h
23-12. ¾Ö²¿±äÁ¿µÄ¿É¼û·¶Î§
E)?V3zh&U)qAj"t023-13. Óþֲ¿±äÁ¿À´µÝ¹éľîìУ԰ BBS ÉçÇøjXw e W:f7r|
23-14. ººÅµËþ
i1}G4x,S2XWz024-1. ½Å±¾ÖеıðÃû
z$? fRTQ024-2. unalias: ÉèÖúÍɾ³ý±ðÃû
2UjN[L025-1. ʹÓÃ"ÓëÁбí(and list)"À´²âÊÔÃüÁîÐвÎÊýľîìУ԰ BBS ÉçÇø%N:Z~-Wi7U+n*|
25-2. ÓÃ"ÓëÁбí"µÄÁíÒ»¸öÃüÁîÐвÎÊý²âÊÔ
LBN-m%n"|}CL:uA025-3. "»òÁбí"ºÍ"ÓëÁбí"µÄ½áºÏʹÓÃ
OG^-N'`7k026-1. ¼òµ¥µÄÊý×éÓ÷¨
0w;l[:ldL;]026-2. ¸ñʽ»¯Ò»Ê×Ê«
YLKZ9H&P026-3. ¶àÖÖÊý×é²Ù×÷ľîìУ԰ BBS ÉçÇøAV%g*_g/Fu9Q
26-4. ÓÃÓÚÊý×éµÄ×Ö·û´®²Ù×÷·ûľîìУ԰ BBS ÉçÇø_*~ F x'?fK ~
26-5. ½«½Å±¾µÄÄÚÈÝ´«¸øÊý×éľîìУ԰ BBS ÉçÇø8i#| ?[4`'H
26-6. һЩÊý×éרÓõŤ¾ßľîìУ԰ BBS ÉçÇøqZiF _RwbxnA"l
26-7. ¹ØÓÚ¿ÕÊý×éºÍ¿ÕÊý×éÔªËØ
wpKxpH026-8. ³õʼ»¯Êý×éľîìУ԰ BBS ÉçÇø hB8G g;z7VA
26-9. ¸´ÖƺÍÁ¬½ÓÊý×éľîìУ԰ BBS ÉçÇøQY C@;tZK
26-10. ¹ØÓÚÁ¬½ÓÊý×éµÄ¸ü¶àÐÅϢľîìУ԰ BBS ÉçÇø'U4Rl3^6q#q k
26-11. һλÀÏÅóÓÑ: ðÅÝÅÅÐò
"e RjA d026-12. ÄÚǶÊý×éºÍ¼ä½ÓÒýÓÃľîìУ԰ BBS ÉçÇø i%_J8h^ j h
26-13. ¸´ÔÓÊý×éÓ¦ÓÃ: °£À­ÍÐÉ«ÄáËØÊýɸ×Ó
{#w,L8yW*X#x"p y'}026-14. Ä£ÄâÏÂÍÆµÄ¶ÑջľîìУ԰ BBS ÉçÇø"`8t%u-~5W[,yI
26-15. ¸´ÔÓµÄÊý×éÓ¦ÓÃ: ÁгöÒ»ÖÖ¹ÖÒìµÄÊýѧÐòÁÐ
ffy_%z@026-16. Ä£Äâ¶þάÊý×é,²¢Ê¹ËüÇãб
'Y#i rg'?i027-1. ÀûÓÃ/dev/tcp À´¼ìÐÞ¹ÊÕÏ
"X:zJz j RK#i"f?027-2. ËÑË÷ÓëÒ»¸öPIDÏà¹ØµÄ½ø³ÌľîìУ԰ BBS ÉçÇø?"WmB R X'z
27-3. ÍøÂçÁ¬½Ó״̬ľîìУ԰ BBS ÉçÇø?1T^ m1upJ!d
28-1. Òþ²Øcookie¶ø²»ÔÙʹÓÃľîìУ԰ BBS ÉçÇøS_a9N?1DD ~ r
28-2. ÓÃ/dev/zero´´½¨Ò»¸ö½»»»ÁÙʱÎļþ
r4_ F8k8AV7g028-3. ´´½¨ramdiskľîìУ԰ BBS ÉçÇø3X~J!O'R2jt
29-1. Ò»¸ö´íÎóµÄ½Å±¾
+yG5P%HcoXP9t029-2. ¶ªÊ§¹Ø¼ü×Ö(keyword)ľîìУ԰ BBS ÉçÇø-~z4pY)H*G%x
29-3. ÁíÒ»¸ö´íÎó½Å±¾
-g2xve3Xf[6]029-4. ÓÃ"assert"²âÊÔÌõ¼þ
SJ.Jilx029-5. ²¶×½ exit
%nxf4V,l nsnt6F_029-6. ÔÚControl-CºóÇå³ýÀ¬»ø
`9^.c vxX_%_ B029-7. ¸ú×Ù±äÁ¿Ä¾îìУ԰ BBS ÉçÇøA}5si!wZ
29-8. ÔËÐÐ¶à½ø³Ì (ÔÚ¶à´¦ÀíÆ÷µÄ»úÆ÷Àï)ľîìУ԰ BBS ÉçÇøJO&y_9q b
31-1. Êý×ÖºÍ×Ö·û´®±È½ÏÊDz»ÏàµÈͬµÄľîìУ԰ BBS ÉçÇøbP ck i^n
31-2. ×ÓSHELLȱÏÝľîìУ԰ BBS ÉçÇø:OP2\ oX:y.U dG7Bp
31-3. °ÑechoµÄÊä³öÓùܵÀÊäË͸øreadÃüÁî
c~"K9F/Nr3@"f033-1. shell °ü×°
H)_ @T_K6@:l R033-2. ÉÔ΢¸´ÔÓһЩµÄshell°üװľîìУ԰ BBS ÉçÇø0r0CH5EO4z
33-3. дµ½ÈÕÖ¾ÎļþµÄshell°üװľîìУ԰ BBS ÉçÇøX/D'A&L_1j/lBn
33-4. °ü×°awkµÄ½Å±¾Ä¾îìУ԰ BBS ÉçÇø@'? a;@5U+D F
33-5. ÁíÒ»¸ö°ü×°awkµÄ½Å±¾
.hq^j/R033-6. °ÑPerlǶÈëBash½Å±¾Ä¾îìУ԰ BBS ÉçÇø;t(zt6H2Og_,K3_
33-7. Bash ºÍ Perl ½Å±¾ÁªºÏʹÓÃ
.p z j Qj!^3Z033-8. µÝ¹éµ÷ÓÃ×Ô¼º±¾ÉíµÄ(ÎÞÓÃ)½Å±¾Ä¾îìУ԰ BBS ÉçÇøiV#GT;u/}`.F\
33-9. µÝ¹éµ÷ÓÃ×Ô¼º±¾ÉíµÄ(ÓÐÓÃ)½Å±¾Ä¾îìУ԰ BBS ÉçÇøR W!p}2X
33-10. ÁíÒ»¸öµÝ¹éµ÷ÓÃ×Ô¼º±¾ÉíµÄ(ÓÐÓÃ)½Å±¾
o8q*} A _033-11. Ò»¸ö "²ÊÉ«µÄ" µØÖ·×ÊÁÏ¿â
"qy*?P_0C033-12. »­ºÐ×Ó
)D+Z4RY0^ n033-13. ÏÔʾ²ÊÉ«Îı¾Ä¾îìУ԰ BBS ÉçÇør%Z,X"lBfY.y
33-14. "ÈüÂí" ÓÎÏ·
p.].ZZ1V [ k H3M5n W033-15. ·µ»ØÖµ¼¼ÇÉľîìУ԰ BBS ÉçÇø n7E'r$m'E7Xw
33-16. ÕûÐÍ»¹ÊÇstring?ľîìУ԰ BBS ÉçÇø L&R%JEsq
33-17. ´«µÝºÍ·µ»ØÊý×é
9Gc bjf033-18. anagramsÓÎϷľîìУ԰ BBS ÉçÇø1YiVDhR't o;T#L
33-19. ÔÚshell½Å±¾Öе÷ÓõĴ°¿Ú²¿¼þ
-Ih"]4j S?034-1. ×Ö·û´®À©Õ¹
8ZV9d8X H034-2. ¼ä½Ó±äÁ¿ÒýÓà - з½·¨Ä¾îìУ԰ BBS ÉçÇøj qb8rZ+x`
34-3. ʹÓüä½Ó±äÁ¿ÒýÓõļòµ¥Êý¾Ý¿âÓ¦ÓÃľîìУ԰ BBS ÉçÇø,Fr#FX.C])B
34-4. ÓÃÊý×éºÍÆäËûµÄС¼¼ÇÉÀ´´¦ÀíËÄÈËËæ»ú´òůľîìУ԰ BBS ÉçÇøCF5j _ {~%e^
ľîìУ԰ BBS ÉçÇø\$U)Bs)m
A-1. mailformat: Formatting an e-mail messageľîìУ԰ BBS ÉçÇø-P.^Fg G
A-2. rn: A simple-minded file rename utilityľîìУ԰ BBS ÉçÇø1~1[_-n+_$jl
A-3. blank-rename: renames filenames containing blanks
rt(A1_/P&i2g_` m-^0A-4. encryptedpw: Uploading to an ftp site, using a locally encrypted passwordľîìУ԰ BBS ÉçÇøBOG)`'CO;f)k
A-5. copy-cd: Copying a data CDľîìУ԰ BBS ÉçÇø P"ll.s!TLp'fP
A-6. Collatz seriesľîìУ԰ BBS ÉçÇøLbSWMZ4a M&^%kI;I6H
A-7. days-between: Calculate number of days between two dates
%NL cGqE0A-8. Make a "dictionary"ľîìУ԰ BBS ÉçÇø-vP3s4{ |%T
A-9. Soundex conversionľîìУ԰ BBS ÉçÇø^NN]t Hh }-~b2v
A-10. "Game of Life"
*Z u%}#DZ,\6X0A-11. Data file for "Game of Life"
K8D\*xp6u9XB0A-12. behead: Removing mail and news message headersľîìУ԰ BBS ÉçÇøL Fl.z8efB
A-13. ftpget: Downloading files via ftp
.Z ~u j I"r8|,A/@3vDj0A-14. password: Generating random 8-character passwordsľîìУ԰ BBS ÉçÇø'J9[xI,}/]X.T:h~'X!v:b
A-15. fifo: Making daily backups, using named pipesľîìУ԰ BBS ÉçÇøG"UP sAW`
A-16. Generating prime numbers using the modulo operator
ji;z#xL*b-oJ0A-17. tree: Displaying a directory tree
;}8](uf(k0A-18. string functions: C-like string functions
nQ%bKR ?H!qe6`0A-19. Directory informationľîìУ԰ BBS ÉçÇø;T$gMFC0n1c)W$U\k
A-20. Object-oriented database
u!Q+?a7y7x;Y5}0A-21. Library of hash functions
B$l*p-Ue-KkLG;f0A-22. Colorizing text using hash functions
a&{C6R{"axi0A-23. Mounting USB keychain storage devicesľîìУ԰ BBS ÉçÇø(p&vfq3M c
A-24. Preserving weblogsľîìУ԰ BBS ÉçÇøZ/\keE j` v
A-25. Protecting literal stringsľîìУ԰ BBS ÉçÇøZ+e P MH5S
A-26. Unprotecting literal stringsľîìУ԰ BBS ÉçÇø/@+q:{.Lhkq
A-27. Spammer Identification
@+WhO w9O C0A-28. Spammer Hunt
2lH t SF(g [e9u0A-29. Making wget easier to useľîìУ԰ BBS ÉçÇø8E:@{5}7nug_ @
A-30. A "podcasting" script
9{)Xb&?'v`RB0A-31. Basics ReviewedľîìУ԰ BBS ÉçÇø1_,F_+V+C7d
A-32. An expanded cd command
G#lhz{d b0C-1. Counting Letter Occurrences
4`.Ie^Z!s r0K-1. Sample .bashrc file
Fb7m:L/C:b&f0L-1. VIEWDATA.BAT: DOS Batch File
&m6OD*P/|FC2x*u0L-2. viewdata.sh: Shell Script Conversion of VIEWDATA.BAT
K@}H"p$_0P-1. Print the server environmentľîìУ԰ BBS ÉçÇø6e?&vi v

#U~C&CNo9Hvg0µÚÒ»²¿·Ö    ÈÈÉí
.Y ^'hBr.S0++++++++++++++++
R] sBn0shellÊÇÒ»¸öÃüÁî½âÊÍÆ÷.ÊǽéÓÚ²Ù×÷ϵͳkernelÓëÓû§Ö®¼äµÄÒ»¸ö¾øÔµ²ã.׼ȷµØËµ,ËüÒ²ÊÇһľîìУ԰ BBS ÉçÇø} {;Q"U5l)`}
Ò»ÖÖÇ¿Á¦µÄ¼ÆËã»úÓïÑÔ.Ò»¸öshell³ÌÐò,±»³ÆÎªÒ»¸ö½Å±¾,ÊÇÒ»ÖÖºÜÈÝÒ×ʹÓõŤ¾ß,Ëü¿ÉÒÔͨ¹ýľîìУ԰ BBS ÉçÇø9f|8GU D3b!F0Q%X
½«ÏµÍ³µ÷ÓÃ,¹«¹²³ÌÐò,¹¤¾ß,ºÍ±àÒë¹ýµÄ¶þ½øÖƳÌÐòÕ³ºÏÔÚÒ»ÆðÀ´½¨Á¢Ó¦ÓÃ.ÊÂʵÉÏ,ËùÓеÄUNIX
4N%rL}9ko {Wv0ÃüÁîºÍ¹¤¾ßÔÙ¼ÓÉϹ«¹²³ÌÐò,¶ÔÓÚshell½Å±¾À´Ëµ,¶¼Êǿɵ÷ÓõÄ.Èç¹ûÕâЩÄ㻹¾õµÃ²»¹»,ÄÇô
]3f0Xj7y$ca)P9qVG9g0shellÄÚ½¨ÃüÁî,±ÈÈçtestÓëÑ­»·½á¹¹,Ò²»á¸ø½Å±¾Ìí¼ÓÇ¿Á¦µÄÖ§³ÖºÍÔö¼ÓÁé»îÐÔ.Shell½Å±¾¶ÔÓÚľîìУ԰ BBS ÉçÇø%GH{;N'`/fO
¹ÜÀíϵͳÈÎÎñºÍÆäËüµÄÖØ¸´¹¤×÷µÄÀý³ÌÀ´Ëµ,±íÏֵķdz£ºÃ,¸ù±¾²»ÐèÒªÄÇЩ»ª¶ø²»ÊµµÄ³ÉÊìľîìУ԰ BBS ÉçÇøVi/SD/@_ } ]2|
½ô´ÕµÄ³ÌÐòÓïÑÔ.ľîìУ԰ BBS ÉçÇø)DC{4C2g/^

$D|/IHn4|2_(X F` O0µÚ1Õ    ÎªÊ²Ã´Ê¹ÓÃshell±à³ÌľîìУ԰ BBS ÉçÇø-{\J D w)No+V~
===========================
H/m"m#\#hY0ûÓгÌÐòÓïÑÔÊÇÍêÃÀµÄ.ÉõÖÁûÓÐÒ»¸öΨһ×îºÃµÄÓïÑÔ,Ö»ÓжÔÓÚÌØ¶¨Ä¿µÄ,±È½ÏÊʺϺͲ»ÊʺÏľîìУ԰ BBS ÉçÇø3i:r.g h(m,XT
µÄ³ÌÐòÓïÑÔ.
3rJ6m1r@x t`]0                                                               Herbert MayerľîìУ԰ BBS ÉçÇø R5q"HY uO
ľîìУ԰ BBS ÉçÇø _ D\a/T2kA
¶ÔÓÚÈκÎÏëÊʵ±¾«Í¨Ò»Ð©ÏµÍ³¹ÜÀí֪ʶµÄÈËÀ´Ëµ,ÕÆÎÕshell½Å±¾ÖªÊ¶¶¼ÊÇ×î»ù±¾µÄ,¼´Ê¹ÕâЩ
X(D_ Jc0ÈË¿ÉÄܲ¢²»´òËãÕæÕýµÄ±àдһЩ½Å±¾.ÏëÒ»ÏÂLinux»úÆ÷µÄÆô¶¯¹ý³Ì,ÔÚÕâ¸ö¹ý³ÌÖÐ,±Ø½«ÔËÐÐľîìУ԰ BBS ÉçÇøc E3@1WZy!?ws
/etc/rc.dĿ¼ÏµĽű¾À´´æ´¢ÏµÍ³ÅäÖúͽ¨Á¢·þÎñ.ÏêϸµÄÀí½âÕâЩÆô¶¯½Å±¾¶ÔÓÚ·ÖÎöϵͳµÄľîìУ԰ BBS ÉçÇøT*^HgBS:M*E q
ÐÐΪÊǷdz£ÖØÒªµÄ,²¢ÇÒÓÐʱºò¿ÉÄܱØÐëÐÞ¸ÄËü.ľîìУ԰ BBS ÉçÇø1K&p6]7X J:]GO${

S5q1C6c!{n[ `%{0ѧϰÈçºÎ±àдshell½Å±¾²¢²»ÊÇÒ»¼þºÜÀ§ÄѵÄÊÂ,ÒòΪ½Å±¾¿ÉÒÔ·ÖΪºÜСµÄ¿é,²¢ÇÒÏà¶ÔÓÚshell
&F Qq^8A](m(?:V0ÌØÐԵIJÙ×÷ºÍÑ¡Ïî[1]²¿·Ö,Ö»ÐèҪѧϰºÜСµÄÒ»²¿·Ö¾Í¿ÉÒÔÁË.Óï·¨ÊǼòµ¥²¢ÇÒÖ±¹ÛµÄ,±àд½ÅľîìУ԰ BBS ÉçÇø#`|$_,N Dz
±¾ºÜÏñÊÇÔÚÃüÁîÐÐÉϰÑһЩÏà¹ØÃüÁîºÍ¹¤¾ßÁ¬½ÓÆðÀ´,²¢ÇÒÖ»ÓкÜÉÙµÄÒ»²¿·Ö¹æÔòÐèҪѧϰ.
GRnj hK-k0¾ø´ó²¿·Ö½Å±¾µÚÒ»´Î¾Í¿ÉÒÔÕý³£µÄ¹¤×÷,¶øÇÒ¼´Ê¹µ÷ÊÔÒ»¸ö³¤Ò»Ð©µÄ½Å±¾Ò²ÊǺÜÖ±¹ÛµÄ.ľîìУ԰ BBS ÉçÇø(c5^%ETN
ľîìУ԰ BBS ÉçÇø6o;{1dW K
Ò»¸öshell½Å±¾ÊÇÒ»¸öÀàËÆÓÚС³ÔµêµÄ(quick and dirty)·½·¨,ÔÚÄãʹÓÃÔ­ÐÍÉè¼ÆÒ»¸ö¸´ÔӵľîìУ԰ BBS ÉçÇøH@2[XtJm
Ó¦ÓõÄʱºò.ÔÚ¹¤³Ì¿ª·¢µÄµÚÒ»½×¶Î,¼´Ê¹´Ó¹¦ÄÜÖÐÈ¡µÃºÜÓÐÏÞµÄÒ»¸ö×Ó¼¯·Åµ½shell½Å±¾ÖÐÀ´
@8~6~B4A!h!p:Ey8u0Íê³ÉÍùÍù¶¼ÊǷdz£ÓÐÓõÄ.ʹÓÃÕâÖÖ·½·¨,³ÌÐòµÄ½á¹û¿ÉÒÔ±»²âÊԺͳ¢ÊÔÔËÐÐ,²¢ÇÒÔÚ´¦ÀíʹÓÃ
4a[ Oh|0ÖîÈçC/C++,Java»òÕßPerlÓïÑÔ±àдµÄ×îÖÕ´úÂëǰ,Ö÷ÒªµÄȱÏݺÍÏÝÚåÍùÍù¾Í±»·¢ÏÖÁË.ľîìУ԰ BBS ÉçÇøkM(b Xq/V2j+z
ľîìУ԰ BBS ÉçÇøJ {(QY#E+?(z qF!P
Shell½Å±¾×ñÑ­µäÐ͵ÄUNIXÕÜѧ,¾ÍÊǰѴóµÄ¸´ÔӵŤ³Ì·Ö³ÉС¹æÄ£µÄ×ÓÈÎÎñ,²¢ÇÒ°ÑÕâЩ²¿¼þľîìУ԰ BBS ÉçÇøh`;`AS-vUA,[)A
ºÍ¹¤¾ß×éºÏÆðÀ´.Ðí¶àÈËÈÏΪÕâÖÖ°ì·¨¸üºÃһЩ,ÖÁÉÙÕâÖÖ°ì·¨±ÈʹÓÃÄÇÖÖ¸ß\´ó\È«µÄÓïÑÔ¸ü
aAs3V*vO(^0ÃÀ,¸üÓäÔÃ,¸üÊʺϽâ¾öÎÊÌâ.±ÈÈçPerl¾ÍÊÇÕâÖÖÄܸÉÈκÎÊÂÄÜÊʺÏÈκÎÈ˵ÄÓïÑÔ,µ«ÊÇ´ú¼Û¾ÍÊÇľîìУ԰ BBS ÉçÇø#l1}hY3o-`!jWQ
ÄãÐèҪǿÆÈ×Ô¼ºÊ¹ÓÃÕâÖÖÓïÑÔÀ´Ë¼¿¼½â¾öÎÊÌâµÄ°ì·¨.ľîìУ԰ BBS ÉçÇø0^(wi3P.g/y*i p1Dp
ľîìУ԰ BBS ÉçÇø/U+}I(ov
ʲôʱºò²»Ê¹ÓÃShell½Å±¾
7t&Tzs z4f;J@T0   Ä¾îìУ԰ BBS ÉçÇøHQh+o,C8?
   ×ÊÔ´Ãܼ¯Ð͵ÄÈÎÎñ,ÓÈÆäÔÚÐèÒª¿¼ÂÇЧÂÊʱ(±ÈÈç,ÅÅÐò,hashµÈµÈ)ľîìУ԰ BBS ÉçÇøYJ)kd'W'v w+Z

@ I)Ce:g0   ÐèÒª´¦Àí´óÈÎÎñµÄÊýѧ²Ù×÷,ÓÈÆäÊǸ¡µãÔËËã,¾«È·ÔËËã,»òÕ߸´ÔÓµÄËãÊõÔËËãľîìУ԰ BBS ÉçÇø2h.|;`#KMib
   (ÕâÖÖÇé¿öÒ»°ãʹÓÃC++»òFORTRANÀ´´¦Àí)ľîìУ԰ BBS ÉçÇø#P#e St uqf

5P5e{eiO|:w?D3m/g0   ÓÐ¿çÆ½Ì¨ÒÆÖ²ÐèÇó(Ò»°ãʹÓÃC»òJava)ľîìУ԰ BBS ÉçÇøsY `5c.V){5P
ľîìУ԰ BBS ÉçÇø_$xd LMWg0p
   ¸´ÔÓµÄÓ¦ÓÃ,ÔÚ±ØÐëʹÓýṹ»¯±à³ÌµÄʱºò(ÐèÒª±äÁ¿µÄÀàÐͼì²é,º¯ÊýÔ­ÐÍ,µÈµÈ)ľîìУ԰ BBS ÉçÇø:Av0f$CWQ7f

&ZNk!I/I*v*F0   ¶ÔÓÚÓ°Ïìϵͳȫ¾ÖÐԵĹؼüÈÎÎñÓ¦Óá£
!q4aQ7v"@3Uc0
$Q \'bB.V/p3[$x0   ¶ÔÓÚ°²È«ÓкܸßÒªÇóµÄÈÎÎñ,±ÈÈçÄãÐèÒªÒ»¸ö½¡×³µÄϵͳÀ´·ÀÖ¹ÈëÇÖ,ÆÆ½â,¶ñÒâÆÆ»µµÈµÈ.ľîìУ԰ BBS ÉçÇøW3E;t2RJB B/j

T0l[,s-m0   ÏîÄ¿ÓÉÁ¬´®µÄÒÀÀµµÄ¸÷¸ö²¿·Ö×é³É¡£
RWu t f kn'ZPE-[0ľîìУ԰ BBS ÉçÇø+ZUM(?1iU#T&d,O.})o
   ÐèÒª´ó¹æÄ£µÄÎļþ²Ù×÷ľîìУ԰ BBS ÉçÇøIGt`aSt&R ac

]O }p?zJR/C0   ÐèÒª¶àάÊý×éµÄÖ§³ÖľîìУ԰ BBS ÉçÇøjM$@c;k.yy%k
ľîìУ԰ BBS ÉçÇø)Wq |F!?9z9WE
   ÐèÒªÊý¾Ý½á¹¹µÄÖ§³Ö,±ÈÈçÁ´±í»òÊýµÈÊý¾Ý½á¹¹
uGI!]M@Tl0
)Din.b2\0   ÐèÒª²úÉú»ò²Ù×÷ͼÐλ¯½çÃæGUIľîìУ԰ BBS ÉçÇøja#B6FJ9zWjN
ľîìУ԰ BBS ÉçÇøT? _3k,y{$xc1U
   ÐèÒªÖ±½Ó²Ù×÷ϵͳӲ¼þ
Qc'O5`:j3h \2^JJ s0
&zP,o%o(Jf6{"C4XZ0   ÐèÒªI/O»òsocket½Ó¿ÚľîìУ԰ BBS ÉçÇøGd#r d;|P U/X:~i b

z qA7?.n~/i G~D-S0   ÐèҪʹÓÿâ»òÕßÒÅÁôÏÂÀ´µÄÀÏ´úÂëµÄ½Ó¿ÚľîìУ԰ BBS ÉçÇø r1~3j3If#a

:]:J5Ce5?P2h]6R0   Ë½È˵Ä,±ÕÔ´µÄÓ¦ÓÃ(shell½Å±¾°Ñ´úÂë¾Í·ÅÔÚÎı¾ÎļþÖÐ,È«ÊÀ½ç¶¼ÄÜ¿´µ½)ľîìУ԰ BBS ÉçÇø%\5K|"pMrp3v

+E5hN'?~0Èç¹ûÄãµÄÓ¦Ó÷ûºÏÉϱߵÄÈÎÒâÒ»Ìõ,ÄÇô¾Í¿¼ÂÇһϸüÇ¿´óµÄÓïÑÔ°É--»òÐíÊÇPerl,Tcl,Python,
\ R-[P1R%~,F%O0Ruby -- »òÕßÊǸü¸ß²ã´ÎµÄ±àÒëÓïÑÔ±ÈÈçC/C++,»òÕßÊÇJava.¼´Ê¹Èç´Ë,Äã»á·¢ÏÖ,ʹÓÃshell
F|h\1I+QGA0À´Ô­ÐÍ¿ª·¢ÄãµÄÓ¦ÓÃ,ÔÚ¿ª·¢²½ÖèÖÐÒ²ÊǷdz£ÓÐÓõÄ.ľîìУ԰ BBS ÉçÇø"dh.\?CQM]
ľîìУ԰ BBS ÉçÇø `]lf6_7^
ÎÒÃǽ«¿ªÊ¼Ê¹ÓÃBash,BashÊÇ"Bourne-Again shell"Ê××ÖĸµÄËõд,Ò²ÊÇStephen BourneµÄ¾­µäľîìУ԰ BBS ÉçÇøD2lh#?E-T"~AU
µÄBourne shellµÄÒ»¸öË«¹ØÓï,(ÒëÕß:˵ʵ»°,ÎÒÒ»Ö±¸ã²»ÇåÕâ¸öË«¹ØÓïÊÇʲôÒâ˼,Ϊʲô½Ð
;QVW^$M$N0"Bourn-Again shell",ÕâÆäÖÐÓ¦¸ÃÓиöʲôµä¹Ê°É,ÄÄλºÃÐÄ,¸æËßÎÒÒ»ÏÂ^^).BashÒѾ­³ÉΪÁË
L r4~:sZc6E0ËùÓÐUNIXÖÐshell½Å±¾µÄÊÂʵÉϵıê×¼ÁË.ͬʱÕâ±¾ÊéÒ²¸²¸ÇÁ˾ø´ó²¿·ÖµÄÆäËûһЩshellµÄԭľîìУ԰ BBS ÉçÇø%?+j"Q0{0gEzUR
Ôò,±ÈÈçKorn Shell,Bash´ÓkshÖм̳ÐÁËÒ»²¿·ÖÌØÐÔ,[2]C ShellºÍËüµÄ±äÖÖ.(×¢Òâ:C ShellľîìУ԰ BBS ÉçÇø&^2H r;S%j BNz
±à³ÌÊDz»±»ÍƼöµÄ,ÒòÎªÒ»Ð©ÌØ¶¨µÄÄÚÔÚÎÊÌâ,Tom ChristiansenÔÚ1993Äê10ÔÂÖ¸³öÁËÕâ¸öÎÊÌâľîìУ԰ BBS ÉçÇøs GM*x B&nN
ÇëÔÚhttp://www.etext.org/Quartz/computer/unix/csh.harmful.gzÖв鿴¾ßÌåÄÚÈÝ.)
A8Yy.Oy NWrS)n0
jqA&]n7di0½ÓÏÂÀ´Êǽű¾µÄһЩ˵Ã÷.ÔÚչʾshell²»Í¬µÄÌØÕ÷֮ǰ,Ëü¿ÉÒÔ¼õÇáһЩÔĶÁÊéÖÐÀý×ÓľîìУ԰ BBS ÉçÇø(f"s4lU1s!q ~3|q
µÄ¸ºµ£.±¾ÊéÖеÄÀý×ӽű¾,¶¼ÔÚ¾¡¿ÉÄܵķ¶Î§ÄÚ½øÐÐÁ˲âÊÔ,²¢ÇÒÆäÖеÄһЩ½«Ê¹ÓÃÔÚÕæ
e9j0x.m.\1M G'T:^0ʵµÄÉú»îÖÐ.¶ÁÕß¿ÉÒÔÔËÐÐÕâЩÀý×ӽű¾(ʹÓÃscriptname.sh»òÕßscriptname.bashµÄÐÎʽ),ľîìУ԰ BBS ÉçÇø$D#Q{5l&Z(E
[3]²¢¸øÕâЩ½Å±¾Ö´ÐÐȨÏÞ(chmod u+rx scriptname),È»ºóÖ´ÐÐËüÃÇ,¿´¿´·¢ÉúÁËʲô.Èç¹û´æ
hU s+J*?_&S0µµµÄ½Å±¾²»¿ÉÓÃ,ÄÇô¾Í´Ó±¾ÊéµÄHTML,pdf»òÕßtextµÄ·¢Ðа汾ÖаÑËüÃÇ¿½±´Õ³Ìù³öÀ´.¿¼Âǵ½
Mn7U5A6D%T7X/\x0ÕâЩ½Å±¾ÖеÄÄÚÈÝÔÚÎÒÃÇ»¹Ã»½âÊÍËü֮ǰ¾Í±»ÁÐÔÚÕâÀï,¿ÉÄÜ»áÓ°Ïì¶ÁÕßµÄÀí½â,Õâ¾ÍÐèÒª¶ÁÕß
3LYT#Ix0[-P+E0ÔÝʱºöÂÔÕâЩÄÚÈÝ.
#Fv|;hg [9L0
)O%i]6t$M%v(L}0³ý·ÇÌØ±ð×¢Ã÷,±¾Êé×÷Õß±àдÁ˱¾ÊéÖеľø´ó²¿·ÖÀý×ӽű¾.
/\u C w5S{ ?r#II0
&Yi jAH9r)@0×¢ÒâÊÂÏî:ľîìУ԰ BBS ÉçÇøJ[1kr7} j.Iw4ms
[1]        ÕâЩÔÚbuiltinsÕ½ڱ»ÒýÓÃ,ÕâЩÊÇshellµÄÄÚ²¿ÌØÕ÷.ľîìУ԰ BBS ÉçÇø@K z7~c
[2]        ksh88µÄÐí¶àÌØÐÔ,ÉõÖÁÊÇһЩksh93µÄÌØÐÔ¶¼±»ºÏ²¢µ½BashÖÐÁË.ľîìУ԰ BBS ÉçÇø,CQ.by7H
[3]        ¸ù¾Ý¹ßÀý,Óû§±àдµÄBourne shell½Å±¾Ó¦¸ÃÔڽű¾µÄÃû×Öºó±ß¼ÓÉÏ.shÀ©Õ¹Ãû.ľîìУ԰ BBS ÉçÇø5wo]l:w
       Ò»Ð©ÏµÍ³½Å±¾,±ÈÈçÄÇЩÔÚ/etc/rc.dÖеĽű¾,Ôò²»×ñÑ­ÕâÖÖÃüÃûϰ¹ß.ľîìУ԰ BBS ÉçÇøO;dXV-US
ľîìУ԰ BBS ÉçÇøut%\3b$LH'O

/p;]Wj/h0ľîìУ԰ BBS ÉçÇøXk2sp| LV
µÚ2Õ    ´ø×ÅÒ»¸öSha-Bang³ö·¢(Sha-BangÖ¸µÄÊÇ#!)
*Oqdk,RO0==============================================
Rd.Qr gY D4H0ÔÚÒ»¸ö×î¼òµ¥µÄÀý×ÓÖÐ,Ò»¸öshell½Å±¾Æäʵ¾ÍÊǽ«Ò»¶ÑϵͳÃüÁîÁÐÔÚÒ»¸öÎļþÖÐ.ËüµÄ×î»ù±¾µÄ
[1@q^,|4M kn0Óô¦¾ÍÊÇ,ÔÚÄãÿ´ÎÊäÈëÕâÐ©ÌØ¶¨Ë³ÐòµÄÃüÁîʱ¿ÉÒÔÉÙÇÃһЩ×Ö.ľîìУ԰ BBS ÉçÇøF;K%R rIIE m
ľîìУ԰ BBS ÉçÇø*J#G"RGmVL
Example 2-1 Çå³ý:Çå³ý/var/logϵÄlogÎļþ
:Hd kKg7R"]0################################Start Script#######################################
pk"JJ"cs01 # CleanupľîìУ԰ BBS ÉçÇøy.b _rh,ri
2 # µ±È»ÒªÊ¹ÓÃrootÉí·ÝÀ´ÔËÐÐÕâ¸ö½Å±¾Ä¾îìУ԰ BBS ÉçÇøg;B*r7c4s)f;t&\P
3ľîìУ԰ BBS ÉçÇø.^5onni Xt
4 cd /var/logľîìУ԰ BBS ÉçÇø z ErD|
5 cat /dev/null > messages
{d0jHf'~G06 cat /dev/null > wtmpľîìУ԰ BBS ÉçÇø+j ~'LPE_
7 echo "Logs cleaned up."ľîìУ԰ BBS ÉçÇø+[*\ mB8B-@o)]
################################End Script#########################################
w ^8g{w~TaI7R?0Õâ¸ù±¾¾ÍÃ»Ê²Ã´Ï¡ÆæµÄ, Ö»²»¹ýÊÇÃüÁîµÄ¶Ñ»ý, À´ÈôÓconsole»òÕßxtermÖÐÒ»¸öÒ»¸öµÄÊäÈëÃüľîìУ԰ BBS ÉçÇø3C*uC!RFu!S
Áî¸ü·½±ãһЩ.ºÃ´¦¾ÍÊǰÑËùÓÐÃüÁî¶¼·ÅÔÚÒ»¸ö½Å±¾ÖÐ,²»ÓÃÿ´Î¶¼ÇÃËüÃÇ.ÕâÑùµÄ»°,¶ÔÓÚÌØ¶¨
}1E4K0yM^g;[0µÄÓ¦ÓÃÀ´Ëµ,Õâ¸ö½Å±¾¾ÍºÜÈÝÒ×±»Ð޸Ļò¶¨ÖÆ.ľîìУ԰ BBS ÉçÇø;][*R-N7^%PH Q1P

dA5H^ t0Example 2-2 Çå³ý:Ò»¸ö¸ÄÁ¼µÄÇå³ý½Å±¾Ä¾îìУ԰ BBS ÉçÇø y"~e^ Oc
################################Start Script#######################################
#D`V@-k+|WR R01 #!/bin/bash
hUM%e/qV.Mu+UR4]02 # Ò»¸öBash½Å±¾µÄÕýÈ·µÄ¿ªÍ·²¿·Ö.
8}V(n$Fx03
o+Kp q.HW04 # Cleanup, °æ±¾ 2
w)HYMpO05
u$K(K S1G#k F8L8v"J06 # µ±È»ÒªÊ¹ÓÃrootÉí·ÝÀ´ÔËÐÐ.ľîìУ԰ BBS ÉçÇøMmzdt
7 # ÔÚ´Ë´¦²åÈë´úÂë,À´´òÓ¡´íÎóÏûÏ¢,²¢ÇÒÔÚ²»ÊÇrootÉí·ÝµÄʱºòÍ˳ö.ľîìУ԰ BBS ÉçÇø~J0`I(d.QB
8ľîìУ԰ BBS ÉçÇø"g?M&DH9K8x
9 LOG_DIR=/var/log
t E#WZ%p(^f010 # Èç¹ûʹÓñäÁ¿,µ±È»±È°Ñ´úÂëдËÀµÄºÃ.
pA]?M@2Ab011 cd $LOG_DIRľîìУ԰ BBS ÉçÇøj)MUq0g
12
0YX {^ lG0M|H(E013 cat /dev/null > messagesľîìУ԰ BBS ÉçÇø2P vu.E2J
14 cat /dev/null > wtmpľîìУ԰ BBS ÉçÇøa:Y j+j w!t.B`
15
!u&t||fG k016ľîìУ԰ BBS ÉçÇø%LM0WVY8v \7O;m
17 echo "Logs cleaned up."ľîìУ԰ BBS ÉçÇø8O6IO9A i xQ_
18
H3pn M2{[019 exit # Õâ¸öÃüÁîÊÇÒ»ÖÖÕýÈ·²¢ÇÒºÏÊʵÄÍ˳ö½Å±¾µÄ·½·¨.ľîìУ԰ BBS ÉçÇøf'mI2{b7rYt c"x
################################End Script#########################################ľîìУ԰ BBS ÉçÇø$B:_ n&Gt
ľîìУ԰ BBS ÉçÇø x-H!y8V/l3f5L1Oo|
ÏÖÔÚ,ÈÃÎÒÃÇ¿´Ò»ÏÂÒ»¸öÕæÕýÒâÒåµÄ½Å±¾.¶øÇÒÎÒÃÇ¿ÉÒÔ×ߵøüÔ¶...
,z$P)]8J"J0Example 2-3. cleanup:Ò»¸öÔöÇ¿µÄºÍ¹ãÒåµÄɾ³ýlogfileµÄ½Å±¾
7elbF5XmB0################################Start Script#######################################ľîìУ԰ BBS ÉçÇø0y+HZ r~
1 #!/bin/bash
A+Uui+yr2U`3F z02 # Çå³ý, °æ±¾ 3ľîìУ԰ BBS ÉçÇø_ v"v5A3^ n:zw;SO r
3ľîìУ԰ BBS ÉçÇø;^{\0FRR;Kv p
4 #  Warning:ľîìУ԰ BBS ÉçÇø[LL5|p2p
5 #  -------
%{4C]*m-d(a4S06 #  Õâ¸ö½Å±¾ÓкöàÌØÕ÷,ÕâÐ©ÌØÕ÷ÊÇÔÚºó±ßÕ½ڽøÐнâÊ͵Ä,´ó¸ÅÊǽøÐе½±¾ÊéµÄÒ»°ëµÄľîìУ԰ BBS ÉçÇøA;U Evq/L#sK
7 #  Ê±ºò,ľîìУ԰ BBS ÉçÇøf8H7n)m$Y?/P
8 #  Äã¾Í»á¾õµÃËüûÓÐʲôÉñÃØµÄÁË.
^b7I-}J7s09 #ľîìУ԰ BBS ÉçÇøwOW%Ub`
10ľîìУ԰ BBS ÉçÇø8w B xH5DB
11ľîìУ԰ BBS ÉçÇø R8h+hG"z@&R"DP
12
uV:YL._T:}013 LOG_DIR=/var/log
#e;r _~]c]014 ROOT_UID=0     # $UIDΪ0µÄʱºò,Óû§²Å¾ßÓиùÓû§µÄȨÏÞľîìУ԰ BBS ÉçÇø-dbbF l&Q0t
15 LINES=50       # ĬÈϵı£´æÐÐÊýľîìУ԰ BBS ÉçÇø(t Djfq b?7}
16 E_XCD=66       # ²»ÄÜÐÞ¸ÄĿ¼?
g PU z;?1w017 E_NOTROOT=67   # ·Ç¸ùÓû§½«ÒÔerrorÍ˳öľîìУ԰ BBS ÉçÇøq1a)O#s |%j"Aur
18
4^4zzA ~a019ľîìУ԰ BBS ÉçÇø#F"\S)mrS8c
20 # µ±È»ÒªÊ¹ÓøùÓû§À´ÔËÐÐ
b~)NG'|Fs!S9A021 if [ "$UID" -ne "$ROOT_UID" ]
*] AV"|d/]t022 then
2K6O9L8m;s f#Pq023   echo "Must be root to run this script."ľîìУ԰ BBS ÉçÇø ]7n/RZcy
24   exit $E_NOTROOTľîìУ԰ BBS ÉçÇø/\(f-Qy7Fq
25 fi  
e*uy$d{026
3V$K/tH[027 if [ -n "$1" ]
1R?'_/f.gFl7eC#W028 # ²âÊÔÊÇ·ñÓÐÃüÁîÐвÎÊý(·Ç¿Õ).ľîìУ԰ BBS ÉçÇøU T6K0BYF2S\)Kz
29 then
-GJ6nBNQ-~0p030   lines=$1
9d8k `5S`'M031 else  
6A-~})_y032   lines=$LINES # ĬÈÏ,Èç¹û²»ÔÚÃüÁîÐÐÖÐÖ¸¶¨
3PsN8K&WH033 fi  
&T1E(Mgv"J034ľîìУ԰ BBS ÉçÇøhL;?Y-Z2b6|
35
E%J6n2g7j]036 #  Stephane Chazelas ½¨ÒéʹÓÃÏ±ßľîìУ԰ BBS ÉçÇø9p _gq&@
37 #+ µÄ¸üºÃ·½·¨À´¼ì²âÃüÁîÐвÎÊý.
8Ch:mQ%b.^re038 #+ µ«¶ÔÓÚÕâÕÂÀ´Ëµ»¹ÊÇÓе㳬ǰ.ľîìУ԰ BBS ÉçÇø)_ `$elv L[1K
39 #
/vVA1N'CS4VM"gR040 #    E_WRONGARGS=65  # ·ÇÊýÖµ²ÎÊý(´íÎóµÄ²ÎÊý¸ñʽ)
"[6B2r#}^1c.R:Ew}041 #ľîìУ԰ BBS ÉçÇøX,q["~1dK?
42 #    case "$1" inľîìУ԰ BBS ÉçÇø j.EI6eIG\5l
43 #    ""      ) lines=50;;
Gv q(yX044 #    *[!0-9]*) echo "Usage: `basename $0` file-to-cleanup"; exit $E_WRONGARGS;;
$A0}oYs?O,g045 #    *       ) lines=$1;;
syUJ!gh046 #    esacľîìУ԰ BBS ÉçÇø;J/w'A/R9{,n$z:DM
47 #ľîìУ԰ BBS ÉçÇø,hCT iDvRL
48 #* Ö±µ½"Loops"µÄÕ½ڲŻá¶ÔÉϱߵÄÄÚÈݽøÐÐÏêϸµÄÃèÊö.
7T6Q6e6]5o"Pg&Q*y049ľîìУ԰ BBS ÉçÇøG!p&P P]C
50ľîìУ԰ BBS ÉçÇø0BC:v2g Mj+PIy2O
51 cd $LOG_DIR
N1b[)?&T052
\`$l)_*sdm$r(L053 if [ `pwd` != "$LOG_DIR" ]  # »òÕß    if[ "$PWD" != "$LOG_DIR" ]
!}c'R^X6J T-w{054                             # ²»ÔÚ /var/logÖÐ?ľîìУ԰ BBS ÉçÇø,c/e/T%A"k-H5M]
55 thenľîìУ԰ BBS ÉçÇøY ^RE E^
56   echo "Can't change to $LOG_DIR."
V*rn._}:n h6r%\%~057   exit $E_XCD
/Me!L%N-j-I(c@058 fi  # ÔÚ´¦Àílog file֮ǰ,ÔÙÈ·ÈÏÒ»±éµ±Ç°Ä¿Â¼ÊÇ·ñÕýÈ·.ľîìУ԰ BBS ÉçÇø9V'?5o9w%A/P.`tV2i#k
59
0b(E%B'Kk*IL060 # ¸üÓÐЧÂʵÄ×ö·¨ÊÇ
X U9? g0gJ K"m061 #
+?C [um,AH3d;Y062 # cd /var/log || {ľîìУ԰ BBS ÉçÇø*g6|o+` O am
63 #   echo "Cannot change to necessary directory." >&2ľîìУ԰ BBS ÉçÇø@ P o\va
64 #   exit $E_XCD;
*`|"V|%qY065 # }ľîìУ԰ BBS ÉçÇø2]&v fM(mU
66
4qxD qu067
7c!H D3H8DQ068ľîìУ԰ BBS ÉçÇø~7hT9?9K]7m"t
69
3A{ Q"F|)s070 tail -$lines messages > mesg.temp # ±£´ælog fileÏûÏ¢µÄ×îºó²¿·Ö.ľîìУ԰ BBS ÉçÇø%UCw LR$G
71 mv mesg.temp messages             # ±äΪеÄlogĿ¼.ľîìУ԰ BBS ÉçÇøeR"A-]"^ | nk
72
,t3U-K#jVF`?h073ľîìУ԰ BBS ÉçÇøS&@*q5f _+u/@qH.Zi `
74 # cat /dev/null > messagesľîìУ԰ BBS ÉçÇø"?0T"T"ZlI
75 #* ²»ÔÙÐèÒªÁË,ʹÓÃÉϱߵķ½·¨¸ü°²È«.
Xk.G&y7f076
/B_!R:jbyE077 cat /dev/null > wtmp  #  ': > wtmp' ºÍ '> wtmp'¾ßÓÐÏàͬµÄ×÷ÓÃľîìУ԰ BBS ÉçÇø'Mvyq_W0Wj
78 echo "Logs cleaned up."
N] y9|;\'S"Di3_079ľîìУ԰ BBS ÉçÇøQ*o8X*U)t,`
80 exit 0ľîìУ԰ BBS ÉçÇø5I3n nL#q:tJg7N4X
81 #  Í˳ö֮ǰ·µ»Ø0,·µ»Ø0±íʾ³É¹¦.ľîìУ԰ BBS ÉçÇøXUD#G.wNv |K
82 #ľîìУ԰ BBS ÉçÇøN$Xp"I@H
################################End Script#########################################
j:e{E4J:Q"D0ľîìУ԰ BBS ÉçÇø4r(`+_:E-e"M,M
ÒòΪÄã¿ÉÄÜÏ£Íû½«ÏµÍ³logÈ«²¿ÏûÃð,Õâ¸ö°æ±¾ÁôÏÂÁËlogÏûÏ¢×îºóµÄ²¿·Ö.Ä㽫²»¶ÏµØÕÒµ½ÐÂľîìУ԰ BBS ÉçÇø2s6|HVf pF],`
µÄ·½·¨À´ÍêÉÆÕâ¸ö½Å±¾,²¢Ìá¸ßЧÂÊ.ľîìУ԰ BBS ÉçÇøH1pU8K"@3X`QL
ľîìУ԰ BBS ÉçÇøs.ie]E%l&g n
ҪעÒâ,ÔÚÿ¸ö½Å±¾µÄ¿ªÍ·¶¼Ê¹ÓÃ"#!",ÕâÒâζןæËßÄãµÄϵͳÕâ¸öÎļþµÄÖ´ÐÐÐèÒªÖ¸¶¨Ò»¸ö½â
F.GU!W*N0ÊÍÆ÷.#!ʵ¼ÊÉÏÊÇÒ»¸ö2×Ö½Ú[1]µÄħ·¨Êý×Ö,ÕâÊÇÖ¸¶¨Ò»¸öÎļþÀàÐ͵ÄÌØÊâ±ê¼Ç, »»¾ä»°Ëµ, ÔÚľîìУ԰ BBS ÉçÇø)GK'J9u;Vj0A!@e&S
ÕâÖÖÇé¿öÏÂ,Ö¸µÄ¾ÍÊÇÒ»¸ö¿ÉÖ´ÐеĽű¾(¼üÈëman magicÀ´»ñµÃ¹ØÓÚÕâ¸öÃÔÈË»°ÌâµÄ¸ü¶àÏêϸľîìУ԰ BBS ÉçÇø1@l"H W6ye7}
ÐÅÏ¢).ÔÚ#!Ö®ºó½Ó×ÅÊÇÒ»¸ö·¾¶Ãû.Õâ¸ö·¾¶ÃûÖ¸¶¨ÁËÒ»¸ö½âÊͽű¾ÖÐÃüÁîµÄ³ÌÐò,Õâ¸ö³ÌÐò¿ÉľîìУ԰ BBS ÉçÇøF+s(a K P*?a/D6n
ÒÔÊÇshell,³ÌÐòÓïÑÔ»òÕßÊÇÈÎÒâÒ»¸öͨÓóÌÐò.Õâ¸öÖ¸¶¨µÄ³ÌÐò´ÓÍ·¿ªÊ¼½âÊͲ¢ÇÒÖ´Ðнű¾ÖÐľîìУ԰ BBS ÉçÇø8^{6N I cm&jJ
µÄÃüÁî(´Ó#!ÐÐϱߵÄÒ»ÐпªÊ¼),ºöÂÔ×¢ÊÍ.[2]ľîìУ԰ BBS ÉçÇøNw)k rT
Èç:
g8pLw,{aUS6i01 #!/bin/shľîìУ԰ BBS ÉçÇøEKM$CpWr%?|
2 #!/bin/bash
~8a*S V(nk+p o V03 #!/usr/bin/perl
$Q+R/w1f*O0zZ04 #!/usr/bin/tcl
+qHT)n5GZ05 #!/bin/sed -f
G-e&R_3]+}06 #!/usr/awk -f
A0Vp S bN'wi0ľîìУ԰ BBS ÉçÇøl q1E4c D4Ey0{M Z
Éϱßÿһ¸ö½Å±¾Í·µÄÐж¼Ö¸¶¨ÁËÒ»¸ö²»Í¬µÄÃüÁî½âÊÍÆ÷,Èç¹ûÊÇ/bin/sh,ÄÇô¾ÍÊÇĬÈÏshell
V VC9|p0(ÔÚLinuxϵͳÖÐĬÈÏÊÇBash).[3]ʹÓÃ#!/bin/sh,ÔÚ´ó¶àÊýÉÌÒµ·¢ÐеÄUNIXÉÏ,ĬÈÏÊÇBourne
;f:nND!M0shell,Õ⽫ÈÃÄãµÄ½Å±¾¿ÉÒÔÕý³£µÄÔËÐÐÔÚ·ÇLinux»úÆ÷ÉÏ,ËäÈ»Õ⽫»áÎþÉüBashһЩ¶ÀÌØµÄÌØÕ÷.
n`LC6B q ynq0½Å±¾½«ÓëPOSIX[4] µÄsh±ê×¼ÏàÒ»ÖÂ.
tA~3yi9h m+KjKH0ľîìУ԰ BBS ÉçÇø!Q1p)SK] lq
×¢Òâ: #! ºó±ß¸ø³öµÄ·¾¶Ãû±ØÐëÊÇÕýÈ·µÄ,·ñÔò½«»á³öÏÖÒ»¸ö´íÎóÏûÏ¢,ͨ³£ÊÇľîìУ԰ BBS ÉçÇøFT/e1[Qh#wq[A
"Command not found",Õ⽫ÊÇÄãÔËÐÐÕâ¸ö½Å±¾Ê±ËùµÃµ½µÄΨһ½á¹û.
I@2y}/N9nFNS&Q ]0ľîìУ԰ BBS ÉçÇø*])O#i%y-f.a+k'A gO
µ±È»"#!"Ò²¿ÉÒÔ±»ºöÂÔ,²»¹ýÕâÑùÄãµÄ½Å±¾Îļþ¾ÍÖ»ÄÜÊÇһЩÃüÁîµÄ¼¯ºÏ,²»Äܹ»Ê¹ÓÃshellÄÚ½¨
9C _NO&dZJ.Q0x0µÄÖ¸ÁîÁË,Èç¹û²»ÄÜʹÓñäÁ¿µÄ»°,µ±È»ÕâÒ²¾ÍʧȥÁ˽ű¾±à³ÌµÄÒâÒåÁË.ľîìУ԰ BBS ÉçÇøQ4j;W.| uK

)s7kv'f p4cG#h0   ×¢Òâ:Õâ¸öÀý×Ó¹ÄÀøÄãʹÓÃÄ£¿é»¯µÄ·½Ê½À´±àд½Å±¾,ƽʱҲҪעÒâÊÕ¼¯Ò»Ð©ÁãËéµÄ´úÂë,
?1Y8[3c/XNsR0       ÕâЩÁãËéµÄ´úÂë¿ÉÄÜÓÃÔÚÄ㽫À´±àдµÄ½Å±¾ÖÐ.ÕâÑùÄã¾Í¿ÉÒÔͨ¹ýÕâЩ´úÂëÆ¬¶ÎÀ´¹¹Ä¾îìУ԰ BBS ÉçÇøq p%j4Q2S2T7pue
       ÔìÒ»¸ö½Ï´óµÄ¹¤³ÌÓÃÀý. ÒÔϱ߽ű¾×÷ΪÐò,À´²âÊԽű¾±»µ÷ÓõIJÎÊýÊÇ·ñÕýÈ·.
w2h#Vcv[&`0################################Start Script#######################################ľîìУ԰ BBS ÉçÇø2RY{ jQKH9s
1 E_WRONG_ARGS=65
y+kOzxD8N]02 script_parameters="-a -h -m -z"
6q?*I:q+?(d2QY-H[03 #                  -a = all, -h = help, µÈµÈ.ľîìУ԰ BBS ÉçÇø?r+?"G9J
4ľîìУ԰ BBS ÉçÇø[4tUqPn rE"sL7e
5 if [ $# -ne $Number_of_expected_args ]ľîìУ԰ BBS ÉçÇø+^{}zU2V n-O
6 then
\VSgOr1?V*q3X0V07   echo "Usage: `basename $0` $script_parameters"ľîìУ԰ BBS ÉçÇøH`.y EJ~w)|
8   # `basename $0`ÊÇÕâ¸ö½Å±¾µÄÎļþÃûľîìУ԰ BBS ÉçÇø b P"Cp+u4? dVh5Z
9   exit $E_WRONG_ARGSľîìУ԰ BBS ÉçÇø ^Xk9m{ T[P,G
10 fiľîìУ԰ BBS ÉçÇø,q&GOX n6_D q(O
################################End Script#########################################
v4~C]4iq0´ó¶àÊýÇé¿öÏÂ,ÄãÐèÒª±àдһ¸ö½Å±¾À´Ö´ÐÐÒ»¸öÌØ¶¨µÄÈÎÎñ,ÔÚ±¾ÕÂÖеÚÒ»¸ö½Å±¾¾ÍÊÇÒ»¸öÕâÑù
NIAB nA;sy0µÄÀý×Ó, È»ºóÄã»áÐÞ¸ÄËüÀ´Íê³ÉÒ»¸ö²»Í¬µÄ,µ«±È½ÏÏàËÆµÄÈÎÎñ.ÓñäÁ¿À´´úÌæÐ´ËÀµÄ³£Á¿,¾ÍÊÇľîìУ԰ BBS ÉçÇø"B#^ w,l \x
Ò»¸öºÃ·½·¨,½«Öظ´µÄ´úÂë·Åµ½Ò»¸öº¯ÊýÖÐ,Ò²ÊÇÒ»ÖÖºÃϰ¹ß.
/zhaj/w0
FVI9t:v0ľîìУ԰ BBS ÉçÇø;M ~OPq |tU
2.1 µ÷ÓÃÒ»¸ö½Å±¾Ä¾îìУ԰ BBS ÉçÇøzY*lxF7@!?
----------------ľîìУ԰ BBS ÉçÇøWW/I#|'\m
±àдÍê½Å±¾Ö®ºó,Äã¿ÉÒÔʹÓÃsh scriptname,[5]»òÕßbash scriptnameÀ´µ÷ÓÃËü.
OU!w#p'\#h~Y4s0(²»ÍƼöʹÓÃsht_T ^}-}$c0¸ü·½±ãµÄ·½·¨ÊÇÈýű¾±¾Éí¾Í¾ßÓпÉÖ´ÐÐȨÏÞ,ͨ¹ýchmodÃüÁî¿ÉÒÔÐÞ¸Ä.
T-j'p2S9B%b)b0ľîìУ԰ BBS ÉçÇø_"oBO0Vxp;[
±ÈÈç:
Jx:R&q2w0   chmod 555 scriptname (ÔÊÐíÈκÎÈ˶¼¾ßÓÐ ¿É¶ÁºÍÖ´ÐÐȨÏÞ) [6]  
pY3D4NTY0»ò:ľîìУ԰ BBS ÉçÇø,`'``K\0A_C
   chmod +rx scriptname (ÔÊÐíÈκÎÈ˶¼¾ßÓÐ ¿É¶ÁºÍÖ´ÐÐȨÏÞ)
bl~(?;QJ+j*]8Q0   chmod u+rx scriptname (Ö»¸ø½Å±¾µÄËùÓÐÕß ¿É¶ÁºÍÖ´ÐÐȨÏÞ)
K8F _;FPG#Z bf0ľîìУ԰ BBS ÉçÇøym$C.W(Pp ~
¼ÈÈ»½Å±¾ÒѾ­¾ßÓÐÁË¿ÉÖ´ÐÐȨÏÞ,ÏÖÔÚÄã¿ÉÒÔʹÓÃ./scriptname.[7]À´²âÊÔËüÁË.Èç¹ûÕâ¸ö½Å±¾Ä¾îìУ԰ BBS ÉçÇø#P%u _j'@s
ÒÔÒ»¸ö"#!"ÐпªÍ·,ÄÇô½Å±¾½«»áµ÷ÓúÏÊʵÄÃüÁî½âÊÍÆ÷À´ÔËÐÐ.
7?n9w5uL F0ľîìУ԰ BBS ÉçÇø?3D9We7TjYP
×îºóÒ»²½,Ôڽű¾±»²âÊÔºÍdebugÖ®ºó,Äã¿ÉÄÜÏë°ÑËüÒÆ¶¯µ½/usr/local/bin(µ±È»ÊÇÒÔrootÉí·Ý)
dng3r(z0,À´ÈÃÄãµÄ½Å±¾¶ÔËùÓÐÓû§¶¼ÓÐÓÃ.ÕâÑùÓû§¾Í¿ÉÒÔÖ±½ÓÇýű¾Ãû×ÖÀ´ÔËÐÐÁË.
$Q{wLDX!d7L0ľîìУ԰ BBS ÉçÇø;f:}7]^;v Z"h'PP
×¢ÒâÊÂÏî:
8z Q N0t'AUg7N{0[1]        ÄÇЩ¾ßÓÐUNIXζµÀµÄ½Å±¾(»ùÓÚ4.2BSD)ÐèÒªÒ»¸ö4×Ö½ÚµÄħ·¨Êý×Ö,ÔÚ#!ºó±ßÐèÒªÒ»¸öľîìУ԰ BBS ÉçÇøi| B!ry0g
       ¿Õ¸ñ#! /bin/sh.
2RV Og]a_}0[2]        ½Å±¾ÖеÄ#!ÐеÄ×îÖØÒªµÄÈÎÎñ¾ÍÊÇÃüÁî½âÊÍÆ÷(sh»òÕßbash).ÒòΪÕâÐÐÊÇÒÔ#¿ªÊ¼µÄ,ľîìУ԰ BBS ÉçÇøk2k WJ}&b'cx7Z
       µ±ÃüÁî½âÊÍÆ÷Ö´ÐÐÕâ¸ö½Å±¾µÄʱºò,»á°ÑËü×÷Ϊһ¸ö×¢ÊÍÐÐ.µ±È»,ÔÚÕâ֮ǰ,ÕâÐÐÓï¾äľîìУ԰ BBS ÉçÇø&GZ D/JXI"m
       ÒѾ­Íê³ÉÁËËüµÄÈÎÎñ,¾ÍÊǵ÷ÓÃÃüÁî½âÊÍÆ÷.ľîìУ԰ BBS ÉçÇøNF#a usEY

4E*t|:cT k"\j1H{&F%}0       Èç¹ûÔڽű¾µÄÀï±ß»¹ÓÐÒ»¸ö#!ÐÐ,ÄÇôbash½«°ÑËüÈÏΪÊÇÒ»¸öÒ»°ãµÄ×¢ÊÍÐÐ.ľîìУ԰ BBS ÉçÇø.x^"~Y:rJr#[!kr
        1 #!/bin/bash
HD.wx.Dz"I v)]"V0        2ľîìУ԰ BBS ÉçÇø2n.| w7cE(p,dq"TH
        3 echo "Part 1 of script."
V9~ i7S'T)G0        4 a=1
%{^7i0i7i&C C?p0        5
-B$|I R&X2FC0        6 #!/bin/bashľîìУ԰ BBS ÉçÇøpn:}\ f
        7 # Õ⽫²»»á¿ªÊ¼Ò»¸öнű¾.
4KX2Cxpdp0        8ľîìУ԰ BBS ÉçÇøX)C^g@)O LuG7N
        9 echo "Part 2 of script."
DWL2D(ht8x n0       10 echo $a  # Value of $a stays at 1.ľîìУ԰ BBS ÉçÇø(Q4A$@o.^0h]J#Jx
[3]        ÕâÀï¿ÉÒÔÍæÒ»Ð©Ð¡¼¼ÇÉ.
t?dg ^&z w0        1 #!/bin/rm
&d*n;l @#|r0        2 # ×Ôɾ³ý½Å±¾.
'x;xM!g'B?7RK!c0        3
$c2M|,[6`^j0        4 # µ±ÄãÔËÐÐÕâ¸ö½Å±¾Ê±,»ù±¾ÉÏʲô¶¼²»»á·¢Éú...³ý·ÇÕâ¸öÎļþÏûʧ²»¼û.
ce P8\z1r t4x@0        5ľîìУ԰ BBS ÉçÇø)W4U ]S.q'N?
        6 WHATEVER=65ľîìУ԰ BBS ÉçÇø&a OH.[|-{8mcX@
        7ľîìУ԰ BBS ÉçÇø:X"v/p#A8f-`i
        8 echo "This line will never print (betcha!)."ľîìУ԰ BBS ÉçÇøg8L s/JBg@s(V
        9ľîìУ԰ BBS ÉçÇø FE @U zv%W4W6\ D
       10 exit $WHATEVER  # û¹ØÏµ,½Å±¾ÊDz»»áÔÚÕâÍ˳öµÄ.ľîìУ԰ BBS ÉçÇøQ'N'e^B|$m u1E
       µ±È»,Ä㻹¿ÉÒÔÊÔÊÔÔÚÒ»¸öREADMEÎļþµÄ¿ªÍ·¼ÓÉÏ#!/bin/more,²¢ÈÃËü¾ßÓÐÖ´ÐÐȨÏÞ.
f0`n2CI%gKod0       ½á¹û½«ÊÇÎĵµ×Ô¶¯Áгö×Ô¼ºµÄÄÚÈÝ.(Ò»¸öʹÓÃcatÃüÁîµÄhere document¿ÉÄÜÊÇÒ»¸öľîìУ԰ BBS ÉçÇøi1Rp I*Y^!B
       ¸üºÃµÄÑ¡Ôò,--¼ûExample 17-3).
7nO@L1|0[4]        ¿ÉÒÆÖ²µÄ²Ù×÷ϵͳ½Ó¿Ú,±ê×¼»¯ÀàUNIX²Ù×÷ϵͳµÄÒ»ÖÖ³¢ÊÔ.POSIX¹æ·¶¿ÉÒÔÔÚ
`2o} }H;jPlu0       http://www.opengroup.org/onlinepubs/007904975/toc.htmÖвéÔÄ.
9nJ,h0aZ[(`0[5]        Ð¡ÐÄ:ʹÓÃsh scriptnameÀ´µ÷Óýű¾µÄʱºò½«»á¹Ø±ÕһЩBashÌØ¶¨µÄÀ©Õ¹,½Å±¾¿ÉÄÜ
#C4j3d"OY%p0       Òò´Ë¶øµ÷ÓÃʧ°Ü.
\%L't"Pmy |h B;E B_0[6]        ½Å±¾ÐèÒª¶ÁºÍÖ´ÐÐȨÏÞ,ÒòΪshellÐèÒª¶ÁÕâ¸ö½Å±¾.
9cvw4` x0[7]        ÎªÊ²Ã´²»Ö±½ÓʹÓÃscriptnameÀ´µ÷Óýű¾?Èç¹ûÄ㵱ǰµÄĿ¼ÏÂ($PWD)ÕýºÃÓÐÄãÏëÒª
R;X1`)b8Y0       Ö´ÐеĽű¾,ΪʲôËüÔËÐв»ÁËÄØ?ʧ°ÜµÄÔ­ÒòÊÇ,³öÓÚ°²È«¿¼ÂÇ,µ±Ç°Ä¿Â¼²¢Ã»Óб»Ä¾îìУ԰ BBS ÉçÇø6| ~"k#?A/skam
       ¼ÓÔÚÓû§µÄ$PATH±äÁ¿ÖÐ.Òò´Ë,ÔÚµ±Ç°Ä¿Â¼Ïµ÷Óýű¾±ØÐëʹÓÃ./scriptnameÕâÖÖľîìУ԰ BBS ÉçÇøuq&@J,]o
       ÐÎʽ.
l ^8P,h4ee"KS+mK8z0
BZ~Y#l0ľîìУ԰ BBS ÉçÇøT,KXf4d1~cM m
2.2 ³õ²½µÄÁ·Ï°Ä¾îìУ԰ BBS ÉçÇø O$Bu-u*`h G
--------------ľîìУ԰ BBS ÉçÇøkUVf+Ky h
1. ϵͳ¹ÜÀíÔ±¾­³£»áΪÁË×Ô¶¯»¯Ò»Ð©³£ÓõÄÈÎÎñ¶ø±àд½Å±¾.¾Ù³ö¼¸¸öÕâÖÖÓÐÓõĽű¾µÄʵÀý.ľîìУ԰ BBS ÉçÇøN]e5@] w
2. ±àдһ¸ö½Å±¾,ÏÔʾʱ¼äºÍÈÕÆÚ,ÁгöËùÓеĵǼÓû§,ÏÔʾϵͳµÄ¸üÐÂʱ¼ä.È»ºóÕâ¸ö½Å±¾
.F U9S4E4~G9[p0  ½«»á°ÑÕâЩÄÚÈݱ£´æµ½Ò»¸ölog fileÖÐ.ľîìУ԰ BBS ÉçÇø"o?S:g7XoV
ľîìУ԰ BBS ÉçÇøOI\0tX
ľîìУ԰ BBS ÉçÇø:gc.o!j"w _A-K P?
µÚ¶þ²¿·Ö    »ù±¾Ä¾îìУ԰ BBS ÉçÇøVL`a/i
++++++++++++++++
P1K2B H&M0ľîìУ԰ BBS ÉçÇø`%EQe.ZLI
µÚ3ÕÂ    ÌØÊâ×Ö·û
$n8VL?2Vz-@SP0================
;zn%]6L!kLp0ľîìУ԰ BBS ÉçÇø M3m[J:q u\
#        ×¢ÊÍ,ÐÐÊ×ÒÔ#¿ªÍ·Îª×¢ÊÍ(#!ÊǸöÀýÍâ).ľîìУ԰ BBS ÉçÇø])k)x6~:T
ľîìУ԰ BBS ÉçÇø%o@QF0P
       1 # This line is a comment.ľîìУ԰ BBS ÉçÇø^HN*[1h,Q0R+U?

9tG@l#t0       ×¢ÊÍÒ²¿ÉÒÔ´æÔÚÓÚ±¾ÐÐÃüÁîµÄºó±ß.ľîìУ԰ BBS ÉçÇøO9k }a1A4D.OL
ľîìУ԰ BBS ÉçÇøb.a([2f9B e!DH^U
       1 echo "A comment will follow." # ×¢ÊÍÔÚÕâÀïľîìУ԰ BBS ÉçÇø-^&N-RJ \AU
       2 #                            ^ ×¢Òâ#ǰ±ßµÄ¿Õ°×
UMy8{)n'D:kh.z0ľîìУ԰ BBS ÉçÇø#A.J'BH o%aqC
       ×¢ÊÍÒ²¿ÉÒÔÔÚ±¾Ðпհ׵ĺó±ß.
+r o)L'^ME2J;T#y0ľîìУ԰ BBS ÉçÇøC2`2p:pc?}*OrL
       1     # A tab precedes this comment.
;p2juvKaeX/? `0
7r1Bf+?/[0       ×¢Òâ:ÃüÁîÊDz»ÄܸúÔÚͬһÐÐÉÏ×¢Ê͵ĺó±ßµÄ,ûÓа취,ÔÚͬһÐÐÉÏ,×¢Ê͵ĺó±ßÏëľîìУ԰ BBS ÉçÇø Z U{ WQ0]9r6O
       ÒªÔÙʹÓÃÃüÁî,Ö»ÄÜÁíÆðÒ»ÐÐ.ľîìУ԰ BBS ÉçÇøV+\M)i4Fj
       µ±È»,ÔÚechoÃüÁîÖб»×ªÒåµÄ#ÊDz»ÄÜ×÷ΪעÊ͵Ä.
@/cw$[j6uGb6J \0       Í¬ÑùµÄ,#Ò²¿ÉÒÔ³öÏÖÔÚÌØ¶¨µÄ²ÎÊýÌæ»»½á¹¹ÖлòÕßÊÇÊý×Ö³£Á¿±í´ïʽÖÐ.
M1C(ZjMr1D/P:x4J0ľîìУ԰ BBS ÉçÇø!D1{Ia.B
       1 echo "The # here does not begin a comment."
!jOJ^Kt0       2 echo 'The # here does not begin a comment.'
$v|$YJ L"Z0       3 echo The \# here does not begin a comment.
L*]:\ \-mx0       4 echo The # ÕâÀ↑ʼһ¸ö×¢ÊÍ
M;UStx/P`5|0       5
%r:t9m/bZG6F5ud!v[0u0       6 echo ${PATH#*:}       # ²ÎÊýÌæ»»,²»ÊÇÒ»¸ö×¢ÊÍ
c,c9qMM0f6n e4Q1xe0       7 echo $(( 2#101011 ))  # ÊýÖÆ×ª»»,²»ÊÇÒ»¸ö×¢ÊÍľîìУ԰ BBS ÉçÇø h*e0Q$\;M})I ^
       8
_6xu?"K|Xh*Dd V0       9 # Thanks, S.C.ľîìУ԰ BBS ÉçÇøqGyx"^4L;V Z|
ľîìУ԰ BBS ÉçÇø8R@*Mj6E(@Jz
       ±ê×¼µÄÒýÓúÍתÒå×Ö·û("'\)¿ÉÒÔÓÃÀ´×ªÒå#
-k]:dWb0
R5qw kH|xj0F0;        ÃüÁî·Ö¸ô·û,¿ÉÒÔÓÃÀ´ÔÚÒ»ÐÐÖÐÀ´Ð´¶à¸öÃüÁî.
5tCk` nf{&O,eb0ľîìУ԰ BBS ÉçÇøDm9P0\]/w!n0J
       1 echo hello; echo there
%P5i7e-j$]&m$L/M4x0       2ľîìУ԰ BBS ÉçÇø`'Yv0NvG!D-QAE S w
       3ľîìУ԰ BBS ÉçÇøP4jz"\X&g&Z Go-g
       4 if [ -x "$filename" ]; then    # ×¢Òâ:"if"ºÍ"then"ÐèÒª·Ö¸ôľîìУ԰ BBS ÉçÇø5H4|V(RC8r)p Gm9WY P
       5                                # Ϊɶ?
Bo^(O4Z [`.\.U;V0       6   echo "File $filename exists."; cp $filename $filename.bakľîìУ԰ BBS ÉçÇø2c&L`P lmS \
       7 else
jE_Q-UI0       8   echo "File $filename not found."; touch $filenameľîìУ԰ BBS ÉçÇø;[0Cc[Ity6P
       9 fi; echo "File test complete."ľîìУ԰ BBS ÉçÇøqT7sT5U%hM8H

~*Uh(J5DoNy0       ÓÐʱºòÐèҪתÒå
I!fF6M h}Z/S0ľîìУ԰ BBS ÉçÇø8fV#W4p'aK k'f+r
;;        ÖÕÖ¹"case"Ñ¡Ïî.
7N%eyrosY+J#w0ľîìУ԰ BBS ÉçÇø'Ep&lAGYys c
       1 case "$variable" in
if*^,KJx5J,m0       2 abc)  echo "\$variable = abc" ;;
6gM&v{'V-L0       3 xyz)  echo "\$variable = xyz" ;;ľîìУ԰ BBS ÉçÇøzB2jd3it/H
       4 esac
2Cd;\Z~5G0ľîìУ԰ BBS ÉçÇø2M n9W}-jc
.        .ÃüÁîµÈ¼ÛÓÚsourceÃüÁî(¼ûExample 11-20).ÕâÊÇÒ»¸öbashµÄÄÚ½¨ÃüÁî.ľîìУ԰ BBS ÉçÇøep1S+hj u9t!Gwc;a,M
ľîìУ԰ BBS ÉçÇøN'X)RP9P4C;V
.        .×÷ΪÎļþÃûµÄÒ»²¿·Ö.Èç¹û×÷ΪÎļþÃûµÄǰ׺µÄ»°,ÄÇôÕâ¸öÎļþ½«³ÉΪÒþ²ØÎļþ.ľîìУ԰ BBS ÉçÇøp.U1`[8H b,e0~
       ½«²»±»lsÃüÁîÁгö.
)a(]:nn(?D}0
:Si8WOL C}E[4Bc0       bash$ touch .hidden-fileľîìУ԰ BBS ÉçÇø:E_4c mUc
       bash$ ls -l          
t;I:J z:g9Zi0       total 10
0G4_F*\ ^.Kw0       -rw-r--r--    1 bozo      4034 Jul 18 22:04 data1.addressbookľîìУ԰ BBS ÉçÇø:Z'aH,?x*ko!m;dt
       -rw-r--r--    1 bozo      4602 May 25 13:58 data1.addressbook.bakľîìУ԰ BBS ÉçÇøF)L4t#}i X"BP
       -rw-r--r--    1 bozo       877 Dec 17  2000 employment.addressbookľîìУ԰ BBS ÉçÇøSwLrE
       Ä¾îìУ԰ BBS ÉçÇø%i%Z a[uF)R[
       
C F|enC-~A#X&d-d$T0       bash$ ls -al          Ä¾îìУ԰ BBS ÉçÇø6F I/[1F _S
       total 14ľîìУ԰ BBS ÉçÇøDBrWe:g~i T
       drwxrwxr-x    2 bozo  bozo      1024 Aug 29 20:54 ./ľîìУ԰ BBS ÉçÇø_(ozAt Xz3M'C
       drwx------   52 bozo  bozo      3072 Aug 29 20:51 ../ľîìУ԰ BBS ÉçÇøH t8}3I)T8SbaF2]%b]
       -rw-r--r--    1 bozo  bozo      4034 Jul 18 22:04 data1.addressbookľîìУ԰ BBS ÉçÇø+m.N(d J.C}q
       -rw-r--r--    1 bozo  bozo      4602 May 25 13:58 data1.addressbook.bakľîìУ԰ BBS ÉçÇøt!A6})}U
       -rw-r--r--    1 bozo  bozo       877 Dec 17  2000 employment.addressbook
pe*a)k'e*CDm3i[0       -rw-rw-r--    1 bozo  bozo         0 Aug 29 20:54 .hidden-file
G _;RhxA^x0ľîìУ԰ BBS ÉçÇø;y3`*{ p6K J
       .ÃüÁîÈç¹û×÷ΪĿ¼ÃûµÄÒ»²¿·ÖµÄ»°,ÄÇô.±í´ïµÄÊǵ±Ç°Ä¿Â¼.".."±íʾÉÏÒ»¼¶Ä¿Â¼.
8s&y0L S)~{y0
8\u7sUTlTC4y n0       bash$ pwdľîìУ԰ BBS ÉçÇø(\ a~_.oa?U
       /home/bozo/projectsľîìУ԰ BBS ÉçÇø(JKi8P-eTVQ
ľîìУ԰ BBS ÉçÇø&x9e Y5JS9A
       bash$ cd .
itD"i*k5q!S0       bash$ pwd
,]\ ycx%_[7I0       /home/bozo/projectsľîìУ԰ BBS ÉçÇø0s'v ^ N1OPF
ľîìУ԰ BBS ÉçÇø*G(i2aA4JB
       bash$ cd ..ľîìУ԰ BBS ÉçÇøl!SA}5YS
       bash$ pwdľîìУ԰ BBS ÉçÇøT4c.E&XG
       /home/bozo/ľîìУ԰ BBS ÉçÇø |P.]4T4q;|} a
ľîìУ԰ BBS ÉçÇø1^Q!@2}"?2Sb'gqE.q
       .ÃüÁî¾­³£×÷Ϊһ¸öÎļþÒÆ¶¯ÃüÁîµÄÄ¿µÄµØ.ľîìУ԰ BBS ÉçÇøL6y1Q#g)N"a x

(N7iy'_ dqQ`)D$f0       bash$ cp /home/bozo/current_work/junk/* .ľîìУ԰ BBS ÉçÇø$eg5]Dm.d$F._1t.Z kk

&T mR | a0.        .×Ö·ûÆ¥Åä,ÕâÊÇ×÷ΪÕýÔò±í´ïÊǵÄÒ»²¿·Ö,ÓÃÀ´Æ¥ÅäÈκεĵ¥¸ö×Ö·û.ľîìУ԰ BBS ÉçÇø3HwEHN7tk de-Y
ľîìУ԰ BBS ÉçÇø3D.F)}j7Zj)u
"        ²¿·ÖÒýÓÃ."STRING"×èÖ¹ÁËÒ»²¿·ÖÌØÊâ×Ö·û,¾ßÌå¼ûµÚ5ÕÂ.ľîìУ԰ BBS ÉçÇøj4u+w4p R
ľîìУ԰ BBS ÉçÇøs(w.qG0`
'        È«ÒýÓÃ. 'STRING' ×èÖ¹ÁËÈ«²¿ÌØÊâ×Ö·û,¾ßÌå¼ûµÚ5ÕÂ.
F:?1eNI0
$Q*kx3o2d lHl0,        ¶ººÅÁ´½ÓÁËһϵÁеÄËãÊõ²Ù×÷,ËäÈ»Àï±ßËùÓеÄÄÚÈݶ¼±»ÔËÐÐÁË,µ«Ö»ÓÐ×îºóÒ»ÏľîìУ԰ BBS ÉçÇøMtxt\/s] b
       ·µ»Ø.
8Y zl c U5K0ľîìУ԰ BBS ÉçÇø1ALB%IJ7}){]N;Lr
       Èç:
7a8]$C9o,qJ0       1 let "t2 = ((a = 9, 15 / 3))"  # Set "a = 9" and "t2 = 15 / 3"
,~s,r.L`0ľîìУ԰ BBS ÉçÇø2H"wa3rQ-X
\        ×ªÒå×Ö·û,Èç\XµÈ¼ÛÓÚ"X"»ò'X',¾ßÌå¼ûµÚ5ÕÂ.
!{|+fnEA%z1jG0ľîìУ԰ BBS ÉçÇø7uJG[0f!S%\ c
/        ÎļþÃû·¾¶·Ö¸ô·û.»òÓÃÀ´×ö³ý·¨²Ù×÷.
x(d$vw~l0
D7}s:N Ki#^[0`        ºóÖÃÒýÓÃ,ÃüÁîÌæ»»,¾ßÌå¼ûµÚ14ÕÂľîìУ԰ BBS ÉçÇø ? oZV7Ci W^2|7l

B6P8?1[b0:        ¿ÕÃüÁî,µÈ¼ÛÓÚ"NOP"(no op,Ò»¸öʲôҲ²»¸ÉµÄÃüÁî).Ò²¿ÉÒÔ±»ÈÏΪÓëshellµÄÄÚ½¨ÃüÁî(true)×÷ÓÃÏàͬ.":"ÃüÁîÊÇһľîìУ԰ BBS ÉçÇød*L&k3n,z
       ¸öbashµÄÄÚ½¨ÃüÁî,ËüµÄ·µ»ØÖµÎª0,¾ÍÊÇshell·µ»ØµÄtrue.
}'Di%ewXc/O;W0
_eh*[8bb{,j$J0       Èç:ľîìУ԰ BBS ÉçÇø1p.@ECS9T]9Q
       1 :ľîìУ԰ BBS ÉçÇø6S2T2vL4\%t
       2 echo $?   # 0
~y O{ f,ib\0ľîìУ԰ BBS ÉçÇøDT%f%j{C
       ËÀÑ­»·,Èç:ľîìУ԰ BBS ÉçÇø5Ml4I3h-y3^

}R/t@5r,s0        1 while :ľîìУ԰ BBS ÉçÇøf;@O3X5HAl6iPx#\
        2 doľîìУ԰ BBS ÉçÇøiO,J)t&r/Q
        3    operation-1
"Ni'Z"UW M O2F;_0        4    operation-2ľîìУ԰ BBS ÉçÇørR R4s]*Nh)j
        5    ...ľîìУ԰ BBS ÉçÇø\O:`{2n+J*uHa
        6    operation-n
IJ+aC:P/F"yZ0        7 doneľîìУ԰ BBS ÉçÇø@8])T l$[
        8
\sN6Z7t4D4? B]0        9 # ÓëϱßÏàͬ:ľîìУ԰ BBS ÉçÇø$s^#\4\ kr&Y
       10 #    while trueľîìУ԰ BBS ÉçÇø p"O)\:E.Dh,v8o%r
       11 #    do
jqG$W?0       12 #      ...
D"E[7E4i7W0       13 #    done
"A+}n.~Q2X0ľîìУ԰ BBS ÉçÇø.v\ c:f4}~ U;W$z"`
       ÔÚif/thenÖеÄռλ·û,Èç:ľîìУ԰ BBS ÉçÇø0h4~;E*m1v%T/YJ"V
       1 if condition
d5[l4\k[;~0       2 then :   # ʲô¶¼²»×ö,Òý³ö·ÖÖ§.
*nz:L4W x o]5gAC0       3 elseľîìУ԰ BBS ÉçÇø yxy5bj0WN?
       4    take-some-actionľîìУ԰ BBS ÉçÇø a"q$[+cP"[;}ry
       5 fi
dC,]q;Cc7M0ľîìУ԰ BBS ÉçÇøDA;{3o*zd9RbAm
       ÔÚÒ»¸ö2ÔªÃüÁîÖÐÌṩһ¸öռλ·û,¾ßÌå¼ûExample 8-2,ºÍ"ĬÈϲÎÊý".Èç:
7e;sFU4t(T;j I&\0       1 : ${username=`whoami`}
hf+[5I7UP+G#XX%Jk0       2 # ${username=`whoami`}   Èç¹ûûÓÐ":"µÄ»°,½«¸ø³öÒ»¸ö´íÎó,³ý·Ç"username"ÊÇľîìУ԰ BBS ÉçÇø:\Vkd#M
       3 #                        ¸öÃüÁî
v nDJ&n/L-s,A0       ÔÚhere documentÖÐÌṩһ¸öռλ·û,¼ûExample 17-10.ľîìУ԰ BBS ÉçÇø y;Fz0@C@;PN
ľîìУ԰ BBS ÉçÇø\W!c;W^h*kd8}
       Ê¹ÓÃ"²ÎÊýÌæ»»"À´ÆÀ¹À×Ö·û´®±äÁ¿(¼ûExample 9-14).Èç:ľîìУ԰ BBS ÉçÇø(?1RI^Pz [5ey!@(~
       1 : ${HOSTNAME?} ${USER?} ${MAIL?}
)X k4^!ZFb_0       2 #     Èç¹ûÒ»¸ö»ò¶à¸ö±ØÒªµÄ»·¾³±äÁ¿Ã»±»ÉèÖõϰ,
%V,hQf(G:[h8F'v*Em0       3 #+ ¾Í´òÓ¡´íÎóÐÅÏ¢.
tMI"T'^]C0G0ľîìУ԰ BBS ÉçÇøam}-k FNW
       "±äÁ¿À©Õ¹/×Ó´®Ìæ»»"ľîìУ԰ BBS ÉçÇø-sT%`)`'i0dqdv
       ÔÚºÍ > (ÖØ¶¨Ïò²Ù×÷·û)½áºÏʹÓÃʱ,°ÑÒ»¸öÎļþ½Ø¶Ïµ½0³¤¶È,ûÓÐÐÞ¸ÄËüµÄȨÏÞ.ľîìУ԰ BBS ÉçÇø8N-Ar$T!Xo
       Èç¹ûÎļþÔÚ֮ǰ²¢²»´æÔÚ,ÄÇô¾Í´´½¨Ëü.Èç:
7}u2YX K U#i+]|0       1 : > data.xxx        #Îļþ"data.xxx"ÏÖÔÚ±»Çå¿ÕÁË.
W6{+T'SOj*@ _ YQG0       2
bR8kIZ_0       3 #Óë cat /dev/null >data.xxx µÄ×÷ÓÃÏàͬ
a^R6{L0       4 #È»¶ø,Õâ²»»á²úÉúÒ»¸öеĽø³Ì,ÒòΪ":"ÊÇÒ»¸öÄÚ½¨ÃüÁî.ľîìУ԰ BBS ÉçÇø ~*M(i*J!~8o1jm
       ¾ßÌå²Î¼ûExample 12-14.
gn8e*|Q0ľîìУ԰ BBS ÉçÇøm"w%P'\7`P"j
       ÔÚºÍ>>ÖØ¶¨Ïò²Ù×÷·û½áºÏʹÓÃʱ,½«²»»á¶ÔÏëÒª¸½¼ÓµÄÎļþ²úÉúÈκÎÓ°Ïì.
L"D M+GJW A0       Èç¹ûÎļþ²»´æÔÚ,½«´´½¨.ľîìУ԰ BBS ÉçÇø5e)O6f Q/W1TA^P
       ×¢Òâ: ÕâÖ»ÊÊÓÃÓÚÕý¹æÎļþ,¶ø²»ÊǹܵÀ,·ûºÅÁ¬½Ó,ºÍÄ³Ð©ÌØÊâÎļþ.ľîìУ԰ BBS ÉçÇø)Wty%^"L%R5J?P

8h0Yd nuR0       Ò²¿ÉÄÜÓÃÀ´×÷ΪעÊÍÐÐ,ËäÈ»ÎÒÃDz»ÍƼöÕâô×ö.ʹÓÃ#À´×¢Ê͵ϰ,½«¹Ø±ÕÊ£ÓàÐеÄ
*u\k"l~*Fq0       ´íÎó¼ì²é,ËùÒÔ¿ÉÒÔÔÚ×¢ÊÍÐÐÖÐдÈκζ«Î÷.È»¶ø,ʹÓÃ:µÄ»°½«²»»áÕâÑù.Èç:ľîìУ԰ BBS ÉçÇø2L1m}8V*m5J
       1 : This is a comment thar generates an error,(if [ $x -eq 3] ).
2M:X[&xXE-Y0h'_0Y0ľîìУ԰ BBS ÉçÇø9Ktd7y-Ob^c`1^q
       ":"»¹ÓÃÀ´ÔÚ/etc/passwdºÍ$PATH±äÁ¿ÖÐÓÃÀ´×ö·Ö¸ô·û.
"mDF?)Y0       bash$    echo $PATHľîìУ԰ BBS ÉçÇø R4M!q*M[R+X A
       /usr/local/bin:/bin:/usr/X11R6/bin:/sbin:/usr/sbin:/usr/games
w)dV#A7G0!        È¡·´²Ù×÷·û,½«·´×ª"Í˳ö״̬"½á¹û,(¼ûExample 6-2).Ò²»á·´×ªtest²Ù×÷·ûµÄÒâÒå.±È
+gA`(W9d0       ÈçÐÞ¸Ä=Ϊ!=.!²Ù×÷ÊÇBashµÄÒ»¸ö¹Ø¼ü×Ö.ľîìУ԰ BBS ÉçÇø$z%pB8[-m@
ľîìУ԰ BBS ÉçÇøsyP2C-@CF'h
       ÔÚÒ»¸ö²»Í¬µÄÉÏÏÂÎÄÖÐ,!Ò²»á³öÏÖÔÚ"¼ä½Ó±äÁ¿ÒýÓÃ"¼ûExample 9-22.
B'o of$Io6Pu.}0ľîìУ԰ BBS ÉçÇø5d6}m0C w*sb8R5b N3~8^
       ÔÚÁíÒ»ÖÖÉÏÏÂÎÄÖÐ,!»¹ÄÜ·´×ªbashµÄ"history mechanism"(¼û¸½Â¼J ÀúÊ·ÃüÁî)
9l/|9W8BG}_0       ÐèҪעÒâµÄÊÇ,ÔÚÒ»¸ö½Å±¾ÖÐ,"history mechanism"ÊDZ»½ûÓõÄ.
[RD }nk KK0
XVKLwwdzx0*        ÍòÄÜÆ¥Åä×Ö·û,ÓÃÓÚÎļþÃûÆ¥Åä(Õâ¸ö¶«Î÷ÓиöרÓÐÃû´Ê½Ðfile globbing),»òÕßÊÇÕýÔòľîìУ԰ BBS ÉçÇøS1D0k3p%Tc
       ±í´ïʽÖÐ.×¢Òâ:ÔÚÕýÔò±í´ïʽƥÅäÖеÄ×÷ÓúÍÔÚÎļþÃûÆ¥ÅäÖеÄ×÷ÓÃÊDz»Í¬µÄ.
$Z9BQ,dh(iX(|c0       bash$ echo *ľîìУ԰ BBS ÉçÇøo.},~0dyOtt?N&d
       abs-book.sgml add-drive.sh agram.sh alias.sh
/\ ~ }\1H+@ I1?j0UVf0*        Êýѧ³Ë·¨.
l"\H:TDd R1Nr0       **ÊÇÃÝÔËËã.ľîìУ԰ BBS ÉçÇøt3N*Bad5veX
?        ²âÊÔ²Ù×÷.ÔÚÒ»¸öÈ·¶¨µÄ±í´ïʽÖÐ,ÓÃ?À´²âÊÔ½á¹û.
p.v lm` yp0       (())½á¹¹¿ÉÒÔÓÃÀ´×öÊýѧ¼ÆËã»òÕßÊÇдc´úÂë,ÄÇ?¾ÍÊÇcÓïÑÔµÄ3Ôª²Ù×÷·ûµÄ
*gfo'O _F,PL0       Ò»¸ö.
m_&u\1i7?0       ÔÚ"²ÎÊýÌæ»»"ÖÐ,?²âÊÔÒ»¸ö±äÁ¿ÊÇ·ñ±»setÁË.ľîìУ԰ BBS ÉçÇøq~%Gq)h1xU
?        ÔÚfile globbingÖкÍÔÚÕýÔò±í´ïʽÖÐÒ»ÑùÆ¥ÅäÈÎÒâµÄµ¥¸ö×Ö·û.
h b X~3a&bo0
h/Qtk$ew"K%w0$        ±äÁ¿Ìæ»»
h({m8G'z;]0R*H0       1 var1=5
A)\S~r!C0       2 var2=23skidooľîìУ԰ BBS ÉçÇø.MV3UDH.d1Gz1M9e
       3
O-O&[#[:ju]D5p0       4 echo $var1     # 5
I$B4fl;^M0       5 echo $var2     # 23skidooľîìУ԰ BBS ÉçÇø0H's-d;C wHq
$        ÔÚÕýÔò±í´ïʽÖÐ×÷ΪÐнáÊø·û.
(m @.zG LJD2Q0${}        ²ÎÊýÌæ»»,¼û9.3½Ú.
r7I-AG8}*J0$*,$@    Î»ÖòÎÊýľîìУ԰ BBS ÉçÇø*l'K+_$`R.By
$?        Í˳ö״̬±äÁ¿.$?±£´æÒ»¸öÃüÁî/Ò»¸öº¯Êý»òÕ߽ű¾±¾ÉíµÄÍ˳ö״̬.ľîìУ԰ BBS ÉçÇø Ua7@leo@lG6I7V O
$$        ½ø³ÌID±äÁ¿.Õâ¸ö$$±äÁ¿±£´æÔËÐнű¾½ø³ÌIDľîìУ԰ BBS ÉçÇø5J%s*K1Z3`\;y.u7_ P
()        ÃüÁî×é.Èç:ľîìУ԰ BBS ÉçÇøv4MD.Zk:?:{E!x
       1 (a=hello;echo $a)
U{#~;K4s`0       ×¢Òâ:ÔÚ()ÖеÄÃüÁîÁбí,½«×÷Ϊһ¸ö×ÓshellÀ´ÔËÐÐ.ľîìУ԰ BBS ÉçÇøb!r;_-K&vGY(X!{m
       ÔÚ()ÖеıäÁ¿,ÓÉÓÚÊÇÔÚ×ÓshellÖÐ,ËùÒÔ¶ÔÓڽű¾Ê£ÏµIJ¿·ÖÊDz»¿ÉÓõÄ.ľîìУ԰ BBS ÉçÇøeI%a!j7s7{6E
       Èç:
!k~8d%|9a wT0       1 a=123ľîìУ԰ BBS ÉçÇøa[I~P XW%W4bce
       2 ( a=321; )          Ä¾îìУ԰ BBS ÉçÇø4f@#Lt[G
       3ľîìУ԰ BBS ÉçÇøf@H3N \8h'uu ~
       4 echo "a = $a"   # a = 123
._ iE8xN W0mk$z0       5 # ÔÚÔ²À¨ºÅÖÐa±äÁ¿,¸üÏñÊÇÒ»¸ö¾Ö²¿±äÁ¿.ľîìУ԰ BBS ÉçÇøY M#m{ta5h
ľîìУ԰ BBS ÉçÇøB4@$f'v,|b
       ÓÃÔÚÊý×é³õʼ»¯,Èç:
%@caJ-cV`V(s0       1 Array=(element1,element2,element3)
QW6O.VE:Q0ľîìУ԰ BBS ÉçÇø/T+PIjW9G;u8g
{xxx,yyy,zzz...}
C3~aJ]Q0       ´óÀ¨ºÅÀ©Õ¹,Èç:
h$x E`{*O:iz@0       1 cat {file1,file2,file3} > combined_file
0z#d:JrR1Zu6^ We;R0       2 # °Ñfile1,file2,file3Á¬½ÓÔÚÒ»Æð,²¢ÇÒÖØ¶¨Ïòµ½combined_fileÖÐ.ľîìУ԰ BBS ÉçÇø.wN9X9z1p;GjX2b
       3
0vg1S?eJ!h0       4ľîìУ԰ BBS ÉçÇøO~;}"p8? o[{
       5 cp file22.{txt,backup}ľîìУ԰ BBS ÉçÇø aYzX;h5v
       6 # ¿½±´"file22.txt" µ½"file22.backup"ÖÐľîìУ԰ BBS ÉçÇøE u?1G3b4H2Y"\

^-M&?lt+]"q8J)K(oV0       Ò»¸öÃüÁî¿ÉÄÜ»á¶Ô´óÀ¨ºÅÖеÄÒÔ¶ººÅ·Ö¸îµÄÎļþÁбíÆð×÷ÓÃ[1]. file globbing½«¶Ô
7z|4K0|+isY7b0       ´óÀ¨ºÅÖеÄÎļþÃû×÷À©Õ¹.ľîìУ԰ BBS ÉçÇøQpi6|?0]3o
       ×¢Òâ: ÔÚ´óÀ¨ºÅÖÐ,²»ÔÊÐíÓпհ×,³ý·ÇÕâ¸ö¿Õ°×ÊÇÓÐÒâÒåµÄ.ľîìУ԰ BBS ÉçÇø;v;W,Z2Z#T7MyS s
       echo {file1,file2}\ :{\ A," B",' C'}
\?+}D_0       file1 : A file1 : B file1 : C file2 : A file2 : B file2 : CľîìУ԰ BBS ÉçÇølYB$I#|S
{}        ´úÂë¿é.ÓÖ±»³ÆÎªÄÚ²¿×é.ÊÂʵÉÏ,Õâ¸ö½á¹¹´´½¨ÁËÒ»¸öÄäÃûµÄº¯Êý.µ«ÊÇÓ뺯Êý²»Í¬µÄľîìУ԰ BBS ÉçÇø7~x bz:MX$r(@3Ds
       ÊÇ,ÔÚÆäÖÐÉùÃ÷µÄ±äÁ¿,¶ÔÓڽű¾ÆäËû²¿·ÖµÄ´úÂëÀ´Ëµ»¹ÊǿɼûµÄ.Èç:ľîìУ԰ BBS ÉçÇø@$sO{z\6K`
       bash$ľîìУ԰ BBS ÉçÇøD/U!UCb Io(R-|g
       {
p(B1_^@OeUyL0           local a;
9K'Nbc8]0           a= 123;ľîìУ԰ BBS ÉçÇøN$m#f0bC~$`
       }
6u_~{"GETR0       bashÖеÄlocalÉêÇëµÄ±äÁ¿Ö»Äܹ»ÓÃÔÚº¯ÊýÖÐ.ľîìУ԰ BBS ÉçÇøz3r~M)?N1pg{

j.H OSZc0       1 a=123ľîìУ԰ BBS ÉçÇø Tq7Z,T/D Z
       2 { a=321; }ľîìУ԰ BBS ÉçÇø&Z~4H2X&Cs z;{4v
       3 echo "a = $a"   # a = 321   (˵Ã÷ÔÚ´úÂë¿éÖжԱäÁ¿aËù×÷µÄÐÞ¸Ä,Ó°ÏìÁËÍâ±ßµÄ±äÁ¿a)
8l"gM6Qn[0       4
T dsVX1j0       5 # Thanks, S.C.ľîìУ԰ BBS ÉçÇøe7Y'zX fV X
ľîìУ԰ BBS ÉçÇøqRT qG0t
       Ï±ߵĴúÂëչʾÁËÔÚ{}½á¹¹ÖдúÂëµÄI/OÖØ¶¨Ïò.ľîìУ԰ BBS ÉçÇø1W'W.v ^D.b%C
ľîìУ԰ BBS ÉçÇø(?.m A R1`Y2d$c
Example 3-1. ´úÂë¿éºÍI/OÖØ¶¨ÏòľîìУ԰ BBS ÉçÇø3t~I~b+W1|iT
################################Start Script#######################################
qb9b2a/I1I01 #!/bin/bash
NnC.w@/BO,s02 # ´Ó /etc/fstabÖжÁÐÐľîìУ԰ BBS ÉçÇø.JH2B@x:Z,|s`o
3ľîìУ԰ BBS ÉçÇø3K `:W ^;N
4 File=/etc/fstabľîìУ԰ BBS ÉçÇøR.T,l5r;aCG t G M
5ľîìУ԰ BBS ÉçÇøM$u1kJr ^
6 {
5V D |']Kmxv07 read line1ľîìУ԰ BBS ÉçÇø B.}&~#y z*m7_'qH [/D
8 read line2ľîìУ԰ BBS ÉçÇø O8qCJU9F9X
9 }< $File
)K*M'b0fQt010
}K-io8xp D011 echo "First line in $File is:"ľîìУ԰ BBS ÉçÇø!|0]oC C3N6p&u
12 echo "$line1"ľîìУ԰ BBS ÉçÇø~u+pJ%e l nn@
13 echo
5\wc%Y%Rh C014 echo "Second line in $File is:"
%Z D(Xd]R015 echo "$line2"
H/Z@&k6T016ľîìУ԰ BBS ÉçÇø#a Dw[y Sew
17 exit 0
`8c8W p4Vw018ľîìУ԰ BBS ÉçÇøTQS%u^.RB
19 # ÏÖÔÚ,ÄãÔõô·ÖÎöÿÐеķָîÓòľîìУ԰ BBS ÉçÇø v UDM2c
20 # °µÊ¾: ʹÓà awk.ľîìУ԰ BBS ÉçÇø'_ |,]|3n
################################End Script#########################################
h2EFp u8e1no0ľîìУ԰ BBS ÉçÇøo{ p^M[*W
Example 3-2. ½«Ò»¸ö´úÂë¿éµÄ½á¹û±£´æµ½Îļþ
,~ _{~*u?,p0################################Start Script#######################################ľîìУ԰ BBS ÉçÇø iu`5K+bT
1 #!/bin/bash
%RA"J&W^l02 # rpm-check.sh
\ Mfj}&dP03ľîìУ԰ BBS ÉçÇø-q,Ilk.Q'G S-]n5b
4 # Õâ¸ö½Å±¾µÄÄ¿µÄÊÇΪÁËÃèÊö,Áбí,ºÍÈ·¶¨ÊÇ·ñ¿ÉÒÔ°²×°Ò»¸örpm°ü.
1W*uJ l,U!F05 # ÔÚÒ»¸öÎļþÖб£´æÊä³ö.
j7pT+b/g0qw&L06 #ľîìУ԰ BBS ÉçÇø-R fIg6vgN0v&Q
7 # Õâ¸ö½Å±¾Ê¹ÓÃÒ»¸ö´úÂë¿éÀ´Õ¹Ê¾Ä¾îìУ԰ BBS ÉçÇøp4II&lCG{
8
7V a4I0XP{X/x09 SUCCESS=0ľîìУ԰ BBS ÉçÇø T/Qoh"U6My)]}
10 E_NOARGS=65ľîìУ԰ BBS ÉçÇøKD%nH3T:s
11
1S&WcJ#C012 if [ -z "$1" ]ľîìУ԰ BBS ÉçÇøN ]5_*oO0Z;T8Vz9f
13 then
]2ZW)e!gY014   echo "Usage: `basename $0` rpm-file"
U]R k&d!j@015   exit $E_NOARGSľîìУ԰ BBS ÉçÇørS[ vG6e.Zdu
16 fi  
[2VU5w/s ^S9Z017ľîìУ԰ BBS ÉçÇøX#[2TC/\$JA
18 {ľîìУ԰ BBS ÉçÇø1[4W#kf(P q;j+\&MT.Q t
19   echo
}"J!Nwr8zO.B020   echo "Archive Description:"ľîìУ԰ BBS ÉçÇø(K,pO[f;_
21   rpm -qpi $1       # ²éѯ˵Ã÷ľîìУ԰ BBS ÉçÇøQ fh!v ~ `d-^c
22   echo
5VH\.y'X7W?*r023   echo "Archive Listing:"
G6^c!J;b024   rpm -qpl $1       # ²éѯÁбíľîìУ԰ BBS ÉçÇø:p(y-F"z!D8n:JE H
25   echoľîìУ԰ BBS ÉçÇøOrp;H!F,[M ~8?
26   rpm -i --test $1  # ²éѯrpm°üÊÇ·ñ¿ÉÒÔ±»°²×°
v*H]3KDtC027   if [ "$?" -eq $SUCCESS ]
&M ]3e |B]&},G7_P{028   then
v z'b)h+I Hz,O%q)ZM j029     echo "$1 can be installed."
c,CC#Tk%^y030   else
0qd#|,tf031     echo "$1 cannot be installed."
Ct3HO4u z4G032   fi  
scnG D1d033   echoľîìУ԰ BBS ÉçÇøV~r(B!i*{d
34 } > "$1.test"       # °Ñ´úÂë¿éÖеÄËùÓÐÊä³ö¶¼Öض¨Ïòµ½ÎļþÖÐ
cN/Lt]E035ľîìУ԰ BBS ÉçÇøm QVmr8S8gH
36 echo "Results of rpm test in file $1.test"ľîìУ԰ BBS ÉçÇø({O Co,N
37ľîìУ԰ BBS ÉçÇøS0?U}B~
38 # ²é¿´rpmµÄmanÒ³À´²é¿´rpmµÄÑ¡Ïî
l*U/MU|Iv H |^039
i'@0g P!z*xrg040 exit 0
r:Dc2X!| H_0################################End Script#########################################ľîìУ԰ BBS ÉçÇøx.r+Iw5a9W%N
       ×¢Òâ: Óë()ÖеÄÃüÁͬµÄÊÇ,{}ÖеĴúÂë¿é½«²»ÄÜÕý³£µØ¿ªÆôÒ»¸öÐÂshell.[2]ľîìУ԰ BBS ÉçÇøfdW2\!f-|)Qs1He
ľîìУ԰ BBS ÉçÇø!h5hT$r/OhNf a(i
{} \;    Â·¾¶Ãû.Ò»°ã¶¼ÔÚfindÃüÁîÖÐʹÓÃ.Õâ²»ÊÇÒ»¸öshellÄÚ½¨ÃüÁî.ľîìУ԰ BBS ÉçÇøEx!j"b U.z't-F:P T
       ×¢Òâ: ";"ÓÃÀ´½áÊøfindÃüÁîÐòÁеÄ-execÑ¡Ïî.
w8G T yA7Q)TUw"s2`0ľîìУ԰ BBS ÉçÇøo F$~h:d*N-~ `f1e
[]        test.
P.Nj^5L!Stv0S/_0       testµÄ±í´ïʽ½«ÔÚ[]ÖÐ.ľîìУ԰ BBS ÉçÇøv1n3P MU
       ÖµµÃ×¢ÒâµÄÊÇ[ÊÇshellÄÚ½¨testÃüÁîµÄÒ»²¿·Ö,²¢²»ÊÇ/usr/bin/testÖеÄÀ©Õ¹ÃüÁî
G5taUz4bU0       µÄÒ»¸öÁ¬½Ó.ľîìУ԰ BBS ÉçÇøfnk&Ow}!s3uL

u rH+k&eY5F1s0[[]]    test.
bP*DS(S0       test±í´ïʽ·ÅÔÚ[[]]ÖÐ.(shell¹Ø¼ü×Ö)
raIN p{e3^0       ¾ßÌå²é¿´[[]]½á¹¹µÄÌÖÂÛ.ľîìУ԰ BBS ÉçÇønr(e)pPt+s:Hnd

3b'{)Fb h gxH ~0[]        Êý×éÔªËØ
Q?/d^6R3`0       Array[1]=slot_1ľîìУ԰ BBS ÉçÇø,w0A ms0SW
       echo ${Array[1]}
)s;L)Hm#ZqJ@0
H!d4\8Ag-e0[]        ×Ö·û·¶Î§
1b-R2I(Xb s0       ÔÚÕýÔò±í´ïʽÖÐʹÓÃ,×÷Ϊ×Ö·ûÆ¥ÅäµÄÒ