°í±Þ Bash ½ºÅ©¸³ÆÃ ÇÏ¿ìÅõ

Bash ½© ½ºÅ©¸³ÆÃ °¡À̵å

Mendel Cooper

thegrendel@theriver.com

Â÷ÇöÁø

terminus@kldp.org

v0.2.15, 2001³â 2¿ù 4ÀÏ

ÀÌ ¹®¼­´Â ¹öÀü 0.2, ¸ÞÀÌÀú ¾÷µ¥ÀÌÆ®ÀÔ´Ï´Ù. ¹ö±×¸¦ Àâ°í ³»¿ëÀ» ´õ ºÙÀÌ°í ¿¹Á¦ ½ºÅ©¸³Æ®¸¦ Ãß°¡ÇÏ¿´½À´Ï´Ù. ¼öÁ¤µÈ °úÁ¤À» º¸½Ã·Á¸é NEWSÀ» Âü°í Çϼ¼¿ä.

ÀÌ ¹®¼­´Â Bash¿¡ ´ëÇÑ Æ©Å丮¾ó¹× ·¹ÆÛ·±½ºÀÔ´Ï´Ù. ¿©±â¼­´Â ¿©·¯ºÐÀÌ ½ºÅ©¸³ÆÃÀ̳ª ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇØ¼­ ¾î¶² »çÀü Áö½Äµµ ¾ø´Ù°í °¡Á¤À» ÇÕ´Ï´Ù¸¸, ±Ý¹æ Áß/°í±Þ ¼öÁØÀÇ ¸í·É¾îµéÀ» ¼Ò°³ ÇÒ °ÍÀÔ´Ï´Ù. ¿¬½À¹®Á¦¿Í ¾ÆÁÖ ÀÚ¼¼ÇÏ°Ô ÁÖ¼® ó¸®µÈ ¿¹Á¦µéÀº ´Éµ¿ÀûÀÎ µ¶ÀÚµéÀÇ Âü¿©¸¦ À¯µµÇÒ °ÍÀÔ´Ï´Ù. ÇÏÁö¸¸, ÀÌ ¹®¼­´Â ¾ÆÁ÷ ¿Ï¼ºµÇÁö ¾Ê¾Ò°í ÃÖÁ¾ ¸ñÀûÀº ¿©·¯ ³»¿ëµéÀ» Ãß°¡ÇÏ¿© LDP "°¡À̵å" Áï, ¿ÏÀüÇÑ Ã¥À» ¸¸µå´Â °ÍÀÔ´Ï´Ù.

ÀÌ ¹®¼­ÀÇ ÃֽйöÀüÀº ÀúÀÚÀÇ È¨ÆäÀÌÁö¿¡¼­ SGML ¼Ò½º¿Í º¯È¯µÈ HTML ÇüŸ¦ "Ÿ¸£º¼"·Î ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.

고친 과정
고침 0.12000³â 6¿ù 14ÀÏ고친이 mc
Ãʱ⠸±¸®Áî
고침 0.22000³â 10¿ù 30ÀÏ고친이 mc
¹ö±× ¼öÁ¤, ³»¿ë Ãß°¡, ¿¹Á¦ ½ºÅ©¸³Æ® Ãß°¡
고침 0.2.152001³â 2¿ù 4ÀÏ고친이 mc
¹ö±× ¼öÁ¤, ³»¿ë Ãß°¡, ¿¹Á¦ ½ºÅ©¸³Æ® Ãß°¡

