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

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

9.1 ½© ½ºÅ©¸³Æ®: ÈïºÐÁ¦ ¸ÔÀº .BAT ÆÄÀÏ

±ä ¸í·ÉÁÙÀ» °£´ÜÇÏ°Ô ¾²±â À§Çؼ­ .BAT¸¦ »ç¿ëÇغ» ÀûÀÌ ÀÖÀ¸¸é(³ª´Â ¾ÆÁÖ ¸¹´Ù), profileÀ̳ª .bash_profile¿¡ ÀûÀýÇÑ alias ÇàÀ» »ðÀÔÇÔÀ¸·Î½á °°Àº ¸ñÀûÀÌ ¾ò¾îÁú ¼ö ÀÖ´Ù. ÇÏÁö¸¸ Á» ´õ º¹ÀâÇÑ .BAT¿¡ ´ëÇؼ­´Â ½©¿¡¼­ »ç¿ë °¡´ÉÇÑ ½ºÅ©¸³Æ® ¾ð¾î¸¦ ¾ÆÁÖ ÁÁ¾ÆÇÒ °ÍÀÌ´Ù. ¹Ù·Î °­·ÂÇÑ QBasicÀÌ ±× Áß Çϳª´Ù. ¿©±â¿£ º¯¼ö¿Í while, for, case if... then... else°°Àº ±¸Á¶¸¦ ºñ·ÔÇÏ¿© ¿©·¯ °¡Áö ±â´ÉµéÀÌ ÀÖ´Ù: 'ÁøÂ¥' ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ÁÁÀº ´ë¾ÈÀÌ µÉ ¼ö ÀÖ´Â °ÍÀÌ´Ù.

½ºÅ©¸³Æ®---µµ½ºÀÇ .BAT ÆÄÀÏ¿¡ ÇØ´çÇÏ´Â °Í---¸¦ ÀÛ¼ºÇÏ´Â °ÍÀº ´ÜÁö ÀνºÆ®·°¼Çµé·Î µÈ Ç¥ÁØ ASCII ÆÄÀÏÀ» ÀÛ¼ºÇÏÇÑ ´ÙÀ½ ÀúÀåÇÏ°í chmod +x <½ºÅ©¸³Æ®ÆÄÀÏ>À» »ç¿ëÇÏ¿© ½ÇÇà °¡´ÉÇÏ°Ô ¸¸µé¾îÁÖ¸é µÈ´Ù. ½ÇÇàÇÏ´Â °ÍÀº À̸§À» ÀÔ·ÂÇÏ¸é µÈ´Ù.

ÁÖÀÇ ÇÒ Á¡ ÇÑ°¡Áö. vi¶ó ºÒ¸®´Â ½Ã½ºÅÛ ÆíÁý±â°¡ Àִµ¥ ³» °æÇè¿¡ ÀÇÇϸé óÀ½ »ç¿ëÇÏ´Â »ç¶÷µéÀº ¸Å¿ì ¾î·Á¿öÇÑ´Ù. vi ÆíÁý±âÀÇ »ç¿ë¹ý¿¡ ´ëÇؼ­´Â ¼³¸íÇÏÁö ¾Ê°Ú´Ù. Matt WelshÀÇ Ã¥À̳ª ÀÎÅͳݿ¡¼­ ¼³¸í¼­¸¦ ã¾Æº¼ °ÍÀ» ±ÇÇÑ´Ù. ¿©±â¼­´Â ´ÙÀ½°ú °°Àº °ÍµéÀ» ¾ð±ÞÇÏ´Â °ÍÀ¸·Î ÃæºÐÇÒ °Í °°´Ù.

Ãʺ¸ÀÚ¸¦ À§ÇÑ ÁÁÀº ÆíÁý±â´Â joeÀÌ´Ù: jstar¸¦ ÀÔ·ÂÇؼ­ joe¸¦ ½ÃÀÛÇϸé DOSWinÀÇ ÆíÁý±â¿Í ¶È °°Àº Å° ¹ÙÀεùÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. WordStarÀÇ jed ¶Ç´Â IDE´Â ´õ¿í ÁÁ´Ù. "Where to Find Applicaions"¼½¼ÇÀ» ÂüÁ¶ÇÏ¸é ¾îµð¿¡¼­ À̵é ÆíÁý±â¸¦ ±¸ÇÒ ¼ö ÀÖ´ÂÁö ³ª¿ÍÀÖ´Ù.

