´ÙÀ½ ÀÌÀü Â÷·Ê

6. ¾à°£ÀÇ ÇÁ·Î±×·¡¹Ö

6.1 ½ºÅ©¸³Æ® Â¥±â : .BAT È­ÀÏ ¸¸µé±â

±ä ¸í·É¾î¿¡ ´ëÇÑ ´ÜÃà ¸í·ÉÀ¸·Î¼­ .BAT È­ÀÏÀ» »ç¿ëÇÑ ÀûÀÌ ÀÖ´Ù¸é( º»ÀÎÀº ¸¹ÀÌ ±×·¯Çß´Ù ) profile À̳ª .profile ¾È¿¡´Ù( À§ÀÇ ¿¹ Âü°í ) ÀûÀýÇÑ alias ÇàÀ» ³Ö ¾îÁֱ⸸ ÇÏ¸é µÈ´Ù. ÇÏÁö¸¸ .BAT ÀÌ Á» ´õ º¹ÀâÇØÁø´Ù¸é ¼ÐÀ» ÅëÇØ »ç¿ëÇÒ ¼ö ÀÖ ´Â ½ºÅ©¸³Æ® ¾ð¾î¸¦ ¾ÖÈ£ÇÏ°Ô µÉ °ÍÀÌ´Ù. ´õ ³ªÀº °ÍÀº ¾Æ´Ï´õ¶óµµ QBASIC ¸¸Å­ÀÌ ³ª ¼ÐÀº °­·ÂÇÏ´Ù. º¯¼ö´Â ¹°·Ð while, for, case, if ... then ... else µîÀÇ Á¦¾î¹®ÀÌ ÀÖ°í ¶Ç ´Ù¸¥ ¸¹Àº ±â´ÉµéÀÌ µé¾îÀÖ´Ù.

´Ù¸¥ ½ÇÁ¦ÀûÀÎ ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ÁÁÀº ´ë¾ÈÀ̶ó°íµµ ÇÒ ¼ö ÀÖ´Ù. µµ½º¿¡¼­´Â .BAT ¿¡ ÇØ´çÇÏ´Â ½ºÅ©¸³Æ®¸¦ Â¥±â À§Çؼ± ¸í·É Áö½Ã¹®À» Æ÷ÇÔÇϴ ǥÁØ ¾Æ½ºÅ° È­ÀÏÀ» ¾²°í ÀúÀåÇÑ ´ÙÀ½, ¼öÇà°¡´ÉÇÏ°Ô ¸¸µé¾îÁÖ¸é µÈ´Ù.

$ chgmod u+x <scriptfile>

½ÇÇàÇϱâ À§Çؼ­´Â ±×³É À̸§À» ŸÀÌÇÎÇÑ´Ù. ÇÑ ¸¶µð °æ°í. ½Ã½ºÅÛ ÆíÁý±â´Â vi °¡ Àִµ¥ ¾à°£ ¹è¿ì±â ¾î·Á¿ï °ÍÀÌ´Ù. ¿©·¯ºÐÀÌ ¾î·Æ´Ù°í Åõ´ú´î °ÍÀ̶ó°í È®½ÅÇÏ¸ç º»ÀÎ ¶ÇÇÑ Á¦´ë·Î ¾ËÁö ¸øÇϹǷΠ¿©±â¼­ ¼³¸íÇÏÁö´Â ¾Ê°Ú´Ù. Matt Welsh¾¾ÀÇ "Linux installation..." ÆäÀÌÁö 109ÂÊ À» º¸¶ó. joe ³ª X ¿ë À̸ƽº µîÀ» ¼±ÅÃÇÏ´Â °Íµµ ÁÁ´Ù. ´ÙÀ½°ú °°À̸¸ ¸»ÇØµÎ¸é µÉ °Í °°´Ù.

