¸®´ª½º °ü·Ã °Ô½ÃÆÇ

2002/01/22(23:16) from 211.169.72.147
ÀÛ¼ºÀÚ : °­ÁÙ±â (jkkang65@hanmail.net) Á¶È¸¼ö : 6898 , ÁÙ¼ö : 909
[Shell] BASH(Bourn Again Shell) ÇÁ·Î±×·¡¹Ö ÀÔ¹® ÇÏ¿ìÅõ
 BASH ÇÁ·Î±×·¡¹Ö ÀÔ¹® ÇÏ¿ìÅõ
 by Mike G mikkey@dynamo.com.ar
 v0.07, 22 June 2000

 ÀÌ ¹®¼­´Â ´ç½ÅÀÌ ±âÃÊÀûÀÎ ¼Ð ½ºÅ©¸³Æ® ÇÁ·Î±×·¡¹ÖÀ» ½ÃÀÛÇÏ´Â °ÍÀ» µµ¿Í
 ÁÖ±â À§ÇØ ¾²·Á°í ÇÑ´Ù. ÀÌ°ÍÀº Á¦¸ñÀ» º¸¸é ¾Ë°ÚÁö¸¸ ¾î´À Á¤µµ ´É¼÷ÇÑ
 »ç¶÷À» À§ÇÑ °ÍÀº ¾Æ´Ï´Ù. ³ª´Â ¶Ù¾î³ª°Å³ª ȤÀº Àü¹®ÀûÀÎ ½© ÇÁ·Î±×·¡¸Ó°¡
 ¾Æ´Ï°í, ³»°¡ ´õ ¸¹ÀÌ ¹è¿ì°Ô µÉ °ÍÀÎ µ¿½Ã¿¡ ´Ù¸¥ »ç¶÷µé¿¡°Ô À¯¿ëÇÒ
 °ÍÀ̹ǷΠ¾²°í ÀÖ´Â °Í »ÓÀÌ´Ù. ¾î¶² Áú¹® ȤÀº ÷°¡ÇÒ ³»¿ëÀÌ¶óµµ Á¦¾ðÇØ
 ÁØ´Ù¸é ±×µé Áß¿¡ ÀϺδ ÀÌ ¹®¼­ Ãß°¡ ¹öÀü¿¡ Æ÷Ç﵃ °ÍÀÌ´Ù.  
 ______________________________________________________________________

¸ñÂ÷

 1. ½ÃÀÛÇϸ鼭

    1.1 ÀÌ ¹®¼­ÀÇ ÃֽŠ¹öÀüÀ» ÀÔ¼öÇÏ·Á¸é
    1.2 ÇÊ¿äÇÑ ¿ä°Ç
    1.3 ÀÌ ¹®¼­ÀÇ È°¿ë

 2. ±âÃÊÀûÀÎ ½ºÅ©¸³Æ®

    2.1 °íÀüÀûÀÎ hello world ½ºÅ©¸³Æ®
    2.2 ¾ÆÁÖ °£´ÜÇÑ ¹é¾÷ ½ºÅ©¸³Æ®

 3. ¸®µð·º¼ÇÀÇ ¸ðµç °Í

    3.1 Á¤ÀÇ¿Í °£´ÜÇÑ ¸ñÂ÷
    3.2 ¿¹Á¦ : Ç¥ÁØ Ãâ·ÂÀ» ÆÄÀÏ·Î
    3.3 ¿¹Á¦ : Ç¥ÁØ ¿¡·¯¸¦ ÆÄÀÏ·Î
    3.4 ¿¹Á¦ : Ç¥ÁØ Ãâ·ÂÀ» Ç¥ÁØ ¿¡·¯·Î
    3.5 ¿¹Á¦ : Ç¥ÁØ ¿¡·¯¸¦ Ç¥ÁØ Ãâ·ÂÀ¸·Î
    3.6 ¿¹Á¦ : Ç¥ÁØ ¿¡·¯¿Í Ç¥ÁØ Ãâ·ÂÀ» ÆÄÀÏ·Î

 4. ÆÄÀÌÇÁ

    4.1 ÆÄÀÌÇÁÀÇ ¿ªÇÒ°ú ±×°ÍÀ» »ç¿ëÇÏ´Â ÀÌÀ¯
    4.2 ¿¹Á¦ : sed¸¦ »ç¿ëÇÑ °£´ÜÇÑ ÆÄÀÌÇÁ
    4.3 ¿¹Á¦ : ls -l *.txt ¿¡ ´ëÇÑ ¾çÀÚÅÃÀÏ

 5. º¯¼ö

    5.1 ¿¹Á¦: º¯¼ö¸¦ »ç¿ëÇÑ Hello World!
    5.2 ¿¹Á¦: Á¶±Ý ´õ °³·®µÈ ¾ÆÁÖ °£´ÜÇÑ ¹é¾÷ ½ºÅ©¸³Æ®
    5.3 Áö¿ª º¯¼ö

 6. Á¶°Ç¹®

    6.1 °£´ÜÈ÷ ¸»Çؼ­....  
    6.2 ¿¹Á¦ : if .. then À» »ç¿ëÇÏ´Â ±âº»ÀûÀΠǥÇö
    6.3 ¿¹Á¦ : if .. then ... else ¸¦ »ç¿ëÇÏ´Â ±âº»ÀûÀΠǥÇö
    6.4 ¿¹Á¦ : º¯¼ö¸¦ »ç¿ëÇÏ´Â Á¶°Ç¹®

 7. for, while ±×¸®°í until À» »ç¿ëÇÏ´Â ·çÇÁ

    7.1 For ¸¦ »ç¿ëÇÏ´Â ¿¹
    7.2 C¿Í »ç¿ë¹ýÀÌ ºñ½ÁÇÑ for
    7.3 While À» »ç¿ëÇÏ´Â ¿¹
    7.4 Until À» »ç¿ëÇÏ´Â ¿¹

 8. ÇÔ¼ö
    8.1 ÇÔ¼ö ¿¹Á¦
    8.2 ¸Å°³º¯¼ö°¡ µé¾î°¡´Â ÇÔ¼ö ¿¹Á¦

 9. »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º

    9.1 ´Ü¼øÇÑ ¸Þ´º¸¦ ¸¸µé±â À§ÇÑ select ¹® ÀÌ¿ëÇϱâ
    9.2 ¸í·ÉÇàÀ» ÀÌ¿ëÇϱâ

 10. ´õ ¸¹ÀÌ ¾Ë±â

    10.1 read ¹®À¸·Î »ç¿ëÀÚ ÀÔ·Â ¹Þ±â
    10.2 »ê¼úÀûÀÎ °è»ê
    10.3 bash¸¦ ã±â
    10.4 ÇÁ·Î±×·¥ÀÌ µÇµ¹¸®´Â °ª ¹Þ±â
    10.5 ¸í·ÉÀÇ °á°ú ĸóÇϱâ
    10.6 ´ÙÁß ¼Ò½º ÆÄÀÏ

 11. Ç¥
    11.1 ¹®ÀÚ¿­ ºñ±³ ¿¬»êÀÚ
    11.2 ¹®ÀÚ¿­ ºñ±³ÀÇ ¿¹Á¦
    11.3 »ê¼ú ¿¬»êÀÚ
    11.4 »ê¼ú °ü°è ¿¬»êÀÚ
    11.5 À¯¿ëÇÑ ¸í·Éµé

 12. ´Ù¸¥ ½ºÅ©¸³Æ®µé

    12.1 µð·ºÅ丮 ¾ÈÀÇ ¸ðµç ÆÄÀÏ¿¡ Àû¿ëÇϱâ
    12.2 ¾ÆÁÖ °£´ÜÇÑ ¹é¾÷ ½ºÅ©¸³Æ®(Á¶±Ý ´õ ³ª¾ÆÁø °Í)
    12.3 ÆÄÀÏ À̸§À» ¹Ù²ã ÁÖ´Â ½ºÅ©¸³Æ®
    12.4 ÆÄÀÏ À̸§À» ¹Ù²ã ÁÖ´Â ½ºÅ©¸³Æ®(°£´ÜÇÑ °Í)

 13. ¹®Á¦°¡ »ý°åÀ» ¶§

    13.1 BASH¸¦ È£ÃâÇÏ´Â ¹æ¹ýµé

 14. ÀÌ ¹®¼­¿¡ °üÇÏ¿©

    14.1 ³»¿ëÀÇ º¸Áõ
    14.2 Thanks to
    14.3 °»½Å
    14.4 ´õ ¸¹Àº Á¤º¸


 ______________________________________________________________________

 1.  ½ÃÀÛÇϸ鼭
 
 1.1.  ÀÌ ¹®¼­ÀÇ ÃֽŠ¹öÀüÀ» ÀÔ¼öÇÏ·Á¸é ´ÙÀ½À» ÂüÁ¶Ç϶ó.(¿µ¾îÀÓ)
 http://www.linuxdoc.org/HOWTO/Bash-Prog-Intro-HOWTO.html


 1.2.  ÇÊ¿äÇÑ ¿ä°Ç

 GNU/Linux ¸í·É ü°è¿¡ Àͼ÷ÇÏ°í ±âÃÊÀûÀÎ ÇÁ·Î±×·¡¹Ö °³³äµéÀ» ¾Ë°í
 ÀÖÀ¸¸é µµ¿òÀÌ µÈ´Ù. ÀÌ°ÍÀº ±âÃÊÀûÀÎ ÇÁ·Î±×·¡¹Ö °­Á°¡ ¾Æ´Ï±â ¶§¹®¿¡
 ÃÖ¼ÒÇÑÀÇ ±âº» °³³äÀº ÀÖ¾î¾ß ÇÏ´Â °ÍÀÌ´Ù.


 1.3.  ÀÌ ¹®¼­ÀÇ È°¿ë

 ÀÌ ¹®¼­´Â ´ÙÀ½°ú °°Àº »óȲ¿¡¼­ À¯¿ëÇÏ°Ô »ç¿ëµÇ¾îÁú ¼ö ÀÖ´Ù.

 ? ´ç½ÅÀÌ ÇÁ·Î±×·¡¹Ö¿¡ °üÇÑ ¾ÆÀ̵ð¾î°¡ ¶°¿Ã¶ó ±×°ÍÀ» ¼Ð ½ºÅ©¸³Æ®·Î ÀÛ¼ºÇÏ
 ±â¸¦ ¿øÇÒ ¶§

 ? ´ç½ÅÀÌ ¼Ð ÇÁ·Î±×·¡¹Ö¿¡ °üÇÑ ¸·¿¬ÇÑ Áö½Ä¸¸À» °¡Áö°í ÀÖ°í, ±×¿¡ ´ëÇÑ
 Á¤¸®°¡ ÇÊ¿äÇÏ´Ù°í ´À³¥ ¶§.

 ? ´ç½ÅÀÌ ´ç½ÅÀÇ ÇÁ·Î±×·¥À» ½ÃÀÛÇϱ⿡ ¾Õ¼­ Âü°íÇÒ ¸»µé°ú ¿¹Á¦ ½ºÅ©¸³Æ®µéÀ»
 º¸±â¸¦ ¿øÇÒ ¶§.

 ? ´ç½ÅÀÌ µµ½º³ª À©µµ¿¡¼­ÀÇ ¹èÄ¡ ÆÄÀÏÀ» ¸¸µé±â¸¦ ¿øÇϰųª ȤÀº ÀÌ¹Ì ¸¸µé¾î
 º¸¾ÒÀ» °æ¿ì.

 ? ´ç½ÅÀÌ ¿Ïº®ÇÑ ¹Ùº¸¶ó¼­, ¸ðµç ÇÏ¿ìÅõ¸¦ ´Ù ÀÐ¾î ºÁ¾ß Á÷¼ºÀÌ Ç®¸®´Â °æ¿ì.-_-


 2.  ±âÃÊÀûÀÎ ½ºÅ©¸³Æ®

 ÀÌ HOW-TO ´Â ´ç½ÅÀÇ shell ÇÁ·Î±×·¡¹Ö¿¡ ÀÖ¾î ÈùÆ®¸¦ ÁÖ±â À§ÇØ
 ¿¹Á¦¿¡ ±âÃÊÇÏ°í ÀÖ´Ù.

 ÀÌ ¼½¼Ç¿¡¼­ ´ç½ÅÀº ´ç½ÅÀÌ ¸î¸î Å×Å©´ÐÀ» ÀÌÇØÇÏ´Â µ¥ ÀÖ¾î µµ¿òÀÌ µÉ