bashÀÇ ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÏ´Â °ÍÀº ¸Å¿ì Å« ÁÖÁ¦À̱⠶§¹®¿¡ ±× ÀÚü¸¸À¸·Îµµ Ã¥ ÇÑ ±ÇÀÌ µÈ´Ù. ±×·¡¼­ ´õ ±íÀÌ ¼³¸íÇÏÁö´Â ¾Ê°Ú´Ù. ´ÜÁö ±âº»ÀûÀÎ ±ÔÄ¢À» ±ú´ÞÀ» ¼ö ÀÖ´Â ½© ½ºÅ©¸³Æ® ¿¹Á¦ ¸î °³¸¦ º¸¿©ÁÖ°Ú´Ù:



#!/bin/sh
# sample.sh
# ³ª´Â ÄÚ¸àÆ®(ÁÖ¼®)
# ù¹ø° ÁÙÀº ¹Ù²ÙÁö ¸» °Í °Å±â¿¡ ÀÖ¾î¾ß ÇÔ
echo "ÀÌ ½Ã½ºÅÛÀº: 'uname -a'" # ¸í·ÉÀÇ Ãâ·ÂÀ» »ç¿ëÇÔ
echo "³» À̸§Àº $0" # ³»Àå º¯¼ö
echo "´ç½ÅÀº ´ÙÀ½À» ÁÖ¾úÀ½ $# ¸Å°³º¯¼ö: "$*
echo "ù ¹ø° ¸Å°³º¯¼ö´Â: "$1
echo -n "À̸§Àº?" ; read your_name
echo Â÷ÀÌÁ¡À» Àß º¸ÀÚ: "¾È³ç $your_name" # "·Î Àο빮 ³Ö±â
echo Â÷ÀÌÁ¡À» Àß º¸ÀÚ: '¾È³ç $your_name' # '·Î Àο빮 ³Ö±â
DIRS=0 ; FILES=0
for file in 'ls .' ; do
        if [ -d ${file} ] ; then # fileÀÌ µð·ºÅ丮¶ó¸é
                DIRS='exr $DIRS + 1' # DIRS = DIRS + 1
        elif [ -f ${file} ] ; then
                FILES='expr $FILES +1'
        fi      case ${file} in
                *.gif|*jpg) echo "${file}: graphic file" ;;
                *.txt|*.tex) echo "${file}: text file" ;;
                *.c|*.f|*.for) echo "${file}: source file" ;;
                *) echo "${file}: genric file" ;;
        esac
done
echo " ${DIRS} µð·ºÅ丮¿Í ${FILES}°¡ Á¸ÀçÇÑ´Ù"
ls | grep "ZxY--!!!WKW"
if [ $? != 0 ] ; then # ¸¶Áö¸· ÄÚµå Á¾·á        
echo "ZxY--!!!WKW ¸ø ãÀ½"
fi
echo "ÀÌ»ó... Ãß°¡ Á¤º¸°¡ ÇÊ¿äÇϸé 'man bash'¸¦ ÀÔ·ÂÇÒ °Í."

9.2 C È¥ÀÚ ¹è¿ì±â

À¯´Ð½º¿¡¼­´Â ÁÁ°Ç ½È°Ç ½Ã½ºÅÛ ¾ð¾î°¡ C´Ù. ¿©·¯ ´Ù¸¥ ¾ð¾îµé(Java, FORTRAN, Pascal, Lisp, Basic, Perl awk...)µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