차례
1. ¿Ö ½© ÇÁ·Î±×·¡¹ÖÀ» ÇØ¾ßÇÏÁÒ?
2. #!À¸·Î ½ÃÀÛÇϱâ
2.1. ½ºÅ©¸³Æ® ½ÇÇàÇϱâ
2.2. ½© ·¡ÆÛ, ÀÚ°¡ ½ÇÇà ½ºÅ©¸³Æ®(Shell wrapper, self-executing script)
3. Æ©Å丮¾ó / ·¹ÆÛ·±½º
3.1. Á¾·á¿Í Á¾·á »óÅÂ
3.2. ½© ½ºÅ©¸³Æ®ÀÇ Æ¯¼ö ¹®ÀÚµé
3.3. º¯¼ö¿Í ÀÎÀÚ ¼Ò°³
3.3.1. ÀÎÀÚ ¹Ù²Ù±â
3.4. Àοë(Quoting)
3.5. Å×½ºÆ®
3.5.1. ÆÄÀÏ Å×½ºÆ® ¿¬»êÀÚ
3.5.2. ºñ±³ ¿¬»êÀÚ(ÀÌÁø)
3.6. ¿¬»êÀÚ À̾߱â
3.6.1. ¿¬»êÀÚ
3.6.2. ¼ýÀÚ »ó¼ö
3.7. º¯¼ö ´Ù½Ã º¸±â
3.7.1. º¯¼ö ŸÀÔ ÁöÁ¤: declare ³ª typeset
3.7.2. º¯¼ö °£Á¢ ÂüÁ¶
3.7.3. $RANDOM: ¹«ÀÛÀ§ Á¤¼ö ¸¸µé±â
3.8. ·çÇÁ
3.9. ³»ºÎ ¸í·É¾î
3.9.1. ÀÛ¾÷ Á¦¾î ¸í·É¾îµé
3.10. ¿ÜºÎ ÇÊÅÍ, ÇÁ·Î±×·¥ ¸í·É¾î
3.11. ½Ã½ºÅÛ°ú °ü¸®ÀÚ¿ë ¸í·É¾îµé
3.12. ¿ªµû¿ÈÇ¥(backticks), `¸í·É¾î`
3.13. I/O ÀçÁöÇâ(I/O Redirection)
3.14. ½¬¾î°©½Ã´Ù.
3.15. Á¤±Ô Ç¥Çö½Ä(Regular Expressions)
3.15.1. Á¤±Ô Ç¥Çö½ÄÀÇ °£·«ÇÑ ¼Ò°³
3.15.2. ½ºÅ©¸³Æ®¿¡¼­ Á¤±ÔÇ¥Çö½Ä ¾²±â
3.16. ¼­ºê½©(Subshells)
3.17. Á¦ÇÑµÈ ½©(Restricted Shells)
3.18. ÇÁ·Î¼¼½º ¹Ù²Ù±â
3.19. ÇÔ¼ö
3.20. º°Äª(Aliases)
3.21. ¸®½ºÆ® »ý¼ºÀÚ(List Constructs)
3.22. ¹è¿­
3.23. ÆÄÀϵé
3.24. Here Documents
3.25. Á¦·Î¿Í ³Î(Of Zeros and Nulls)
3.26. µð¹ö±ë
3.27. ¿É¼Ç
3.28. ¸î °¡Áö ÁöÀúºÐÇÑ °Íµé(Gotchas)
3.29. ÀÚÁú±¸·¹ÇÑ °Íµé(Miscellany)
3.29.1. »óÈ£ ´ëÈ­(Interactive) ½ºÅ©¸³Æ®¿Í ºñ »óÈ£ ´ëÈ­(non-interactive) ½ºÅ©¸³Æ®
3.29.2. ÃÖÀûÈ­(Optimizations)
3.29.3. ÆÁ ¸ðÀ½(Assorted Tips)
3.30. Bash, ¹öÀü 2
4. Credits
서지사항
A. ±âÁõµÈ ½ºÅ©¸³Æ®µé(Contributed Scripts)
B. Sed¿Í Awk¿¡ ´ëÇÑ ÂªÀº ÀÔ¹®¼­
B.1. Sed
B.2. Awk
C. Copyright
표 목록
3-1. bash ¿É¼Çµé
B-1. sed ¿¬»êÀÚ
B-2. ¿¹
예 목록
2-1. cleanup: /var/log ¿¡ ÀÖ´Â ·Î±× ÆÄÀϵéÀ» û¼ÒÇÏ´Â ½ºÅ©¸³Æ®
2-2. cleanup: À§ ½ºÅ©¸³Æ®ÀÇ °­È­µÇ°í ÀϹÝÈ­µÈ ¹öÀü
2-3. ½© ·¡ÆÛ(wrapper)
2-4. Á¶±Ý º¹ÀâÇÑ ½© ·¡ÆÛ(wrapper)
2-5. awk ½ºÅ©¸³Æ® shell wrapper
3-1. Á¾·á¿Í Á¾·á »óÅÂ
3-2. ÄÚµå ºí·°°ú I/O ÀçÁöÇâ
3-3. ÄÚµå ºí·°ÀÇ °á°ú¸¦ ÆÄÀÏ·Î ÀúÀåÇϱâ
3-4. ÇÏ·ç ¾È¿¡ º¯°æµÈ ÆÄÀϵéÀ» ¹é¾÷Çϱâ
3-5. º¯¼ö ´ëÀÔ°ú ´ëü
3-6. ÀÎÀÚ ¹Ù²Ù±â¿Í :
3-7. ÆÄÀÏ È®ÀåÀÚ ¹Ù²Ù±â:
3-8. ƯÁ¤ ¹®ÀÚ¿­À» ÆÄ½ÌÇϱâ À§Çؼ­ ÆÐÅÏ ¸ÅĪ »ç¿ëÇϱâ
3-9. ¹«¾ùÀÌ ÂüÀΰ¡?
3-10. [ ] °ú testÀÇ °°À½
3-11. Å×½ºÆ®, ¸í·É¾î ¿¬°á, ÀçÁöÇâ
3-12. »ê¼ú ºñ±³, ¹®ÀÚ¿­ ºñ±³
3-13. ¹®ÀÚ¿­ÀÌ ³ÎÀÎÁö Å×½ºÆ®Çϱâ
3-14. zmost
3-15. && ¿Í ||¸¦ ¾´ º¹ÇÕ Á¶°Ç Å×½ºÆ®
3-16. ¼ýÀÚ »ó¼ö Ç¥±â¹ý:
3-17. arglist: $* °ú $@ ·Î ÀÎÀÚ¸¦ ³ª¿­Çϱâ
3-18. º¯¼ö ´ëÀÔ
3-19. Æò¹üÇϰí Àç¹Õ´Â º¯¼ö ´ëÀÔ
3-20. À§Ä¡ ÀÎÀÚ
3-21. wh, whois µµ¸ÞÀÎ ³×ÀÓ ·è¾÷(domain name lookup)
3-22. shift »ç¿ëÇϱâ
3-23. declare ½á¼­ º¯¼ö ŸÀÔ ÁöÁ¤Çϱâ
3-24. °£Á¢ ÂüÁ¶
3-25. ¹«ÀÛÀ§ ¼ýÀÚ ¸¸µé±â
3-26. °£´ÜÇÑ for ·çÇÁ
3-27. °¢ [list] Ç׸ñÀÌ ÀÎÀÚ¸¦ 2°³¾¿ °®´Â for ¹®
3-28. in [list]°¡ ºüÁø for ¹®
3-29. ¹èÄ¡ ¸ðµå·Î efax »ç¿ëÇϱâ
3-30. °£´ÜÇÑ while ·çÇÁ
3-31. ´Ù¸¥ while ·çÇÁ
3-32. ´ÙÁß Á¶°Ç while ¹®
3-33. until ·çÇÁ
3-34. ·çÇÁ¿¡¼­ break ¿Í continue ÀÇ ¿µÇâ
3-35. case »ç¿ëÇϱâ
3-36. case·Î ¸Þ´º ¸¸µé±â
3-37. select·Î ¸Þ´º ¸¸µé±â
3-38. ÇÔ¼ö¿¡¼­ select ¸¦ ½á¼­ ¸Þ´º ¸¸µé±â
3-39. getopts·Î Ç÷¡±×/¿É¼Ç ÀоîµéÀ̱â
3-40. À§Ä¡ ÀÎÀÚ¿Í set
3-41. basename°ú dirname
3-42. read·Î º¯¼ö°ª ÀоîµéÀ̱â
3-43. ÇöÀç µð·ºÅ丮 º¯°æÇϱâ
3-44. µ¥ÀÌŸ ÆÄÀÏ "Æ÷ÇÔÇϱâ"
3-45. ÇÁ·Î¼¼½º°¡ ³¡³ª´Â °Í ±â´Ù¸®±â
3-46. CDR µð½ºÅ©¸¦ ±¸¿ï ¶§ ls·Î ¸ñÂ÷¸¦ ¸¸µé±â
3-47. ÇöÀç µð·ºÅ丮 ¾ÈÀÇ ÆÄÀÏÁß ÆÄÀÏ À̸§¾È¿¡ ÀϹÝÀûÀÌÁö ¾ÊÀº ¹®ÀÚ³ª °ø¹é ¹®ÀÚ¸¦ Æ÷ÇÔÇϰí ÀÖ´Â ÆÄÀÏÀ» Áö¿ì±â
3-48. ½Ã½ºÅÛ ·Î±×¸¦ ¸ð´ÏÅÍ Çϱâ À§ÇÑ xargs ·Î±× ÆÄÀÏ
3-49. copydir, xargs·Î ÇöÀç µð·ºÅ丮¸¦ ´Ù¸¥ µð·ºÅ丮·Î º¹»çÇϱâ
3-50. eval È¿°ú º¸¿©ÁÖ±â
3-51. °­Á¦·Î ·Î±× ¾Æ¿ô ½Ã۱â
3-52. expr ¾²±â
3-53. letÀ¸·Î »ê¼ú ¿¬»ê Çϱâ
3-54. printf ¿¹Á¦
3-55. cpio·Î µð·ºÅ丮 Æ®¸® ¿Å±â±â
3-56. toupper: ÆÄÀÏ ³»¿ëÀ» ¸ðµÎ ´ë¹®ÀÚ·Î ¹Ù²Þ.
3-57. lowercase: ÇöÀç µð·ºÅ丮ÀÇ ¸ðµç ÆÄÀÏ À̸§À» ¼Ò¹®ÀÚ·Î ¹Ù²Þ.
3-58. columnÀ» ½á¼­ µð·ºÅ丮 ¸ñ·ÏÀ» Çü½ÄÈ­ÇØ¼­ º¸¿©ÁÖ±â
3-59. nl: ÀÚ±â Àڽſ¡°Ô ¹øÈ£¸¦ ºÙÀÌ´Â ½ºÅ©¸³Æ®.
3-60. Çü½ÄÈ­µÈ ÆÄÀÏ ¸ñ·Ï.
3-61. date ¾²±â
3-62. ½ºÅ©¸³Æ®¿¡¼­ "grep"À» ¿¡¹Ä·¹À̼ÇÇϱâ
3-63. ¸ñ·Ï¿¡ ÀÖ´Â ´Ü¾îµéÀÇ À¯È¿¼º È®ÀÎÇϱâ
3-64. C ÇÁ·Î±×·¥ ÆÄÀÏ¿¡¼­ ÁÖ¼®À» Á¦°ÅÇϱâ
3-65. ÀÎÄÚµåµÈ ÆÄÀÏÀ» µðÄÚµåÇϱâ
3-66. seq·Î ·çÇÁ¿¡ ÀÎÀÚ¸¦ ¸¸µé¾î ³Ö±â
3-67. secret password: Å͹̳Π¿¡ÄÚ ²ô±â
3-68. ÇÁ·Î¼¼½º¸¦ Á×ÀÏ ¶§ pidof »ç¿ëÇϱâ
3-69. execÀÇ ¿µÇâ
3-70. killall, /etc/rc.d/init.d¿¡¼­ ¹ßÃé
3-71. bash ½ºÅ©¸³Æ®¿¡ Æ÷ÇÔµÈ ÆÞ
3-72. execÀ» ½á¼­ Ç¥ÁØÀÔ·Â ÀçÁöÇâ Çϱâ
3-73. ÀçÁöÇâµÈ while ·çÇÁ
3-74. ÀçÁöÇâµÈ until ·çÇÁ
3-75. ÀçÁöÇâµÈ for ·çÇÁ
3-76. ÀçÁöÇâµÈ if/then Å×½ºÆ®¹®
3-77. ¼­ºê½©¿¡¼­ º¯¼öÀÇ Åë¿ë ¹üÀ§
3-78. ¼­ºê½©¿¡¼­ º´·Ä ÇÁ·Î¼¼½º¸¦ ½ÇÇà½Ã۱â
3-79. Á¦ÇÑµÈ ¸ðµå·Î ½ºÅ©¸³Æ® µ¹¸®±â
3-80. °£´ÜÇÑ ÇÔ¼ö
3-81. ÀÎÀÚ¸¦ ¹Þ´Â ÇÔ¼ö
3-82. ¼ýÀÚ¸¦ ·Î¸¶ ¼ýÀÚ·Î ¹Ù²Ù±â
3-83. Áö¿ª º¯¼öÀÇ ¿µ¿ª(Local variable visibility)
3-84. Áö¿ª º¯¼ö¸¦ ¾´ Àç±Í ÇÔ¼ö ±¸Çö
3-85. ½ºÅ©¸³Æ®¿¡¼­ ¾²ÀÌ´Â º°Äª(alias)
3-86. "and list"À» ½á¼­ ¸í·É¾îÁÙ ÀÎÀÚ È®ÀÎÇϱâ
3-87. "and list"°ú "or list"¸¦ °°ÀÌ ¾²±â
3-88. °£´ÜÇÑ ¹è¿­ »ç¿ë¹ý
3-89. ¹è¿­ÀÇ Æ¯º°ÇÑ Æ¯¼º ¸î °¡Áö
3-90. ¾ÆÁÖ ¿À·¡µÈ Ä£±¸: ¹öºí ¼ÒÆ®
3-91. º¹ÀâÇÑ ¹è¿­ ¾îÇø®ÄÉÀ̼Ç: ¿¡¶óÅ佺Å׳׽ºÀÇ Ã¼(Sieve of Erastosthenes)
3-92. dummyfile: µÎ ÁÙÂ¥¸® ´õ¹Ì ÆÄÀÏ ¸¸µé±â
3-93. broadcast: ·Î±×ÀÎ ÇØ ÀÖ´Â ¸ðµç »ç¿ëÀÚ¿¡°Ô ¸Þ¼¼Áö¸¦ º¸³»±â
3-94. catÀ¸·Î ¿©·¯ ÁÙÀÇ ¸Þ¼¼Áö Ãâ·Â
3-95. upload: "Sunsite" incoming µð·ºÅ丮¿¡ ÆÄÀÏ ÇÑ ½ÖÀ» ¾÷·Îµå
3-96. /dev/zero·Î ½º¿Ò ÆÄÀÏÀ» ¼¼ÆÃÇϱâ
3-97. test23, ¹ö±× ÀÖ´Â ½ºÅ©¸³Æ®
3-98. test24, ´Ù¸¥ ¹ö±× ÀÖ´Â ½ºÅ©¸³Æ®
3-99. Á¾·á½Ã Àâ¾ÆÃ¤±â(Trapping at exit)
3-100. Control-C¸¦ ´©¸£°í ³ª¼­ ±ú²ýÀÌ Ã»¼ÒÇϱâ
3-101. ¹®ÀÚ¿­ È®Àå
3-102. °£Á¢ º¯¼ö ÂüÁ¶ - »õ·Î¿î ¹æ¹ý
3-103. ¹è¿­°ú ¾à°£ÀÇ Æ®¸¯À» ½á¼­ ÇÑ ¹úÀÇ Ä«µå¿¡¼­ 4¸í¿¡°Ô ¹«ÀÛÀ§·Î Ä«µå¸¦ µ¹¸®±â
A-1. manview: Æ÷¸ËµÈ ¸Ç ÆäÀÌÁö¸¦ º¸´Â ½ºÅ©¸³Æ®
A-2. rn: °£´ÜÇÑ ÆÄÀÏ À̸§ ¹Ù²Ù´Â À¯Æ¿¸®Æ¼
A-3. encryptedpw: ÀڽŠ½Ã½ºÅÛ¿¡(locally) ¾Ïȣȭ µÇ¾î ÀÖ´Â ÆÐ½º¿öµå·Î ftp »çÀÌÆ®¿¡ ÆÄÀÏÀ» ¾÷·ÎµåÇÏ´Â ½ºÅ©¸³Æ®
A-4. behead: ¸ÞÀϰú ´º½º ¸Þ¼¼Áö Çì´õ¸¦ Á¦°ÅÇØ ÁÖ´Â ½ºÅ©¸³Æ®
A-5. ftpget: ftp¿¡¼­ ÆÄÀÏÀ» ´Ù¿î·ÎµåÇØ ÁÖ´Â ½ºÅ©¸³Æ®
A-6. password: ¹«ÀÛÀ§·Î 8±ÛÀÚÀÇ ÆÐ½º¿öµå¸¦ ¸¸µé¾î ³»´Â ½ºÅ©¸³Æ®
A-7. fifo: ³×ÀÓµå ÆÄÀÌÇÁ¸¦ ½á¼­ ¸ÅÀÏ ¹é¾÷ÇØ ÁÖ´Â ½ºÅ©¸³Æ®
A-8. tree: µð·ºÅ丮 ±¸Á¶¸¦ º¸¿©ÁÖ´Â ½ºÅ©¸³Æ®