- ÅؽºÆ®¸¦ ÀÔ·ÂÇϱâ À§ÇÏ¿© i ¸¦ ŸÀÌÇÎÇÑ ÈÄ ÅؽºÆ®¸¦ ÀÔ·ÂÇÑ´Ù. - ÀúÀåÇÏÁö ¾Ê°í ³¡³»±â À§Çؼ­´Â ESC Å°¸¦ ÇÑ ¹ø ´©¸£°í :q! ÇÏ¸é µÈ´Ù. - ÀúÀåÇÏ°í ³¡³»±â À§Çؼ­´Â ESC Å°¸¦ ÇÑ ¹ø ´©¸£°í :wq ÇÏ¸é µÈ´Ù.

Writing scripts under Linux is such a vast subject it would require a book ¸®´ª½º¿¡¼­ ½ºÅ©¸³Æ® Â¥´Â ÀÏÀº ±×°Í¸¸À¸·Îµµ ÇÑ ±ÇÀÌ Ã¥ÀÌ µÉ ¸¸Å­ ¹æ´ëÇÑ ºÐ·®ÀÇ ÁÖÁ¦ÀÌ´Ù. ±×¸®°í ´õ ±íÀÌ µé¾î°¡Áö´Â ¾ÊÀ» °ÍÀÌ´Ù. ´ÜÁö ¿©·¯ºÐ¿¡°Ô À¯¿ëÇÑ ¸î °¡ Áö ¿¹µé¿¡¼­ ¿©·¯ºÐÀÌ ±âº»ÀûÀÎ ±ÔÄ¢À» ¹ß°ßÇÒ ¼ö ÀÖµµ·Ï Á¦½ÃÇÏ°íÀÚ ÇÑ´Ù.


¿¹ 1 : first_script
        #!/bin/sh
        # ³ª´Â ÁÖ¼®¹®ÀÌ´Ù.
        # sh°¡ °Å±â ÀÖ¾î¾ß ÇϹǷΠù¹ø° ÁÙÀ» °íÄ¡Áö´Â ¸»¶ó.
        echo "¿À´ÃÀº `date`"
        echo "Á¦ À̸§Àº "$0
        echo "´ç½ÅÀº Àú¿¡°Ô ´ÙÀ½°ú °°Àº "$#" Àμö¸¦ Àü´ÞÇϼ̽À´Ï´Ù: "$*
        echo "ù¹ø° Àü´ÞÀμö´Â "$1
        echo "¹º°¡ °¨À» ÀâÀ¸¼Ì½À´Ï±î?"
¿¹ 2: 2exe
        #!/bin/sh
        echo "$1" À» ½ÇÇà°¡´ÉÄÉ ¸¸µé°í ÀÖ½À´Ï´Ù... "
        chmod u+x $1
¿¹ 3: backup
        #!/bin/sh
        echo "~/bak·Î È­ÀÏÀ» Ä«ÇÇ ÁßÀÔ´Ï´Ù"
        for name in $*
        do
          cp ${name} ~/bak
        done
¿¹ 4: fmta
        #!/bin/sh
        echo "¿À·ÎÁö ·çÆ®¸¸ÀÌ Æ÷¸ËÇÒ ¼ö ÀÖ½À´Ï´Ù"
        fdformat /dev/fd0H1440
        mkfs -t ext2 -c /dev/fd0H1440
        echo "µð½ºÅ©°¡ Æ÷¸ËµÇ¾ú½À´Ï´Ù."
¿¹ 5: mnta
        #!/bin/sh
        echo "¿À·ÎÁö ·çÆ®¸¸ÀÌ ¸¶¿îÆ®ÇÒ ¼ö ÀÖ½À´Ï´Ù"
        mount -t msdos /dev/fd0 /mnt
        echo "ÀÛ¾÷À» ¸¶Ä¡°í ³ª¼­ ²À umount ÇϽʽÿä."

6.2 ¿©·¯ºÐ È¥ÀÚ C ¸¦ ¹è¿ì±â