C¸¦ ¾È´Ù´Â °ÍÀ» °¡Á¤ÇÏ°í Åͺ¸ C++ µî µµ½º¿ë¿¡ ¹ö¸©ÀÌ ³ªºüÁø »ç¶÷µéÀ» À§ÇÑ °¡À̵带 ¸î °³ ¾Ë·ÁÁÖ°Ú´Ù. ¸®´ª½ºÀÇ C ÄÄÆÄÀÏ·¯´Â gcc¶ó°í ºÒ¸®¸ç DOS ¿ë¿¡ ÀÖ´Â ¼ö ¸¹Àº º§°ú ÈÖ½½µéÀÌ ¾ø´Ù. ´Ù½Ã ¸»Çؼ­ IDE, ¿Â¶óÀÎ µµ¿ò¸», ÅëÇÕµÈ µð¹ö°Å µîÀÌ ¾ø´Ù. ±×³É °ÅÄ£ ¸í·ÉÇà ÄÄÆÄÀÏ·¯ÀÏ »ÓÀÌ¸ç ¾ÆÁÖ °­·ÂÇÏ°í È¿À²ÀûÀÌ´Ù. ´©±¸³ª ´Ù ¹è¿ì´Â Ç¥ÁØ hello.c¸¦ ÄÄÆÄÀÏ ÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÑ´Ù.

        $ gcc hello.c

±×·¯¸é ½ÇÇà °¡´É ÆÄÀÏÀÎ a.outÀÌ ¸¸µé¾îÁø´Ù. ±× ½ÇÇà ÆÄÀÏ¿¡ ´Ù¸¥ À̸§À» ÁÖ·Á¸é ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÑ´Ù.

        $ gcc -o hola hello.c                   
ÇÁ·Î±×·¥¿¡ ¶óÀ̺귯¸®¸¦ ¸µÅ©ÇÏ·Á¸é -l<libname>¸¦ ½ºÀ§Ä¡·Î ºÙÀÌ¸é µÈ´Ù. ¿¹¸¦ µé¾î, math ¶óÀ̺귯¸®¸¦ ¸µÅ©ÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù:

        $ gcc -o mathprog mathprog.c -lm                        
( -l<libname> ½ºÀ§Ä¡´Â gcc·Î ÇÏ¿©±Ý ¶óÀ̺귯¸®ÀÎ /usr/lib/lib<libname> ¸¦ ¸µÅ©ÇÏ°Ô ¸¸µç´Ù. so; so -lmÀº /usr/lib/libm.so¸¦ ¸µÅ©ÇÑ´Ù).

ÀÌÁ¦±îÁö´Â ¼øÁ¶·Î¿ü´Ù. ÇÏÁö¸¸ ÇÁ·Î±×·¥ÀÌ ¿©·¯ °³ÀÇ ¼Ò½º ÆÄÀÏ·Î ¸¸µé¾îÁ³À» ¶§´Â À¯Æ¿¸®Æ¼ÀÎ make¸¦ »ç¿ëÇØ¾ß µÈ´Ù. Ç¥Çö Çؼ®±â¸¦ ÀÛ¼ºÇß´Ù°í °¡Á¤ÇÏÀÚ. ±× ¼Ò½º ÆÄÀÏÀ» parser.c ¶ó°í ºÎ¸£°í parser.h¿Í calc.c µÎ °³ÀÇ Çì´õ ÆÄÀÏÀ» #include ½ÃŲ´Ù. ±×·± ´ÙÀ½ calc.c¶ó°í ÇÏ´Â ÇÁ·Î±×·¥¿¡¼­ parser.c¿¡ ÀÖ´Â ·çƾÀ» »ç¿ëÇÏ°í ½Í´Ù°í ÇÏÀÚ. ±×·¯¸é ¼øÂ÷ÀûÀ¸·Î parser.h°¡ #include µÈ´Ù. ¾ó¸¶³ª º¹ÀâÇÑ°¡! calc.c¸¦ ÄÄÆÄÀÏ ÇÏ·Á¸é ¾î¶»°Ô ÇØ¾ß ÇÑ´Ü ¸»Àΰ¡?

¼ÒÀ§ MakefileÀ̶ó°í Ç®¸®´Â °ÍÀ» ÀÛ¼ºÇØ¾ß ÇÑ´Ù. ÀÌ´Â ÄÄÆÄÀÏ·¯¿¡°Ô ¼Ò½ºµé°ú °´Ã¼ ÆÄÀϵéÀÇ Á¾¼Ó¼ºÀ» ¾Ë·ÁÁØ´Ù.

¿¹Á¦¿¡¼­:


# ÀÌ°ÍÀº Makefile·Î calc.c¸¦ ÄÄÆÄÀÏ Çϴµ¥ »ç¿ëµÈ´Ù.
# Áö½ÃµÈ °÷¿¡¼­ <TAB> Å°¸¦ ´©¸¥´Ù!