°£´ÜÇÑ ½ºÅ©¸³Æ®µéÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù.


 2.1.  °íÀüÀûÀÎ hello world ½ºÅ©¸³Æ®

                #!/bin/bash
                echo Hello World

 ÀÌ ½ºÅ©¸³Æ®틑 µü µÎ ÁÙ·Î ÀÌ·ç¾îÁ® ÀÖ´Ù. ù ¹ø° ÁÙ¿¡¼­´Â ÀÌ ÆÄÀÏÀ» ½ÇÇàÇÏ´Â
 µ¥ ÇÊ¿äÇÑ ÇÁ·Î±×·¥ÀÌ ½Ã½ºÅÛ ¾îµð¿¡ ÀÖ´ÂÁöÀÇ °æ·Î¸¦ Àû¾îÁØ´Ù. µÎ ¹ø° ÁÙÀº
 ¿ÀÁ÷ ½ÇÇàÀ» À§ÇÑ ºÎºÐÀ¸·Î "Hello World"¸¦ ÅÍ¹Ì³Î»ó¿¡ Ãâ·ÂÇÏ´Â °ÍÀÌ´Ù.

 2.2. ¾ÆÁÖ °£´ÜÇÑ ¹é¾÷ ½ºÅ©¸³Æ®

              #!/bin/bash
              tar -cZf /var/my-backup.tgz /home/me/

 ÀÌ ½ºÅ©¸³Æ®¿¡¼­ Å͹̳ο¡ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ´Â °ÍÀº Á¦¿ÜÇÏ°í, ¿ì¸®´Â ¿ì¸®ÀÇ È¨
 µð·ºÅ丮¸¦ tar·Î ¹­Àº ÆÄÀÏÀ» »ý¼ºÇÏ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº »ç¿ëÇÒ¸¸ÇÑ °ÍÀº ¸ø µÈ´Ù.
 »ç¿ëÇÒ¸¸ÇÑ ¹é¾÷ ½ºÅ©¸³Æ®´Â ÀÌ ¹®¼­ÀÇ ´õ µÞ ºÎºÐ¿¡ ³ª¿À°Ô µÉ °ÍÀÌ´Ù.

 3. ¸®µð·º¼ÇÀÇ ¸ðµç °Í

 3.1.  Á¤ÀÇ¿Í °£´ÜÇÑ ¸ñÂ÷

 3°¡ÁöÀÇ ÆÄÀÏ ¼­¼úÀÚ°¡ ÀÖ´Ù. Ç¥ÁØ ÀÔ·Â, Ç¥ÁØ Ãâ·Â, Ç¥ÁØ ¿¡·¯°¡ ±×°ÍÀÌ´Ù.

 ±âº»ÀûÀ¸·Î ´ç½ÅÀÌ ÇÒ ¼ö ÀÖ´Â °ÍÀº ´ÙÀ½°ú °°´Ù.:

 1. Ç¥ÁØ Ãâ·ÂÀ» ÆÄÀÏ·Î º¸³»±â

 2. Ç¥ÁØ ¿¡·¯¸¦ ÆÄÀÏ·Î º¸³»±â

 3. Ç¥ÁØ Ãâ·ÂÀ» Ç¥ÁØ ¿¡·¯·Î º¸³»±â

 4. Ç¥ÁØ ¿¡·¯¸¦ Ç¥ÁØ Ãâ·ÂÀ¸·Î º¸³»±â

 5. Ç¥ÁØ ¿¡·¯¿Í Ç¥ÁØ Ãâ·ÂÀ» ÆÄÀÏ·Î º¸³»±â

 6. Ç¥ÁØ ¿¡·¯¿Í Ç¥ÁØ Ãâ·ÂÀ» Ç¥ÁØ Ãâ·ÂÀ¸·Î º¸³»±â

 7. Ç¥ÁØ ¿¡·¯¿Í Ç¥ÁØ Ãâ·ÂÀ» Ç¥ÁØ ¿¡·¯·Î º¸³»±â

    1 'represents' stdout and 2 stderr.

 À̰͵éÀ» º¸´Â µ¥ ´ëÇØ °£´ÜÈ÷ ±º¼Ò¸®¸¦ ºÙÀÌÀÚ¸é : ´õ ÀûÀº ¸í·É¾î¸¦ »ç¿ëÇÏ¿©
 ´ç½ÅÀº Ç¥ÁØ Ãâ·Â(¹öÆÛ¿¡´Â ³²¾Æ ÀÖ´Â)°ú Ç¥ÁØ ¿¡·¯¸¦ È­¸é»ó¿¡¼­ º¼ ¼ö ÀÖÁö¸¸,
 ´ç½ÅÀÌ ``Àü¹ÝÀûÀ¸·Î º¸·Á'' ÇÏ´Â °ÍÀº ¹öÆÛ¿¡¼­ Áö¿öÁú °ÍÀÌ´Ù.

 3.2.  ¿¹Á¦ : Ç¥ÁØÃâ·ÂÀ» ÆÄÀÏ·Î

 ÀÌ°ÍÀº ¾î¶² ÇÁ·Î±×·¥ÀÇ ½ÇÇà °á°ú¸¦ ÆÄÀÏ·Î Ãâ·ÂÇÏ´Â ¹æ¹ýÀÌ´Ù.

              ls -l > ls-l.txt

 ÀÚ, ÀÌ 'ls-l.txt'¶ó ºÒ¸®´Â ÆÄÀÏÀÌ ´ç½ÅÀÌ 'ls -l'ÀÇ ¸í·ÉÀ» ½ÇÇàÇÏ¿´À» ¶§
 È­¸é¿¡¼­ º¼ ¼ö ÀÖ´Â ³»¿ëÀ» Æ÷ÇÔÇÏ´Â »óÅ·Π»ý¼ºµÉ °ÍÀÌ´Ù.

 3.3.  ¿¹Á¦ : Ç¥ÁØ¿¡·¯¸¦ ÆÄÀÏ·Î

 ÀÌ°ÍÀº ¾î¶² ÇÁ·Î±×·¥ÀÇ Ç¥ÁØ ¿¡·¯ÀÇ Ãâ·ÂÀ» ÆÄÀÏ¿¡ ¾²´Â ¹æ¹ýÀÌ´Ù.

              grep da * 2> grep-errors.txt

 ÀÚ, ÀÌÁ¦ 'grep-errors.txt' ¶ó´Â ÆÄÀÏÀÌ ¸¸µé¾î Áú °ÍÀÌ°í ÀÌ°ÍÀº ´ç½ÅÀÌ
 ¿ø·¡´Â 'gerp da *' ÀÇ ¸í·ÉÀ» ³»·Á¼­ È­¸é¿¡ Ãâ·ÂµÇ¾úÀ» Ç¥ÁØ ¿¡·¯¹®À»
 Æ÷ÇÔÇÏ°í ÀÖÀ» °ÍÀÌ´Ù.

 3.4.  ¿¹Á¦ : Ç¥ÁØ Ãâ·ÂÀ» Ç¥ÁØ ¿¡·¯·Î

 ÀÌ°ÍÀº ¾î´À ÇÁ·Î±×·¥ÀÇ Ç¥ÁØ ¿¡·¯ Ãâ·ÂÀ», ÁöÁ¤µÈ ÆÄÀÏ¿¡ ±â·ÏÇÏ´Â ´ë½Å
 Ç¥ÁØ Ãâ·ÂÀ¸·Î º¸ÀÌ´Â °ÍÀÌ´Ù.

              grep da * 1>&2

 ÀÚ, ¸í·ÉÀÇ Ç¥ÁØ Ãâ·Â ÇüÅ°¡ Ç¥ÁØ ¿¡·¯¿¡°Ô º¸³»Á³´Ù. ´ç½ÅÀº ÀÌ°ÍÀ» ´Ù¸¥
 ¹æ¹ýÀ¸·Îµµ ÀÀ¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

 3.5.  ¿¹Á¦ : Ç¥ÁØ ¿¡·¯¸¦ Ç¥ÁØ Ãâ·ÂÀ¸·Î.  

 ÀÌ°ÍÀº ÇÁ·Î±×·¥¿¡¼­ÀÇ Ç¥ÁØ ¿¡·¯ÀÇ Ãâ·ÂÀ» ÁöÁ¤µÈ ÆÄÀÏ¿¡ ±â·ÏÇÏ´Â ´ë½Å
 Ç¥ÁØ Ãâ·ÂÀ¸·Î º¸ÀÌ´Â °ÍÀÌ´Ù.

              grep * 2>&1

 ÀÚ, ¸í·ÉÀÇ Ç¥ÁØ ¿¡·¯ »óÅ°¡ Ç¥ÁØ Ãâ·Â¿¡°Ô º¸³»Á³´Ù. ¸¸¾à ´ç½ÅÀÌ Á» ´õ
 ÁÙÀ̱â À§ÇØ ÆÄÀÌÇÁ¸¦ »ç¿ëÇÑ´Ù¸é ´ç½ÅÀº Á¤»óÀûÀ¸·Î´Â ¼Ò¸êµÈ ÁÙ(Ç¥ÁØ ¿¡·¯
 ·Î¼­ ¾²¿©Áö´Â °Íµé)ÀÌ Ç¥ÁØ Ãâ·ÂÀ¸·Î¼­ ´« ¾Õ¿¡ º¸ÀÌ´Â °ÍÀ» º¸°Ô µÉ °ÍÀÌ´Ù.

 3.6. ¿¹Á¦ : Ç¥ÁØ Ãâ·Â°ú Ç¥ÁØ ¿¡·¯¸¦ ÆÄÀÏ·Î.
  
 ÀÌ°ÍÀº ÇÁ·Î±×·¥ÀÇ ¸ðµç Ãâ·ÂÀ» ÆÄÀÏ·Î º¸³¾ °ÍÀÌ´Ù. ÀÌ°ÍÀº ¾î¶² ¸í·ÉÀÌ
 Á¶¿ëÈ÷ ½ÇÇàµÇ°í ³Ñ¾î°¡±â¸¦ ¿øÇÒ cronÀÇ ´ë±â¿­¿¡´Â ¶§¶§·Î ¾î¿ï¸®±âµµ ÇÑ´Ù.

              rm -f $(find / -name core) &> /dev/null

 ÀÌ¿Í °°Àº(cron ´ë±â¿­¿¡¼­ °°Àº °æ¿ì¸¦ »ý°¢ÇÏÀÚ.) °ÍÀº core ¶ó°í ºÒ¸®¿ì´Â
 ¸ðµç ÆÄÀÏÀº ¾î¶² µð·ºÅ丮 ¾È¿¡ µé¾î ÀÖ´Â °ÍÀÏÁö¶óµµ Áö¿ï °ÍÀÌ´Ù. ´ç½ÅÀº
 ´ç½ÅÀÌ ±× Ãâ·Â°á°ú¸¦ º¸°í ½Í¾îÇÏ´Â ¾î¶² ¸í·ÉÀÌ ½ÇÇàµÇ´Â °ÍÀ» ¼÷°íÇÏ°í ½ÇÇàÇÒ
 ÇÊ¿ä°¡ ÀÖ´Ù.
 
 4. ÆÄÀÌÇÁ

 ÀÌ ¼½¼ÇÀº ÆÄÀÌÇÁ¸¦ ¾î¶»°Ô »ç¿ëÇÏ´À³Ä¿¡ ´ëÇÑ ¾ÆÁÖ °£´ÜÇÑ ¿¬½ÀÀÌ µÉ ¸¸ÇÑ
 °ÍµéÀ» ¼Ò°³ÇÏ°í, ´ç½ÅÀÌ ¿Ö ÆÄÀÌÇÁ¸¦ »ç¿ëÇÏ°Ô µÇ´ÂÁö¸¦ »ìÆ캸°Ô µÈ´Ù.

 4.1. ÆÄÀÌÇÁÀÇ ¿ªÇÒ°ú ±×°ÍÀ» »ç¿ëÇÏ´Â ÀÌÀ¯

 ÆÄÀÌÇÁ´Â ´ç½ÅÀÌ ¾î´À ÇÁ·Î±×·¥ÀÇ Ãâ·ÂÀ» ´Ù¸¥ °ÍÀÇ ÀÔ·ÂÀ¸·Î º¯È¯ÇÏ·Á ÇÒ ¶§
 ¾ÆÁÖ °£´ÜÇÏ°Ô ±× ÀÛ¾÷À» ¼öÇàÇÏ°Ô ÇÑ´Ù.

 4.2 ¿¹Á¦ : sed¸¦ »ç¿ëÇÑ °£´ÜÇÑ ÆÄÀÌÇÁ

 ÀÌ°ÍÀº ÆÄÀÌÇÁ¸¦ »ç¿ëÇÏ´Â ¾ÆÁÖ °£´ÜÇÑ ¹æ¹ýÀÌ´Ù.

              ls -l | sed -e "s/[aeio]/u/g"

 ÀÚ, ÀÌ·± ÀÏ¿¡¼­ ¾Õ¼± ¸í·ÉÀº ¸ÕÀú ls -lÀ» ½ÇÇàÇÏ¿© ±× °á°ú¸¦ È­¸é¿¡
 Ãâ·ÂÇÏ´Â ´ë½Å, ÆÄÀÌÇÁ¸¦ ÅëÇØ sed ÇÁ·Î±×·¥À¸·Î º¸³»¾î sed±îÁö ½ÇÇàµÈ °á°ú¸¦
 Ãâ·ÂÇÏ°Ô µÈ´Ù.

 4.3 ¿¹Á¦ : ls -l *.txt ¿¡ ´ëÇÑ ¾çÀÚÅÃÀÏ

 ÀϹÝÀûÀ¸·Î, ls -l *.txt¸¦ ¾²´Â ¹æ¹ý Áß¿¡¼­ ´õ ±î´Ù·Î¿î ÂÊÀÌÁö¸¸
 ÀÌ°ÍÀº ÆÄÀÌÇÁ¿¡ ´ëÇÑ ¿¹·Î¼­ ¸ñ·ÏÈ­ÀÇ µô·¹¸¶¸¦ Ç®±â À§Çؼ­¶ó´ø°¡ ±×·±
 °ÍÀº ¾Æ´Ï´Ù.

              ls -l | grep "\.txt$"

 ÀÚ, ÀÌ ls -lÀÇ Ãâ·ÂÀº grepÀ¸·Î ³Ñ¾î°¡¼­ "\.txt$"¿Í ¸ÅÄ¡µÇ´Â ÁÙ¸¸
 È­¸é¿¡ Ãâ·ÂÇÏ°Ô µÉ °ÍÀÌ´Ù.

 5.  º¯¼ö

 ´ç½ÅÀº ¾î¶² ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­¶óµµ º¯¼ö¸¦ »ç¿ëÇØ º¸¾ÒÀ» °ÍÀÌ´Ù. ¿©±â¼­
 ´Â µ¥ÀÌÅÍ Å¸ÀÔ °°Àº °ÍÀÌ ÇÊ¿ä¾ø´Ù. bash¿¡ÀÇ º¯¼ö´Â ¼ýÀÚ, ¹®ÀÚ, ¹®ÀÚ¿­
 ¸ðµÎ¸¦ Æ÷ÇÔÇϱ⠶§¹®ÀÌ´Ù.

 ´ç½ÅÀº º¯¼ö¸¦ ¼±¾ðÇÒ ÇÊ¿äµµ ¾ø´Ù. ±×³É ÀûÀç Àû¼Ò¿¡ »ç¿ëÇÏ´Â °ÍÀ¸·Î
 »ý¼ºÇÏ´Â °ÍÀÌ´Ù.

 5.1.  ¿¹Á¦ : º¯¼ö¸¦ »ç¿ëÇÑ Hello World!

                  #!/bin/bash
                  STR="Hello World!"
                  echo $STR

 µÎ¹ø° ÁÙÀº "Hello World!"¶ó´Â ¹®ÀÚ¿­À» ´ëüÇÏ´Â º¯¼ö STRÀ» »ý¼ºÇÑ´Ù.
 ±×¸®°í ÀÌ º¯¼öÀÇ °ªÀº $À̶ó´Â ¹®ÀÚ°¡ º¯¼öÀÇ ¾Õ¿¡ ³õÀÏ ¶§ »ç¿ëµÈ´Ù.
 ÁÖÀÇÇÒ °ÍÀº ¸¸¾à ´ç½ÅÀÌ $ Ç¥½Ã¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é Ãâ·ÂµÇ´Â ÇÁ·Î±×·¥ÀÇ
 °á°ú´Â ´ç½ÅÀÌ ¿øÇÏ´ø °Í°ú´Â »ç¹µ ´Ù¸¦ °ÍÀ̶ó´Â Á¡ÀÌ´Ù.

 5.2.  ¿¹Á¦ : Á¶±Ý ´õ °³·®µÈ ¾ÆÁÖ °£´ÜÇÑ ¹é¾÷ ½ºÅ©¸³Æ®

                 #!/bin/bash
                 OF=/var/my-backup-$(date +%Y%m%d).tgz
                 tar -cZf $OF /home/me/

 ÀÌ ½ºÅ©¸³Æ®´Â ´Ù¸¥ °ÍÀ» ¼Ò°³ÇÏ°í ÀÖ´Ù. ¸ÕÀú, ´ç½ÅÀº µÎ¹ø° ÁÙ¿¡¼­
 º¯¼ö¸¦ ¼±¾ð¶ó´Â Àͼ÷ÇÑ ¸ð½ÀÀ» º¸°Ô µÈ´Ù. ÀÌ Ç¥Çö¿¡¼­ÀÇ ÁÖÀÇÇÒ Á¡Àº
 ´ç½ÅÀÌ ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇϸé ÀÌ ¾È¿¡ ÀÖ´Â ¸í·ÉÀ» ½ÇÇàÇÏ¿© ±× °ªÀ»
 Ãâ·ÂÇÏ´Â °úÁ¤ÀÌ ¼öÇàµÈ´Ù´Â °ÍÀÌ´Ù.

 ÀÌ ½ºÅ©¸³Æ®¿¡¼­´Â Ãâ·ÂµÇ´Â ÆÄÀÏ À̸§ÀÌ ¸ÅÀϸÅÀÏ ´Þ¶óÁø´Ù. ÀÌ°ÍÀº
 data ¸í·É¿¡ ÀÇÇØ Çü½Ä¿¡ ¸ÂÃç Ãâ·Â À̸§ÀÌ ¹Ù²î¾î Áö±â ¶§¹®ÀÌ´Ù. ´ç½ÅÀº
 ÀÌ°ÍÀ» ´ç½ÅÀÌ ¿øÇÏ´Â ´Ù¸¥ Çü½ÄÀ¸·Î ¹Ù²Ü ¼öµµ ÀÖ´Ù.

 ¿¹¸¦ ¾à°£¸¸ ´õ µé¾î º¸ÀÚ:

 echo ls

 echo $(ls)

 5.3.  Áö¿ª º¯¼ö

 Áö¿ª º¯¼ö´Â Áö¿ª¿¡¼­ÀÇ »ç¿ëÀ» À§ÇØ ¸¸µé¾îÁø´Ù.


                      #!/bin/bash
                      HELLO=Hello
                      function hello {
                              local HELLO=World
                              echo $HELLO
                      }
                      echo $HELLO
                      hello
                      echo $HELLO

 ÀÌ ¿¹´Â Áö¿ª º¯¼ö¸¦ ¼³¸íÇÏ´Â µ¥ ÀÖ¾î ÃæºÐÇÏ´Ù°í »ý°¢µÈ´Ù.

 6.  Á¶°Ç¹®

 Á¶°Ç¹®Àº ´ç½ÅÀÌ ¾î¶² ÀÏÀ» ¼öÇàÇϴ°¡ ȤÀº ÇÏÁö ¾Ê´Â°¡ÀÇ ¹®Á¦¸¦ Ç¥ÇöÇÏ´Â
 ¹æ¹ýÀÌ´Ù.

 6.1. °£´ÜÈ÷ ¸»Çؼ­....

 Á¶°Ç¹®Àº ¸¹Àº Çü½ÄÀ¸·Î Ç¥ÇöÇÒ ¼ö ÀÖ´Ù. °¡Àå ±âº»ÀûÀÎ °ÍÀº if (Á¶°Ç)
 then (½ÇÇàÇÒ ³»¿ë) À¸·Î ±¸¼ºµÇ´Â °ÍÀ¸·Î ½ÇÇàÇÒ ³»¿ëÀº ¿ÀÁ÷ Á¶°ÇÀÌ
 ¸ÂÀ» ¶§¿¡¸¸ ½ÇÇàµÈ´Ù.  

 Á¶°Ç¹®À» »ç¿ëÇÒ ¼ö ÀÖ´Â ÀÌ·± Çü½Äµµ ÀÖ´Ù. if (Á¶°Ç) then (½ÇÇàÇÒ ³»¿ë 1)
 else (½ÇÇàÇÒ ³»¿ë 2) ¿Í °°Àº Çü½Ä¿¡¼­´Â Á¶°ÇÀÌ ÂüÀÌ¸é ½ÇÇàÇÒ ³»¿ë 1ÀÌ
 ½ÇÇàµÇ°í, ±×·¸Áö ¾ÊÀ¸¸é ½ÇÇàÇÒ ³»¿ë 2°¡ ½ÇÇàµÇ´Â °ÍÀÌ´Ù.

 Á¶°Ç¹®ÀÇ ¶Ç ´Ù¸¥ Çü½ÄÀ¸·Î,  if (Á¶°Ç 1) then (½ÇÇàÇÒ ³»¿ë 1)
 else if (Á¶°Ç 2) then (½ÇÇàÇÒ ³»¿ë 2) else (½ÇÇàÇÒ ³»¿ë 3)ÀÌ ÀÖ´Ù.
 ÀÌ¿Í °°Àº Çü½Ä¿¡¼­´Â else if (Á¶°Ç 2) them (½ÇÇàÇÒ ³»¿ë 2) °¡ Ãß°¡µÇ¾î
 Àִ´Ù, ÀÌ°ÍÀº ¸¸¾à Á¶°Ç 1Àº ¸¸Á·ÇÏÁö ¾Ê°í Á¶°Ç 2¸¦ ¸¸Á·ÇÏ¸é ½ÇÇàÇÒ ³»¿ë 2
 °¡ ½ÇÇàµÇ°í ±×·¸Áö ¾ÊÀ¸¸é ½ÇÇàÇÒ ³»¿ë 3ÀÌ ½ÇÇàµÈ´Ù´Â °ÍÀÌ´Ù. ´Ù¸¥ Ç¥Çö
 ¹æ½Äµé¿¡ °üÇؼ­´Â Áö±Ý±îÁö º» °ÍµéÀ» Åä´ë·Î ÇÏ¿© °¢ÀÚ »ý°¢ÇØ º¸±â·Î ÇÏÀÚ.

 ¹®¹ý¿¡ °üÇÏ¿©:

 if¸¦ bash¿¡¼­ »ç¿ëÇÏ´Â °ÍÀº ´ÙÀ½°ú °°Àº ¸ð½ÀÀÌ´Ù.

 if [expression];
 then
 code if 'expression' is true.
 fi

 6.2.  ¿¹Á¦ : if .. then À» »ç¿ëÇÏ´Â ±âº»ÀûÀΠǥÇö

                  #!/bin/bash
                  if [ "foo" = "foo" ]; then
                     echo expression evaluated as true
                  fi

 ÀÌ ÄÚµå´Â if ÀÇ Á¶°ÇÀÌ ´ç¿¬È÷ ¼º¸³ÇϹǷΠthen¿¡¼­ Á¶°Ç¹®À» ¸¶Ä¡´Â ¶æÀÇ
 ½ÇÇà ÄÚµåÀÎ fi»çÀÌÀÇ ³»¿ëÀÌ ½ÇÇàµÈ´Ù.

 6.3.  ¿¹Á¦ : if .. then ... else ¸¦ »ç¿ëÇÏ´Â ±âº»ÀûÀΠǥÇö

                  #!/bin/bash
                  if [ "foo" = "foo" ]; then
                     echo expression evaluated as true
                  else
                     echo expression evaluated as false
                  fi

 6.4.  ¿¹Á¦ : º¯¼ö¸¦ »ç¿ëÇÏ´Â Á¶°Ç

                  #!/bin/bash
                  T1="foo"
                  T2="bar"
                  if [ $T1 = $T2 ]; then
                      echo expression evaluated as true
                  else
                      echo expression evaluated as false
                  fi


 7.  for, while ±×¸®°í until À» »ç¿ëÇÏ´Â ·çÇÁ

 ÀÌ ¼½¼Ç¿¡¼­ ´ç½ÅÀº for, while ±×¸®°í until À» »ç¿ëÇÏ´Â ·çÇÁ¸¦ ¾Ë°ÔµÈ´Ù.

 for¸¦ »ç¿ëÇÏ´Â ·çÇÁ´Â ´Ù¸¥ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í´Â ¾à°£ ´Ù¸£´Ù. ±âº»ÀûÀ¸·Î
 ÀÌ°ÍÀº ´ç½ÅÀ» ÀÏ·ÃÀÇ °úÁ¤»ó¿¡¼­ µÇÇ®ÀÌÇÏ°Ô ÇÑ´Ù.

 ·çÇÁ¸¦ Á¶ÀýÇϴ ǥÇöÀÚ°¡ true¸¦ ³ªÅ¸³¾ ¶§´Â ¼øȯÀ» °è¼ÓÇÏ°í, ±×·¸Áö
 ¾ÊÀ» ½Ã(Ç¥ÇöÀÚ°¡ falseÀÏ ¶§)¿¡´Â ¸ØÃß°Ô µÇ´Â °ÍÀ̶ó¸é ·çÇÁÀÇ Ç¥ÇöÀ¸·Î¼­
 whileÀ» ÄÚµåÀÇ ÇÑ ºÎºÐ¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù. break¸¦ ½ÇÇàµÇ´Â ÄÚµå ¾È¿¡ ³Ö´Â
 °Íµµ ÁÁ´Ù.

 ¹«ÇÑ ·çÇÁ´Â ´ëºÎºÐ whileÀ» ¾µ ¶§ Äڵ忡 Ç¥ÇöÀÚ¸¦ false·Î ¸¸µé¾î ÁÖ´Â
 ºÎºÐÀÌ °á¿©µÇ¾î ÀÖÀ» ½Ã¿¡ ÀϾ´Ù.

 ´ç½ÅÀÌ "while°ú untilÀº ºñ½ÁÇÑ °Å ¾Æ³Ä?" ÇÏ°í »ý°¢ÇÑ´Ù¸é Á¦´ë·Î »ý°¢ÇÑ
 °ÍÀÌ´Ù.

 7.1.  For ¸¦ »ç¿ëÇÏ´Â ¿¹

              #!/bin/bash
              for i in $( ls ); do
                  echo item: $i
              done

 µÎ ¹ø° ÁÙ¿¡¼­ ¿ì¸®´Â i¸¦ $( ls )¿¡ ÀÇÇØ °è¼Ó º¯ÇÏ´Â º¯¼ö·Î¼­ ¼±¾ðÇß´Ù.

 ¼¼ ¹ø° ÁÙÀº ÇÊ¿äÇÏ´Ù¸é ´õ ±æ¾îÁö°Å³ª ȤÀº ´õ ¸¹Àº ÁÙÀ» »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.

 ÇÑ ¹øÀÇ ¼øȯÀÌ ³¡³ª°í $i´Â »õ·Î¿î °ªÀ» ¾ò¾ú´Ù.

 ÀÌ ½ºÅ©¸³Æ®´Â ¾ÆÁÖ ´Ü¼øÇÑ °ÍÀÌÁö¸¸ ·çÇÁ¸¦ »ç¿ëÇÏ¿© ÇÒ ¼ö ÀÖ´Â ´õ À¯¿ëÇÑ
 ¹æ¹ýÀÌ ¸¹ÀÌ ÀÖ´Ù.

 7.2.  C¿Í »ç¿ë¹ýÀÌ ºñ½ÁÇÑ for

 ·çÇÁ½ÃÅ°´Â ¶Ç ´Ù¸¥ ¹æ¹ýÀÌ ÀÖ´Ù. ÀÌ°ÍÀº for¸¦ »ç¿ëÇÏ¿© ·çÇÁÇÏÁö¸¸
 C³ª perl ¿¡¼­ »ç¿ëÇÏ´Â for°ú ºñ½ÁÇÑ ¹æ½ÄÀÌ´Ù.

              #!/bin/bash
              for i in `seq 1 10`;
              do
                      echo $i
              done

 7.3.  While À» »ç¿ëÇÏ´Â ¿¹

               #!/bin/bash
               COUNTER=0
               while [  $COUNTER -lt 10 ]; do
                   echo The counter is $COUNTER
                   let COUNTER=COUNTER+1
               done

 ÀÌ ½ºÅ©¸³Æ®´Â (C, Pascal, perl, python, ±âŸ µîµîÀ¸·Î ÀÎÇÏ¿©) Àß ¾Ë·ÁÁø
 for ¸¦ Èä³»³»°í ÀÖ´Ù.

 7.4.  Until À» »ç¿ëÇÏ´Â ¿¹

               #!/bin/bash
               COUNTER=20
               until [  $COUNTER -lt 10 ]; do
                   echo COUNTER $COUNTER
                   let COUNTER-=1
               done

 8.  ÇÔ¼ö

 °ÅÀÇ ¸ðµç ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­, ´ç½ÅÀº ÄÚµåÀÇ ¹­À½ÀÎ ÇÔ¼ö¸¦ ³í¸®ÀûÀÎ
 ÀÌÁ¡ ȤÀº Àç±ÍÀûÀÎ ¹ÌÇп¡ ÀÇÇØ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

 ÇÔ¼ö¸¦ ¿ÀÁ÷ function ÇÔ¼öÀ̸§ { Èû¼öÄÚµå }ÀÇ Çü½ÄÀ¸·Î ½á º¸¾Æ¶ó.

 ÇÔ¼ö¶ó ºÒ¸®´Â °ÍÀº ´ç½ÅÀÌ À̸§À» ºÙÀÌ´Â ¶Ç ´Ù¸¥ ÇÁ·Î±×·¥°ú °°´Ù.

 8.1.  ÇÔ¼ö ¿¹Á¦

            #!/bin/bash
            function quit {
                exit
            }
            function hello {
                echo Hello!
            }
            hello
            quit
            echo foo

 2¹ø° ÁÙ¿¡¼­ 4¹ø° ÁÙÀº quit ¶ó´Â ÇÔ¼ö¸¦, 5¹ø° ÁÙ¿¡¼­ 7¹ø° ÁÙÀº
 hello¶ó´Â ÇÔ¼ö¸¦ Æ÷ÇÔÇÑ´Ù. ´ç½ÅÀÌ ÀÌ¿Í °°Àº ½ºÅ©¸³Æ®°¡ ¾î¶»°Ô
 ½ÇÇàµÇ´ÂÁö¸¦ ÀÌÇØÇÒ ¼ö ¾ø´Ù¸é ´õ ³ë·ÂÇØ ÁÖ¾úÀ¸¸é ÇÑ´Ù.

 ÇÔ¼ö´Â ¾î¶² Ưº°ÇÑ ¸í·ÉÀ» ÅëÇØ ¼±¾ðµÉ ÇÊ¿ä°¡ ¾ø´Ù´Â °Í¿¡ ÁÖÀÇÇÏÀÚ.

 ÀÌ ½ºÅ©¸³Æ®´Â ¸ÕÀú hello¸¦ È£ÃâÇÏ°í, ±× ´ÙÀ½À¸·Î quit ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.
 ±×¸®°í quit ÇÔ¼ö¿¡¼­ ½ºÅ©¸³Æ®°¡ ³¡³ª±â ¶§¹®¿¡ ÀÌ ÇÁ·Î±×·¥Àº 10¹ø° ÁÙÀº
 ½ÇÇàÇÏÁö ¸øÇÑ´Ù.

 8.2.  ¸Å°³º¯¼ö¸¦ »ç¿ëÇÏ´Â ÇÔ¼ö ¿¹Á¦

                      #!/bin/bash
                      function quit {
                         exit
                      }
                      function e {
                          echo $1
                      }
                      e Hello
                      e World
                      quit
                      echo foo

 ÀÌ ½ºÅ©¸³Æ®´Â ¸ÕÀú º» °Í°ú °ÅÀÇ °°Àº °ÍÀÌ´Ù. °¡Àå ´Þ¶óÁø °ÍÀº e¶ó´Â
 ÇÔ¼öÀÌ´Ù. ÀÌ ÇÔ¼ö´Â ù¹ø° Àμö¸¦ µ¹·Á¹Þ¾Æ Ãâ·ÂÇÑ´Ù. ÇÔ¼ö¿¡¼­ÀÇ Àμö´Â
 ½ºÅ©¸³Æ®¿¡¼­ ¹ÞÀº Àμö¿¡ ´ëÇÑ °°Àº ¹æ½ÄÀ¸·Î Ãë±ÞµÈ´Ù.

 9.  »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º

 9.1. ´Ü¼øÇÑ ¸Þ´º¸¦ ¸¸µé±â À§ÇÑ select ¹® ÀÌ¿ëÇϱâ

            #!/bin/bash
            OPTIONS="Hello Quit"
            select opt in $OPTIONS; do
                if [ $opt = "Quit" ]; then
                 echo done
                 exit
                elif [ $opt = "Hello" ]; then
                 echo Hello World
                else
                 clear
                 echo bad option
                fi
            done
 ´ç½ÅÀÌ ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ¸é ´ç½ÅÀº ÇÁ·Î±×·¡¸ÓµéÀÌ ¹Ù¶ó´Â ´Ü¼øÇÑ
 ÅؽºÆ® ±â¹ÝÀÇ ¸Þ´º¸¦ º¸°Ô µÉ °ÍÀÌ´Ù. ´ç½ÅÀº ÀÌ°ÍÀÌ °¢°¢ÀÇ ´Ü¾î°¡
 $OPTION°ú ÀÏÄ¡ÇÒ ¶§ ½ÇÇàµÈ´Ù´Â Á¡¿¡¼­ 'for'ÀÇ »ç¿ë°ú ºñ½ÁÇÏ´Ù´Â Á¡¿¡
 ÁÖ¸ñÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.

 9.2. ¸í·ÉÇàÀ» ÀÌ¿ëÇϱâ

                #!/bin/bash
                if [ -z $1 ]; then
                    echo usage: $0 directory
                    exit
                fi
                SRCD=$1
                TGTD="/var/backups/"
                OF=home-$(date +%Y%m%d).tgz
                tar -cZf $TGTD$OF $SRCD

 ÀÌ ½ºÅ©¸³Æ®ÀÇ °á°ú´Â ´ç½Å¿¡°Ô ¾ÆÁÖ ¸íÄèÇÏ°Ô ´Ù°¡¿Ã °ÍÀÌ´Ù. ù¹ø° Á¶°Ç
 Å×½ºÆ®ÀÇ Ç¥Çö¿¡¼­ ÇÁ·Î±×·¥Àº ($1)À̶ó´Â Àμö¸¦ ¹Þ°í Á¾·áÇϰųª ȤÀº
 ±×·¸Áö ¾Ê°í »ç¿ëÀÚ¿¡°Ô ªÀº °æ°íÀÇ ¸Þ½ÃÁö¸¦ ³»º¸ÀÏ °ÍÀÌ´Ù. ÀÌ ½ºÅ©¸³Æ®ÀÇ
 °á°ú´Â ÀÌ·± Á¡¿¡¼­ ´Ü¼øÇÑ °ÍÀÌ´Ù.

 10. ´õ ¸¹ÀÌ ¾Ë±â

 10.1. read ¹®À¸·Î »ç¿ëÀÚ ÀÔ·Â ¹Þ±â

 ¸¹Àº °æ¿ì ´ç½ÅÀº ÇÁ·ÒÇÁÆ® »ó¿¡¼­ »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ¹Þ¾Æ ±×¿¡ µû¸¥ µ¿ÀÛÀ»
 Çϵµ·Ï ÇÁ·Î±×·¥À» ÀÛ¼ºÇϱ⸦ ¿øÇÒ °ÍÀÌ´Ù. ¸î °¡Áö ¹æ¹ý Áß¿¡¼­µµ ÀÌ°ÍÀÌ
 °¡Àå ÀϹÝÀûÀÎ ¿¹ÀÌ´Ù.

                 #!/bin/bash
                 echo Please, enter your name
                 read NAME
                 echo "Hi $NAME!"

 º¯¼ö¿¡¼­, ´ç½ÅÀº ´Ù¾çÇÑ °ªÀ» ÀÐ¾î µéÀÏ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ ¿¹Á¦°¡ ±×°ÍÀ»
 ´ÜÀûÀ¸·Î º¸¿© ÁØ´Ù.

                      #!/bin/bash
                      echo Please, enter your firstname and lastname
                      read FN LN
                      echo "Hi! $LN, $FN !"

 10.2. »ê¼úÀûÀÎ °è»ê

 ¸í·ÉÇà »ó¿¡¼­ ´ÙÀ½À» ÀÔ·ÂÇØ º¸ÀÚ.:

 echo 1 + 1

 ´ç½ÅÀÌ '2'¸¦ ¾ò±â¸¦ ¿øÇÑ´Ù¸é, ºÐ¸íÈ÷ Âø°¢ÇÑ °ÍÀÌ´Ù. ´ç½ÅÀÌ ¼ýÀÚ¸¦
 ÀÔ·ÂÇÏ¿© °è»êÇÏ¿© ±× °á°ú·Î¼­ ¿øÇÏ´Â °ªÀ» ¾ò±â À§Çؼ­ BASH ¿¡¼­´Â ´ÙÀ½°ú
 °°ÀÌ ÇØ¾ß ÇÑ´Ù.:

 echo $((1+1))

 ÀÌ°ÍÀº Á¶±Ý ´õ ³í¸®ÀûÀÎ Ãâ·ÂÀÌ ÀÌ·ç¾îÁø´Ù. ÀÌ°ÍÀº ´õ¿í »ê¼úÀûÀΠǥÇöÀÌ´Ù.
 ´ç½ÅÀº ÀÌ¿Í °°ÀÌ ³ªÅ¸³¾ ¼öµµ ÀÖ´Ù. :

 echo $[1+1]

 ´ç½ÅÀÌ ³ª´°¼ÀÀ̳ª ȤÀº ´õ ¿©·¯°¡Áö ´ç½ÅÀÌ ¿øÇÏ´Â ¼öÇÐÀûÀÎ °è»êÀ» ÇÊ¿ä·Î
 ÇÑ´Ù¸é, ´ç½ÅÀº bc¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù.

 ¸¸ÀÏ ³»°¡ "echo $[3/4]"¸¦ ¸í·ÉÇà¿¡¼­ ½ÇÇàÇÏ¿´´Ù¸é, ÀÌ°ÍÀº 0À» ´äÀ¸·Î
 ³»³õ´Â´Ù. ±×°ÍÀº bash´Â ¿ÀÁ÷ Á¤¼ö¸¸À» Ãë±ÞÇϱ⠶§¹®ÀÌ´Ù. ¸¸ÀÏ ´ç½ÅÀÌ
 "echo 3/4|bc -l" ¸¦ ½ÇÇàÇÑ´Ù¸é ´ç½ÅÀº ¿øÇÏ´Â °ªÀÎ 0.75¸¦ ¾òÀ» ¼ö ÀÖ´Ù.

 10.3. bash¸¦ ã±â

 (¸¶ÀÌÅ©°¡ º¸³»ÁØ ³»¿ëÀÌ´Ù. Âü °¨»çÇÏ°í ÀÖ°í.....)

 ¿ì¸®°¡ Áö±Ý±îÁö ´Ù·é ¿¹¿¡¼­ ¿ì¸®´Â #!/bin/bash ÀÇ ²Ã·Î »ç¿ëÇß´Ù.

 bash°¡ ¾îµð ÀÖ´ÂÁö ãÀ¸·Á¸é ¾î¶»°Ô ÇØ¾ß ÇÒ±î? ´ÙÀ½ÀÇ À§Ä¡¸¦ È®ÀÎÇØ º¸ÀÚ.

 ls -l /bin/bash
 ls -l /sbin/bash
 ls -l /usr/local/bin/bash
 ls -l /usr/bin/bash
 ls -l /usr/sbin/bash
 ls -l /usr/local/sbin/bash

 ÃÖ¼ÒÇÑ ³»°¡ ãÀº °ÍÀº ÀÌ Á¤µµÀÌ´Ù. ´Ù¸¥ ½Ã½ºÅÛ¿¡¼­´Â ´Ù¸¥ ¹æ½ÄÀÌ Àû¿ëµÉ
 °ÍÀÌ´Ù. ȤÀº ´ç½ÅÀº 'wich bash'¸¦ ÀÌ¿ëÇÒ ¼öµµ ÀÖ´Ù.

 10.4. ÇÁ·Î±×·¥ÀÌ µÇµ¹¸®´Â °ª ¹Þ±â

 bash¿¡¼­, ÇÁ·Î±×·¥ÀÌ µÇµ¹¸®´Â °ªÀº Ưº°ÇÑ º¯¼öÀÎ $? ¸¦ »ç¿ëÇÏ°Ô µÈ´Ù.

 ´ÙÀ½ÀÇ °ÍÀº ÇÁ·Î±×·¥ÀÌ µÇµ¹¸®´Â °ªÀ» ĸóÇϱâ À§ÇÑ °ÍÀÌ´Ù. ³ª´Â dada ¶ó´Â
 µð·ºÅ丮°¡ Á¸ÀçÇÏÁö ¾ÊÀ½À» °¡Á¤ÇÏ°í ÀÖ´Ù. (ÀÌ°Í ¿ª½Ã ¸¶ÀÌÅ©ÀÇ ÀÛÇ°ÀÌ´Ù.)

              #!/bin/bash
              cd /dada &> /dev/null
              echo rv: $?
              cd $(pwd) &> /dev/null
              echo rv: $?



 10.5.  ¸í·ÉÀÇ °á°ú ĸóÇϱâ

 ÀÌ ÂªÀº ½ºÅ©¸³Æ®´Â µ¥ÀÌÅÍ º£À̽º ¾ÈÀÇ ¸ðµç Å×À̺íÀ» º¸¿© ÁØ´Ù.(´ç½ÅÀÌ
 MySQLÀ» »ç¿ëÇÏ°í ÀÖÀ» ¶§ÀÇ À̾߱âÀÌ´Ù.) ¿ª½Ã, mysqlÀÇ »ç¿ëÀÚ À̸§°ú
 Æнº¿öµå¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

              #!/bin/bash
              DBS=`mysql -uroot  -e"show databases"`
              for b in $DBS ;
              do
                      mysql -uroot -e"show tables from $b"
              done

 10.6. ´ÙÁß ¼Ò½º ÆÄÀÏ

 ´ç½ÅÀº ¸í·É ¼Ò½º°¡ ´ã±ä ¿©·¯ ÆÄÀϵéÀ» µ¿½Ã¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

 __Á÷Á¢ ÇØ º¸ÀÚ__

 11. Ç¥

 11.1. ¹®ÀÚ¿­ ºñ±³ ¿¬»êÀÚ

 (1) s1 = s2
 (2) s1 != s2
 (3) s1 < s2
 (4) s1 > s2
 (5) -n s1
 (6) -z s1

 (1) s1 Àº  s2 ¿Í °°´Ù.
 (2) s1 Àº  s2 ¿Í °°Áö ¾Ê´Ù.
 (3) __Á÷Á¢ ÇØ º¸ÀÚ__
 (4) __Á÷Á¢ ÇØ º¸ÀÚ__
 (5) s1 Àº ºó ¹®ÀÚ¿­ÀÌ ¾Æ´Ï´Ù.(Áï ÇÑ °³ ÀÌ»óÀÇ ¹®ÀÚ¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù.)
 (6) s1 Àº ºó ¹®ÀÚ¿­ÀÌ´Ù.

 11.2. ¹®ÀÚ¿­ ºñ±³ÀÇ ¿¹Á¦

 µÎ ¹®ÀÚ¿­À» °¡Á¤ÇÏÀÚ.

              #!/bin/bash
              S1='string'
              S2='String'
              if [ $S1=$S2 ];
              then
                      echo "S1('$S1') is not equal to S2('$S2')"
              fi
              if [ $S1=$S1 ];
              then
                      echo "S1('$S1') is equal to S1('$S1')"
              fi

 11.3. »ê¼ú ¿¬»êÀÚ

 +
 -
 *
 /
 % (³ª¸ÓÁö)

 11.4. »ê¼ú °ü°è ¿¬»êÀÚ

 -lt (<)
 -gt (>)
 -le (<=)
 -ge (>=)
 -eq (==)
 -ne (!=)

 C ÇÁ·Î±×·¡¸ÓµéÀº À̰͵éÀ» ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

 11.5. À¯¿ëÇÑ ¸í·Éµé

 sed  (À¯¿ëÇÑ ¿¡µðÅÍ)
 gawk
 grep (ÀÏÄ¡ÇÏ´Â °ÍÀÌ ÀÖ´Â Áö °Ë»ö)
 wc   (´Ü¾î ȤÀº ÁÙ ¼ö¸¦ È®ÀÎ)
 sort
 bc   (°è»ê±â)
 cut  (ÇàÀ» ¼öÁ¤ÇÑ´Ù.)
 tput (ÀϹÝÀûÀÎ Å͹̳ο¡¼­ Á¤º¸¸¦ ¾ò¾î ¿Â´Ù)

 À̰͵éÀº ÇÁ·Î±×·¥À» ¸¸µé¸é¼­ À¯¿ëÇÏ°í ¶ÇÇÑ ÀÚÁÖ »ç¿ëÇÏ°Ô µÉ °ÍµéÀÌ´Ù.
 (±×·± °Íµé Áß¿¡¼­µµ ÃÖ¼ÒÇÑÀÌ´Ù!) ÀÛÀº ÇÁ·Î±×·¥Àº ´ç½Å¿¡°Ô ¸í·ÉÇà¿¡¼­
 ÁøÁ¤ÇÑ ¸¶¹ýÀ» ÆîÄ¡µµ·Ï ÇØ ÁÙ °ÍÀÌ´Ù.


 12.  ´Ù¸¥ ½ºÅ©¸³Æ®µé

 12.1. µð·ºÅ丮 ¾ÈÀÇ ¸ðµç ÆÄÀÏ¿¡ Àû¿ëÇϱâ

 12.2. ¾ÆÁÖ °£´ÜÇÑ ¹é¾÷ ½ºÅ©¸³Æ®(Á¶±Ý ´õ ³ª¾ÆÁø °Í)

             #!/bin/bash
             SRCD="/home/"
             TGTD="/var/backups/"
             OF=home-$(date +%Y%m%d).tgz
             tar -cZf $TGTD$OF $SRCD

 12.3. ÆÄÀÏ À̸§À» ¹Ù²ã ÁÖ´Â ½ºÅ©¸³Æ®

              #!/bin/sh
              # renna: rename multiple files according to several rules
              # written by felix hudson Jan - 2000

              #first check for the various 'modes' that this program has
              #if the first ($1) condition matches then we execute that portion of the
              #program and then exit

              # check for the prefix condition
              if [ $1 = p ]; then

              #we now get rid of the mode ($1) variable and prefix ($2)
                prefix=$2 ; shift ; shift

              # a quick check to see if any files were given
              # if none then its better not to do anything than rename some non-existent
              # files!!

                if [$1 = ]; then
                   echo "no files given"
                   exit 0
                fi

              # this for loop iterates through all of the files that we gave the program
              # it does one rename per file given
                for file in $*
                  do
                  mv ${file} $prefix$file
                done

              #we now exit the program
                exit 0
              fi

              # check for a suffix rename
              # the rest of this part is virtually identical to the previous section
              # please see those notes
              if [ $1 = s ]; then
                suffix=$2 ; shift ; shift

                 if [$1 = ]; then
                  echo "no files given"
                 exit 0
                 fi

               for file in $*
                do
                 mv ${file} $file$suffix
               done

               exit 0
              fi

              # check for the replacement rename
              if [ $1 = r ]; then

                shift

              # i included this bit as to not damage any files if the user does not specify
              # anything to be done
              # just a safety measure

                if [ $# -lt 3 ] ; then
                  echo "usage: renna r [expression] [replacement] files... "
                  exit 0
                fi
              # remove other information
                OLD=$1 ; NEW=$2 ; shift ; shift

              # this for loop iterates through all of the files that we give the program
              # it does one rename per file given using the program 'sed'
              # this is a sinple command line program that parses standard input and
              # replaces a set expression with a give string
              # here we pass it the file name ( as standard input) and replace the nessesary
              # text

                for file in $*
                do
                  new=`echo ${file} | sed s/${OLD}/${NEW}/g`
                  mv ${file} $new
                done
              exit 0
              fi

              # if we have reached here then nothing proper was passed to the program
              # so we tell the user how to use it
              echo "usage;"
              echo " renna p [prefix] files.."
              echo " renna s [suffix] files.."
              echo " renna r [expression] [replacement] files.."
              exit 0

              # done!

 12.4. ÆÄÀÏ À̸§À» ¹Ù²ã ÁÖ´Â ½ºÅ©¸³Æ®(°£´ÜÇÑ °Í)

           #!/bin/bash
           # renames.sh
           # basic file renamer

           criteria=$1
           re_match=$2
           replace=$3

           for i in $( ls *$criteria* );
           do
               src=$i
               tgt=$(echo $i | sed -e "s/$re_match/$replace/")
               mv $src $tgt
           done


 13. ¹®Á¦°¡ »ý°åÀ» ¶§

 13.1. BASH¸¦ È£ÃâÇÏ´Â ¹æ¹ýµé

 ¸Ç ù¹ø° ÁÙ¿¡ ´ÙÀ½ ÇàÀ» Ãß°¡ÇÏ´Â °ÍÀÌ ÁÁÀº ¹æ¹ýÀÌ´Ù.

           #!/bin/bash -x

 ÀÌ°ÍÀº Èï¹Ì·Î¿î Ãâ·Â Çü½ÄÀ» ¸¸µé¾î ³½´Ù.

 14. ÀÌ ¹®¼­¿¡ °üÇÏ¿©

 ¹®¼­ÀÇ Á¤Á¤, ȤÀº ´ç½ÅÀÌ ÀÌ ¹®¼­¿¡¼­ Èï¹Ì¸¦ ´À³¢´Â ºÎºÐ¿¡ ´ëÇÑ Á¦¾ÈÀÌ
 ÀÚÀ¯·Ó´Ù. ³ª´Â ±×·± Á¡µéÀ» Â÷ÈÄÀÇ ¾÷µ¥ÀÌÆ®¿¡ ¹Ý¿µÇÒ °ÍÀÌ´Ù.
 (¾Æ·¡ ³»¿ëÀº ¹ø¿ªÇÏÁö ¾Ê½À´Ï´Ù. : ¿Å±â´Â Àΰ£ ÁÖ)

 14.1. ³»¿ëÀÇ º¸Áõ

 This documents comes with no warranty of any kind.  and all that

 14.2. Thanks to


 ? Nathan Hurst for sending a lot of corrections.

 ? Jon Abbott for sending comments about evaluating arithmetic
    expressions.

 ? Laurent Martelli for  translating this document to French (soon
    here the URL)
H

 ? Felix Hudson for writing the renna script

 ? Kees van den Broek (for sending many corrections)

 ? Mike (pink) made some suggestions about locating bash and testing
    files

 ? fiesh make a nice suggestion for the loops section.

 14.3. °»½Å

 Samples added on string comparison.

 v0.8 More little additions.

 v0.7 More corrections and some old TO-DO sections written.

 v0.6 Minor corrections.

 v0.5 Added the redirection section.

 v0.4 disapperd from its location due to my ex-boss and thid doc found
 it's new place at the proper url: www.linuxdoc.org.

 prior:  I don't rememeber and I didn't use rcs nor cvs :(



 14.4.  ´õ ¸¹Àº Á¤º¸

 Introduction to bash (under BE)
 http://org.laol.net/lamug/beforever/bashtut.htm

 Bourne Shell Programming http://207.213.123.70/book/

Modify Delete Post Reply Backward Forward List
Powered by Kang Jul Ki