¸®´ª½º¿¡¼­ GW/BASIC °°Àº °ÍÀ» ±â´ëÇÏÁö´Â ¾ÊÀ» °ÍÀÌ´Ù. ±×·¸Áö ¾ÊÀº°¡? À¯´Ð½º °è¿­¿¡¼­ ½Ã½ºÅÛ ¾ð¾î´Â C À̸ç C ¸¦ »ç¶ûÇϱ⵵ ÇÏ°í C ¸¦ ¹Ì¿öÇϱ⵵ ÇÑ´Ù. ´Ù¸¥ ¸¹Àº ¾ð¾îµé(Æ÷Æ®¶õ, ÆĽºÄ®, LISP, º£À̽Ä... ÇÏÁö¸¸ Åͺ¸ ÆĽºÄ® °°Àº °ÍÀº ¾ø´Ù )ÀÌ ¶ÇÇÑ »ç¿ë°¡´ÉÇÏ´Ù.

¿©·¯ºÐÀÌ C ¸¦ ¾È´Ù°í °¡Á¤ÇÏ°í ¿©±â Åͺ¸ C++ À̳ª ´Ù¸¥ µµ½º¿ë C ¿¡ ±æµé¿©Á® ÀÖ À» ¿©·¯ºÐ¿¡°Ô ¸î °¡Áö »çÇ׿¡ ´ëÇØ ¾È³»¸¦ ÇÏ°íÀÚ ÇÑ´Ù. ¸®´ª½º¿¡¼­ÀÇ C ÄÄÆÄÀÏ·¯´Â gcc ÀÌ¸ç º¸Åë µµ½º¿ë¿¡¼­ º¼ ¼ö ÀÖ´Â ±×·¯ÇÑ È­·ÁÇÑ ¸éµéÀº ¾ø´Ù. ÅëÇÕȯ°æ(IDE), ¿Â¶óÀÎ µµ¿ò¸», ÅëÇÕ µð¹ö°Å µîÀº ã¾Æº¼ ¼ö ¾ø´Ù. ´ÜÁö Åõ¹ÚÇÑ ¸í·ÉÇà ¹æ½ÄÀÇ ÄÄÆÄÀÏ·¯ÀÌÁö¸¸ ¸Å¿ì °­·ÂÇÏ°í È¿À²ÀûÀÌ´Ù. ¿©·¯ºÐÀÇ ÀϹÝÀûÀÎ hello.c ¸¦ ÄÄÆÄÀÏÇϱâ À§Çؼ­´Â ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

        $ gcc hello.c
°á°ú´Â a.out À̶ó´Â ½ÇÇàÈ­ÀÏÀÌ´Ù. ½ÇÇàÈ­ÀÏÀÇ À̸§À» ´Ù¸£°Ô ÁÖ±â À§Çؼ­´Â
        $ gcc -o hola hello.c
¶óÀ̺귯¸®¿Í ÇÔ²² ÇÁ·Î±×·¥À» ¸µÅ©ÇÏ·Á¸é -l<arg> ½ºÀ§Ä¡¸¦ ºÙÀδÙ. ¿¹¸¦ µé¾î ¼öÇÐ ¶óÀ̺귯¸®¸¦ ¸µÅ©ÇÏ´Â °æ¿ì¿¡´Â
        $ gcc -o mathprog mathprog.c -lm