calc: calc.o parser.o
<TAB>gcc -o calc calc.o parser.o -lm
# calc´Â ´ÙÀ½ µÎ °³ÀÇ °´Ã¼ ÆÄÀÏ¿¡ ÀÇÁ¸ÇÑ´Ù: 

calc.o, parser.ocalc.o: calc.c parser.h
<TAB>gcc -c calc.c
# calc.o´Â µÎ ¼Ò½º ÆÄÀÏ¿¡ ÀÇÁ¸ÇÑ´Ù

parser.o: parser.c parser.h xh.h
<TAB>gcc -c parser.c
# parser.o´Â ¼¼ °³ÀÇ ¼Ò½º ÆÄÀÏ¿¡ ÀÇÁ¸ÇÑ´Ù.

# MakefileÀÇ ³¡

ÀÌ ÆÄÀÏÀ» Makefile·Î ÀúÀåÇÏ°í make¸¦ ÀÔ·ÂÇÏ¿© ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ ÇÑ´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î calc.mak·Î ÀúÀåÇÑ ´ÙÀ½ make -f calc.mak ¶ó°í ÀÔ·ÂÇÑ´Ù. RMP´Â µÎ¸» ÇÒ ÇÊ¿äµµ ¾ø´Ù. ´ÙÀ½°ú °°ÀÌ Çϸé man ÆäÀÌÁö ¼½¼Ç 3¿¡ ÀÖ´Â C ±â´É¿¡ ´ëÇÑ ¾à°£ÀÇ µµ¿ò¸»À» ºÒ·¯¿Ã ¼ö ÀÖ´Ù.

        $ man 3 printf
ÇÁ·Î±×·¥À» µð¹ö±ëÇÏ·Á¸é gdb¸¦ »ç¿ëÇÑ´Ù. gdbÀÇ »ç¿ë¹ýÀ» ¾Ë°í ½ÍÀ¸¸é info gdb¶ó°í ÀÔ·ÂÇÑ´Ù. »ç¿ë °¡´ÉÇÑ ¶óÀ̺귯¸®´Â ¸¹ÀÌ ÀÖ´Ù. ±× Áß Á¦ÀÏ ¸ÕÀú »ç¿ëÇÏ°í ½ÍÀº °ÍÀº ncurse(ÅؽºÆ® ¸ðµå È¿°ú)¿Í svgalib(ÄÜ¼Ö ±×·¡ÇȽº)ÀÏ °ÍÀÌ´Ù. Çѹø °ú°¨ÇÏ°Ô X11 ÇÁ·Î±×·¡¹ÖÀ» Çغ¸°í ½ÍÀ¸¸é(±×·¸°Ô ¾î·Á¿î °ÍÀº ¾Æ´Ï´Ù) X11 ÇÁ·Î±×·¡¹ÖÀ» ¾ÆÁÖ ½±°Ô Çϵµ·Ï µµ¿ÍÁÖ´Â ¶óÀ̺귯¸®°¡ ¿©·µ ÀÖ´Ù. Gtk°¡ ¸®´ª½ºÀÇ Ç¥ÁØÀÌ µÇ¾î°¡°í ÀÖ´Ù´Â »ç½ÇÀ» ¿°µÎ¿¡ µÎ°í www.xnet.com/~blatura/linapp6.html¸¦ »ìÆ캸¶ó.

¸¹Àº ¿¡µðÅ͵éÀÌ IDE ¿ªÇÒÀ» ÇÒ ¼ö ÀÖ´Ù. ±× ¿¹·Î emacs¿Í jed°¡ Àִµ¥ ½ÅÅýº ÇÏÀ̶óÀÌÆ®, ÀÚµ¿ µé¿©¾²±â µîÀÇ ±â´ÉÀÌ ÀÖ´Ù. ´Ù¸¥ °ÍÀ¸·Î´Â sunsite.unc.edu:/pub/Linux/devel/debuggers/ ¿¡¼­ rhide ÆÐÅ°Áö¸¦ °¡Á®¿Â´Ù. ÀÌ°ÍÀº Borland IDE Ŭ·ÐÀ¸·Î ¾Æ¸¶ ÁÁ¾ÆÇÒ °ÍÀÌ´Ù.


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