(The -l<arg> switch forces gcc to link the library /usr/lib/lib<arg>.a; so ( -l<arg> ½ºÀ§Ä¡´Â gcc ·Î ÇÏ¿©±Ý /usr/lib/lib<arg>.a ¸¦ ¸µÅ©Çϵµ·Ï ¸íÇÑ´Ù. µû¶ó¼­ -lm Àº /usr/lib/libm.a ¸¦ ¸µÅ©ÇÏ°Ô µÈ´Ù )

Àڱ׸¶ÇÑ ÇÁ·Î±×·¥¿¡´Â ±¦Âú´Ù. ÇÏÁö¸¸ ¿©·¯ °³ÀÇ ¼Ò½º·Î ±¸¼ºµÈ ÇÁ·Î±×·¥À» ¸¸µé ¶§´Â make À¯Æ¿¸®Æ¼¸¦ ½á¾ß ÇÒ °ÍÀÌ´Ù. ¿©·¯ºÐÀÌ ¼öÇÐ½Ä Æļ­(parser)¸¦ ¸¸µé¾ú´Ù °í Ä¡ÀÚ. ¼Ò½º È­ÀÏÀÇ À̸§Àº parser.c ¶ó°í ÇÏ°í parse.h¿Í xy.h 2 °³ÀÇ Çì´õ È­ÀÏ À» Æ÷ÇÔÇÑ´Ù°í Ä¡ÀÚ. ¿©·¯ºÐÀÌ calc.c ¶ó´Â ÇÁ·Î±×·¥¿¡¼­ parser.h ¸¦ ´Ù½Ã Æ÷ÇÔÇÏ °í parser.c ÀÇ ·çÆÃÀ» ÀÌ¿ëÇÏ·Á°í ÇÒ °ÍÀÌ´Ù. Á» º¹ÀâÇϱä ÇÏ´Ù. calc.c ¸¦ ÄÄÆÄ ÀÏÇÏ·Á¸é ¾î¶² ÀÏÀ» ÇØ¾ß Çϴ°¡?

¿©·¯ºÐÀº makefile À̶ó´Â °ÍÀ» ÀÛ¼ºÇØ¾ß ÇÑ´Ù. ±× makefile Àº ¼Ò½º¿Í ¿ÀºêÁ§Æ® È­ÀÏ°úÀÇ ¿¬°ü¼ºÀ» ¸»ÇØÁØ´Ù. ¿¹Á¦¸¦ º¸¸é,


        #  ÀÌ°ÍÀº calc.c ¸¦ ÄÄÆÄÀÏÇϱâ À§ÇÑ makefile ÀÌ´Ù.
        #  ÀûÀýÇÑ °÷¿¡¼­ <ÅÇ>Å°¸¦ ´©¸£±â ¹Ù¶õ´Ù.
        calc: calc.o parser.o
        <ÅÇ>gcc -o calc calc.o parser.o -lm
        # calc ´Â calc.o, parser.so ÀÌ 2 °³ÀÇ ¿ÀºêÁ§Æ® È­ÀÏ¿¡ ÀÇÁ¸ÇÑ´Ù.
        calc.o: calc.c parser.h
        <ÅÇ>gcc -c calc.c
        # calc.o Àº 2 °³ÀÇ È­ÀÏ¿¡ ÀÇÁ¸ÇÑ´Ù.
        parser.o:  parser.c parser.h xy.h
        <ÅÇ>gcc -c parser.c
        # parser.o ´Â 3 °³ÀÇ È­ÀÏ¿¡ ÀÇÁ¸ÇÑ´Ù.
        # makefile ÀÇ ³¡
makefile ·Î ÀúÀåÇÏ°í ÄÄÆÄÀÏÇϱâ À§ÇÏ¿© ´ÙÀ½°ú °°ÀÌ ½ÇÇàÇÑ´Ù.
        $ make
¶Ç´Â calc.mak ¶ó°í ÀúÀåÇÑ ´ÙÀ½, ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
        $ make -f calc.mak
¹°·Ð °ü·ÃµÈ ¹®¼­¸¦ ²À Àо±â ¹Ù¶õ´Ù. (RMP)
ÀÌ°Í ¸»°íµµ ¿©·¯ºÐÀº C ÇÔ¼ö¿¡ ´ëÇÑ µµ¿òÀ» ±× Áï½Ã ¾òÀ» ¼ö Àִµ¥ ´ÙÀ½°ú °°ÀÌ
ÇÏ¸é µÈ´Ù. ¿¹¸¦ µé¾î,
        $ man printf


´ÙÀ½ ÀÌÀü Â÷·Ê