½© ½ºÅ©¸³Æ® (Shell Script) - (¥±)

ÀÓÁ¾±Õ : hermes44@secsm.org /
¼­¿ï´ëÇб³ ÄÄÇ»ÅÍ°øÇаú /¸®´ª½º ÇÁ·Î±×·¡¸Ó

 

 

Ç¥ÁØ ÀÔÃâ·Â

    ÀÌÀü ±â»ç¿¡¼­ Ç¥ÁØ Ãâ·Â(stdout)À¸·Î Ãâ·ÂÀ» Çϱâ À§Çؼ­ echo ¸í·ÉÀ» - ¿ÜºÎ ÇÁ·Î±×·¥À¸·Î °°Àº ¿ªÇÒÀ» ÇÏ´Â echo°¡ ÀÖÁö¸¸ ¿©±â¼­ÀÇ echo´Â ½©ÀÇ ³»Àå(built-in)¸í·ÉÀÌ´Ù. - »ç¿ëÇÏ¿´´Ù. ±×·¸´Ù¸é Ç¥ÁØ ÀÔ·Â(stdin)À¸·Î »ç¿ëÀÚ ÀÔ·ÂÀ» ¹ÞÀ» ¼ö ÀÖ´Â ¹æ¹ýÀº? Ç¥ÁØ ÀÔ·ÂÀ» ¹Þ¾Æ º¯¼ö¿¡ ÀúÀåÀ» ÇØÁÖ´Â read ¸í·ÉÀÌ ÀÖ´Ù.
     

    $ cat ./stdio
    #!/bin/sh
    #
    # stdio: Ç¥ÁØ ÀÔ·ÂÀ» ¹Þ¾Æ Ç¥ÁØ Ãâ·ÂÀ¸·Î Ç¥½ÃÇÑ´Ù.
    #

    echo -n ¡°Type the filename: ¡°
    read filename

    if [ -e $filename ]
    then
    echo $filename exists.
    else
    echo $filename doesn¡¬¡¯t exist.  
    fi
    $ ./stdio
    Type the filename: /dev/fd0
    /dev/fd0 exists.
    $ ./stdio
    Type the filename: /dev/fd0 ./stdio
    ./stdio: [: /dev/fd0: binary operator expected
    /dev/fd0 ./stdio doesn¡¯t exist.

 

    stdio ¿¹Á¦¿¡¼­ ó·³ read´Â Ç¥ÁØ ÀÔ·ÂÀÇ ÇÑ ÁÙÀ» ¸ðµÎ filenameÀ̶ó´Â º¯¼ö¿¡ ³Ö´Â´Ù. (ÇÑ ÁÙÀº ¿£Å͸¦ ÀÔ·ÂÇÔÀ¸·Î¼­ ³¡³­´Ù.) ÇÏÁö¸¸ À§¿Í °°ÀÌ ÇÒ °æ¿ì, ÀԷ°ªÀÌ ¿©·¯ °³¶ó¸é ¹®Á¦°¡ »ý±æ ¼ö ÀÖ´Ù. µÎ °³ÀÇ ÆÄÀϸíÀ» °ø¹éÀ¸·Î ±¸ºÐÇÏ¿© ÀÔ·ÂÇÒ °æ¿ì °¢°¢ÀÌ µû·Î ÀúÀåµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó ÇϳªÀÇ filename º¯¼ö¿¡ µé¾î°¡±â ¶§¹®¿¡ if Á¶°Ç½Ä¿¡¼­ ½ÇÆи¦ ÇÑ´Ù. ÀÌ·± °æ¿ì °¡Àå óÀ½¿¡ ÀÔ·ÂµÈ ÆÄÀÏ¸í¸¸À» ¹Þ¾Æ ó¸®ÇÏ°í ³ª¸ÓÁö´Â ¹«½ÃÇÏ·Á¸é? read ´ÙÀ½¿¡ º¯¼ö¸¦ ¿©·¯ °³¸¦ ¸í½ÃÇÏ¸é µÈ´Ù. Ç¥ÁØ ÀÔ·ÂÀº °ø¹é ¹®ÀÚ·Î - ½ºÆäÀ̽º¿Í ÅÇ - ±¸ºÐÀÌ µÇ°í ±¸ºÐµÈ °¢°¢ÀÇ °ªµéÀº read ´ÙÀ½¿¡ ¸í½ÃµÈ º¯¼ö¿¡ Â÷·Ê·Î ä¿öÁø´Ù. °¡Àå ¸¶Áö¸· º¯¼ö¿¡´Â ³ª¸ÓÁö ³²¾ÆÀÖ´Â ÀԷ°ªµéÀÌ ¸ðµÎ ´Ù µé¾î°£´Ù.
     

    $ cat ./stdio2
    #!/bin/sh
    #
    # stdio2: Ç¥ÁØ ÀÔ·ÂÀ» ¹Þ¾Æ Ç¥ÁØ Ãâ·ÂÀ¸·Î Ç¥½ÃÇÑ´Ù.
    #

    echo -n ¡°Type the filename: ¡°
    read filename1 filename2 dummy

    for fn in $filename1 $filename2
    do
    if [ -e $fn ]
    then
    echo $fn exists.
    else
    echo $fn doesn¡¬¡¯t exist.
    fi
    done

    echo Ignore $dummy
    $ ./stdio2
    Type the filename: /dev/hda1 /etc/bashrc /bin/sh /bin/ls
    /dev/hda1 exists.
    /etc/bashrc exists.
    Ignore /bin/sh /bin/ls

 

    Áï, stdio2ÀÇ ¿¹¿¡¼­ °ø¹éÀ¸·Î ±¸ºÐµÈ ÀÔ·Â /dev/hda1Àº filename1¿¡, /etc/bashrc´Â filenam2¿¡ /bin/sh /bin/ls´Â dummy¿¡ µé¾î°¡°Ô µÇ´Â °ÍÀÌ´Ù.
    ¾ÏÈ£¸¦ ÀԷ¹ÞÀ» °æ¿ì¿Í °°ÀÌ Àá½Ã Å°º¸µå ÀÔ·ÂÀÌ È­¸é¿¡ Ç¥½ÃµÇÁö - ÀÌ·¸°Ô ÀÔ·ÂÀÌ È­¸é¿¡ Ãâ·ÂµÇ´Â °ÍÀ» echo¶ó°í ¸»ÇÑ´Ù. - ¾Ê°Ô ÇÏ·Á¸é stty ÇÁ·Î±×·¥À» ÀÌ¿ëÇÏ¿© echo¸¦ ¾ø¾Ö¸é µÈ´Ù. ÈÄ¿¡ ´Ù½Ã º¹¿øÀ» ÇؾßÇÑ´Ù. ½ºÅ©¸³Æ®°¡ echo¸¦ ´Ù½Ã º¹¿øÇÏÁö ¸øÇÏ°í ºñÁ¤»óÀûÀ¸·Î Á¾·áÇÒ °æ¿ì¸¦ ´ëºñÇÏ¿© ¹Ýµå½Ã trap ±¸¹®À» µÎ¾î¾ß ÇÑ´Ù.
     

    $ cat pswd
    #!/bin/sh
    #
    # pswd: ¾ÏÈ£¸¦ ÀԷ¹޴´Ù.
    #

    trap ¡®stty echo; exit¡¯ 0 1 2 3 15

    echo -n ¡°Enter password: ¡°
    stty -echo
    read password
    stty echo
    echo

    echo ¡°Your password is $password¡±

 

¸®´ÙÀÌ·º¼Ç (Redirection)

    ¿ì¸®´Â ½© »ó¿¡¼­ <, >, >>¸¦ ÀÌ¿ëÇÏ¿© Ç¥ÁØ ÀÔÃâ·ÂÀ» ¸®´ÙÀÌ·º¼Ç(redirection)ÇÒ ¼ö ÀÖ´Ù.
    ½© ½ºÅ©¸³Æ® »ó¿¡¼­µµ ±×¿Í °°Àº ÀÏÀÌ °¡´ÉÇÏ´Ù. exec¸¦ ÀÌ¿ëÇÏ´Â °ÍÀÌ´Ù.
     

    $ cat redirect
    #!/bin/sh
    #
    # redirect: Ç¥ÁØ ÀÔ·ÂÀ» ÆÄÀÏ·Î ¸®´ÙÀÌ·º¼ÇÇÑ´Ù.
    #

    temp=/tmp/delme$$
    # $$´Â ÇöÀç ÇÁ·Î¼¼½ºÀÇ id°ªÀ» ³Ñ°ÜÁØ´Ù.
    echo ¡°This is line1.
    This is line2.
    This is line3.¡± > $temp
    exec < $temp
    read line; echo $line
    read line; echo $line
    read line; echo $line
    $ ./redirect
    This is line1.
    This is line2.
    This is line3.

 

    redirect ¿¹Á¦¿¡¼­ exec ¸í·É¿¡ ÀÇÇؼ­ Ç¥ÁØ ÀÔ·ÂÀÌ /tmp/delme$$ ÆÄÀÏ·Î ¸®´ÙÀÌ·º¼ÇµÇ¾î read ¸í·ÉÀº ±× ÆÄÀÏ¿¡¼­ ÇÑ ÁÙ¾¿ ÀÔ·ÂÀ» ¹Þ°Ô µÈ´Ù. º» ½©ÀÇ ¸®´ÙÀÌ·º¼Ç¿¡¼­ °¢ Ç¥ÁØ ÀÔ·Â, Ç¥ÁØ Ãâ·Â, Ç¥ÁØ ¿¡·¯´Â ÆÄÀÏ µð½ºÅ©¸³ÅÍ 0, 1, 2¿¡ ÇØ´çÇÑ´Ù. ±× ¿Ü¿¡ 3~9±îÁö µð½ºÅ©¸³Å͸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
     

    $ cat fredirect
    #!/bin/sh
    #
    # fredirct: µ¿ÀûÀÎ ¸®´ÙÀÌ·º¼Ç º¯°æ
    #

    outfile=fredirect.out

    exec 3<&1
    # Ç¥ÁØ Ãâ·Â°ú 3¹ø ÆÄÀÏ µð½ºÅ©¸³Å͸¦ ÀÏÄ¡½ÃŲ´Ù.
    # Ç¥ÁØ Ãâ·ÂÀ» 3¹ø ÆÄÀÏ µð½ºÅ©¸³ÅÍ¿¡ ÀúÀåÇصδ ¿ªÇÒ

    /bin/rm -f $outfile

    while
    echo -n ¡°Enter command or CTRL-D to quit: ¡°
    read cmd
    do
    exec >> $outfile
    # Ç¥ÁØ Ãâ·ÂÀ» fredirect.out ÆÄÀÏ·Î ¸®´ÙÀÌ·º¼Ç
    echo $cmd
    exec >&3
    # ÆÄÀÏ·Î º¯È¯µÈ °ÍÀº ´Ù½Ã Ç¥ÁØ Ãâ·ÂÀ¸·Î º¹¿ø
    done
    $ ./fredirect
    Enter command or CTRL-D to quit: 21
    Enter command or CTRL-D to quit: 234
    Enter command or CTRL-D to quit: 2
    Enter command or CTRL-D to quit: sjf
    Enter command or CTRL-D to quit: sd
    Enter command or CTRL-D to quit: kd
    Enter command or CTRL-D to quit:
    $ cat fredirect.out
    21
    234
    2
    sjf
    sd
    kd

 

    while, until, for, if, case ±¸¹®¿¡¼­ °¡Àå ¸¶Áö¸· ÁÙ¿¡ - done, fi, esac µÚ¿¡ - ¸®´ÙÀÌ·º¼ÇÀ» ÁöÁ¤ÇÏ¿© ±× ±¸¹® ³»¿¡¼­ÀÇ ÀÔÃâ·Â¸¸À» º¯°æÇÒ ¼ö ÀÖ´Ù. ±× ±¸¹®À» ºüÁ®³ª¿Ã ¶§¿¡´Â ¿ø·¡´ë·Î º¹¿øÀÌ µÈ´Ù.
     

    $ cat bredirect
    #!/bin/sh
    #
    # bredirct: ƯÁ¤ ±¸¹®¿¡¼­¸¸ ¸®´ÙÀÌ·º¼ÇÀ» ÇÑ´Ù.
    #

    for arg
    do
    echo $arg
    done > bredirect.out 2> /tmp/bredirect.err

    # ¿¡·¯¸¦ Ç¥ÁØ ¿¡·¯·Î Ãâ·ÂÇÏ°í Àӽà ¿¡·¯ ÆÄÀÏÀ» Áö¿î´Ù.
    if [ -s bredirect.err ]
    then
    /bin/cat /tmp/bredirect.err 1>&2
    fi
    /bin/rm -f /tmp/bredirect.err
    $ ./bredirect 1 2 3 45
    $ cat ./bredirect.out
    1
    2
    3
    45

 

°æ·Î¸í

    ½© ½ºÅ©¸³Æ®¸¦ ÀÌ¿ëÇÏ¿©¼­ ÆÄÀÏÀ» ´Ù·ç´Ùº¸¸é °æ·Î¸íÀ» Á¶ÀÛÇؾßÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. º¸Åë °æ·Î¸íÀº ¡®µð·ºÅ丮¸í/ÆÄÀÏ¸í¡¯ Çü½ÄÀ¸·Î µÇ¾î ÀÖ´Ù. ÀÌ·¸°Ô »ç¿ëÀÚÀÇ ÀÔ·ÂÀ̳ª ȯ°æ º¯¼ö µîÀ» ÅëÇؼ­ ¾ò¾îÁø °æ·Î¸í¿¡¼­ µð·ºÅ丮¸í¿Í ÆÄÀϸíÀ» ºÐ¸®ÇØÁÖ´Â basename°ú dirnameÀ̶ó´Â ÇÁ·Î±×·¥ÀÌ ÀÖ´Ù.

      basename <°æ·Î¸í>

    Àº °æ·Î¸í¿¡¼­ ÆÄÀÏ¸í¸¸À» ³Ñ°ÜÁØ´Ù. ÀÌ ¶§ ÆÄÀÏÀÌ ½ÇÁ¦·Î Á¸ÀçÇÒ ÇÊ¿ä´Â ¾ø´Ù.

      basename <°æ·Î¸í> <È®ÀåÀÚ>

    Àº ÆÄÀÏ¸í¿¡¼­ ÁöÁ¤ÇÑ È®ÀåÀÚ ºÎºÐÀ» ¾ø¾Ø´Ù.

      dirname <°æ·Î¸í>

    Àº °æ·Î¸í¿¡¼­ µð·ºÅ丮 ºÎºÐ¸¸À» ³Ñ°ÜÁØ´Ù.
     

    $ basename /home/httpd/index.html
    index.html
    $ basename /home/httpd/index.html .html
    index
    $ dirname /home/httpd/index.html
    /home/httpd

     

¼ö½Ä °è»ê : expr

    ½ºÅ©¸³Æ®¿¡¼­´Â ±âº»ÀûÀÎ ¸ðµç °ªµéÀ» ¹®ÀÚ¿­·Î ó¸®Çϱ⠶§¹®¿¡ ¼ýÀÚ°ªÀ» ÀÌ¿ëÇÑ ¼ö½Ä °è»êÀ» Çϱâ À§Çؼ­´Â expr ÇÁ·Î±×·¥À» ÀÌ¿ëÇØ¾ß ÇÑ´Ù.

      expr ÀÎÀÚ1 ¿¬»êÀÚ ÀÎÀÚ2 [¿¬»êÀÚ ÀÎÀÚ3 ...]

    ÀÎÀÚ´Â ¼ýÀÚ°ªÀ̳ª ¹®ÀÚ¿­ÀÌ µÉ ¼ö ÀÖ°í, ¿¬»êÀÚ´Â ¼ö½Ä ¿¬»êÀÚ, °ü°è ¿¬»êÀÚ, ³í¸® ¿¬»êÀÚ ¼¼ °¡Áö Á¾·ù°¡ ÀÖ´Ù. ÀÎÀÚ¿Í ¿¬»êÀÚ »çÀÌ¿¡´Â ¹Ýµå½Ã °ø¹éÀ¸·Î ±¸ºÐµÇ¾î¾ß¸¸ ÇÑ´Ù. exprÀÇ °á°ú°ªÀÌ 0ÀÌ ¾Æ´Ï°Å³ª nullÀÌ ¾Æ´Ï¸é Á¾·á »óÅ°ªÀº 0ÀÌ´Ù. 0À̳ª nullÀÏ °æ¿ì¿¡´Â 1ÀÌ°í ¼ö½ÄÀÌ À¯È¿ÇÏÁö ¾ÊÀ» °æ¿ì´Â 2ÀÌ´Ù.

    Áö¿øÇÏ´Â ¼ö½Ä ¿¬»êÀÚ´Â +, -, *, /, %°¡ ÀÖ°í, ¿¬»ê ¼øÀ§´Â ÀϹÝÀûÀÎ ¼øÀ§¸¦ µû¸¥´Ù. ¿¬»ê ¼øÀ§ º¯°æÀ» À§ÇÑ °ýÈ£ ¶ÇÇÑ »ç¿ëÇÒ ¼ö ÀÖ´Ù. *, (, )´Â ½©¿¡¼­ Ưº°È÷ »ç¿ëµÇ±â ¶§¹®¿¡ ¼ö½Ä¿¡¼­ »ç¿ëÇÏ·Á¸é ¡¬¿Í ÇÔ²² ¾²¿©¾ß ÇÑ´Ù. ¼ö½Ä ¿¬»êÀÚ°¡ ¿Ã ¶§ÀÇ ÀÎÀÚ´Â Á¤¼ö°ªÀÌ µÇ¾î¾ß¸¸ ÇÑ´Ù. ¼ö½Ä °è»êÀÇ °á°ú°ªÀÌ Ãâ·ÂµÈ´Ù.
     

    $ expr 3 + 5 ¡¬* 2
    13
    $ expr ¡¬( 3 + 5 ¡¬) ¡¬* 2
    16
    $ echo $1
    1
    $ expr $i + 1
    2

 

    Áö¿øÇÏ´Â °ü°è ¿¬»êÀÚ´Â =, !=, >, >=, <, <= ÀÌ ÀÖ°í, >¿Í <´Â ¡¬°ú ÇÔ²² »ç¿ëµÇ¾î¾ß ÇÑ´Ù. ºñ±³ÇÑ °á°ú°¡ ÂüÀ̸é 1À» Ãâ·ÂÇÏ°í, °ÅÁþÀ̸é 0À» Ãâ·ÂÇÏ´Ù. ÀÌ ¶§ ÀÎÀÚ´Â Á¤¼ö, ½Ç¼ö, ¹®ÀÚ¿­ÀÌ ¸ðµÎ ´Ù ¿Ã ¼ö ÀÖ´Ù.
     

    $ echo $USER
    hermes44
    $ expr $USER = hermes44
    1
    $ expr 3 ¡¬> 5
    0
    $ expr 4.5 ¡¬<= 4.5
    1

 

    ³í¸® ¿¬»êÀÚ´Â 3°¡Áö°¡ ÀÖ´Ù. |, &, :ÀÌ´Ù. °¢ OR, AND, Á¤±Ô½Ä °Ë»öÀ» ³ªÅ¸³»¸ç |¿Í &´Â \¿Í ÇÔ²² »ç¿ëµÇ¾î¾ß ÇÑ´Ù.

    ¡¤|´Â ORÀÌ´Ù. ÀÎÀÚ1°ú ÀÎÀÚ2°¡ µÑ ´Ù 0ÀÌ ¾Æ´Ï¸é ÀÎÀÚ1À» Ãâ·ÂÇÏ°í ±×·¸Áö ¾ÊÀ¸¸é 0À»
       Ãâ·ÂÇÑ´Ù.
    ¡¤&´Â ANDÀÌ´Ù. ÀÎÀÚ 1ÀÌ 0ÀÌ ¾Æ´Ï¸é ÀÎÀÚ 1À» Ãâ·ÂÇÏ°í, ±×·¸Áö ¾ÊÀ¸¸é ÀÎÀÚ 2¸¦ Ãâ·ÂÇÑ´Ù.
    ¡¤:´Â Á¤±Ô½Ä(regular expression) °Ë»öÀÌ´Ù. ÀÎÀÚ1¿¡´Â ¾î¶² ¹®ÀÚ¿­ÀÌ ¿À°í, ÀÎÀÚ2¿¡´Â Á¤±Ô½Ä
       ÀÌ ¿Â´Ù. ÀÎÀÚ1¿¡¼­ ÀÎÀÚ2·Î ÁÖ¾îÁø Á¤±Ô½Ä¿¡ ÇØ´çÇÏ´Â ÆÐÅÏÀ» ã´Â´Ù.ÀÎÀÚ2¸¦ ¡¬(¿Í ¡¬)·Î
       °ýÈ£¸¦ ¾º¿ì¸é ÆÐÅÏ¿¡ ÇØ´çÇÏ´Â ÀÎÀÚ1ÀÇ ºÎºÐÀ» Ãâ·ÂÇÏ°í °ýÈ£°¡ ¾øÀ» ¶§¿¡´Â ÆÐÅÏÀÌ ÀÏÄ¡
       Çϴ ȸ¼ö¸¦ Ãâ·ÂÇÑ´Ù.(Á¤±Ô½ÄÀÇ Çü½Ä¿¡ ´ëÇÑ »çÇ×Àº ÀÌ ±â»çÀÇ ¹üÀ§¸¦ ³Ñ¾î°¡±â ¶§¹®¿¡
       »ý·«ÇÑ´Ù).
     

    $ echo $1
    1
    $ expr $i ¡¬> 5 ¡¬| $i + 1
    2
    $ expr $i ¡¬< 5 ¡¬& $i + 1
    1
    $ export d=`date`; echo $d
    Mon Oct 10 00:53:04 KST 1999
    $ expr ¡°$d¡± : ¡®.*¡¯
    28
    $ expr ¡°$d¡± : ¡®¡¬(.*¡¬)¡¯
    Mon Oct 18 00:53:04 KST 1999
    $ expr ¡°$d¡± : ¡®[a-zA-Z]*¡¯
    3
    $ expr ¡°$d¡± : ¡®¡¬([a-zA-Z]*¡¬)¡¯
    Mon

 

¿©·¯ ÇÁ·Î±×·¥À» ÇϳªÀÇ ½ºÅ©¸³Æ®·Î

    ¸¹Àº ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÀ» ÇÏ´Ù º¸¸é ´ÙÀ½°ú °°Àº °æ¿ì°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù.

    ¡¤°°Àº µ¿ÀÛÀ» ÇÏ´Â ´Ù¸¥ À̸§ÀÇ ÇÁ·Î±×·¥µé. ¿¹¸¦ µé¾î ¹®¼­ ÆíÁý±âÀÎ ex, vi, view´Â À̸§Àº
      ´Ù¸£Áö¸¸ ´Ù °°Àº ÇÁ·Î±×·¥ÀÌ´Ù. ÇÏÁö¸¸ ¾î¶² À̸§À¸·Î ½ÇÇàÇÏ´À³Ä¿¡ µû¶ó µ¿ÀÛÀÌ Á¶±Ý¾¿
      ´Ù¸£´Ù. ex´Â ÁÙ ÆíÁý±â ¸ðµå·Î ½ÃÀÛÇÏ°í, vi´Â È­¸é ÆíÁý±â ¸ðµå·Î ½ÃÀÛÇÑ´Ù. view´Â Àбâ
      Àü¿ë ¸ðµå·Î ÆÄÀÏÀ» ¿¬´Ù.
    ¡¤´Ù¸¥ ÇÁ·Î±×·¥ÀÌÁö¸¸ °øÅëµÇ´Â ºÎºÐÀÌ ¸¹´Ù. ¿¹¸¦ µé¾î jdkÆÐÅ°ÁöÀÇ µé¾îÀִ java, javac,
      javadoc, jar, jdb, appletview µîÀº ¸ðµÎ .javawrapper ½ºÅ©¸³Æ®¿¡ ¸µÅ©µÇ¾î ÀÖ´Ù.
      .javawrapper´Â Àڹ٠ȯ°æÀ» ¼³Á¤À» ÇÏ°í ÇØ´çÇÏ´Â ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄÑ ÁØ´Ù.

    ÀÌ¿Í °°Àº °æ¿ì¿¡ °øÅëµÇ´Â ºÎºÐÀ» Çϳª·Î ¹­¾î ÁÖ°Ô µÈ´Ù¸é µð½ºÅ© °ø°£À» Àý¾àÇÒ ¼ö ÀÖÀ» »Ó¸¸ ¾Æ´Ï¶ó, ÄÚµù¿¡ µå´Â ³ë·Âµµ ÁÙ¿©ÁÙ ¼ö ÀÖ°í, °¢ °øÅëµÇ´Â ºÎºÐ¿¡ ´ëÇÑ ÀÏ°ü¼ºÀ» À¯ÁöÇÒ ¼ö°¡ ÀÖ´Ù. ½© ½ºÅ©¸³Æ®¿¡¼­´Â °øÅëµÇ´Â ºÎºÐÀ» ó¸®ÇÏ°í ½ÇÇàÇÑ ÇÁ·Î±×·¥ÀÇ À̸§À» »ìÆ캸¾Æ °¢°¢¿¡ ÇØ´çÇϴ ó¸®¸¦ ÇÑ´Ù.

    °øÅë ºÎºÐ¿¡ ´ëÇÑ ÇÙ½É ½ºÅ©¸³Æ®¸¦ ¸¸µç´Ù. °¢°¢ÀÇ ÇÁ·Î±×·¥Àº ÇÙ½É ½ºÅ©¸³Æ®¿¡ ´ëÇÑ ¸µÅ©·Î ¸¸µç´Ù. ±× ½ºÅ©¸³Æ®¿¡¼­´Â °øÅëµÈ ºÎºÐÀ» ó¸®ÇÏ°í ÇÁ·Î±×·¥ÀÇ À̸§, $0¸¦ º¸°í¼­ °¢ ÇÁ·Î±×·¥¿¡ ´ëÇÑ ÀÛ¾÷À» ¼öÇàÇÑ´Ù.
     

    $ cat sc_core
    #!/bin/sh
    #
    # sc_core: °øÅëµÇ´Â ºÎºÐÀ» ó¸®ÇÏ´Â ÇٽɺκÐ
    #

    echo Setup the Environments and Flags

    case ¡°$0¡± in
    *sc1)
    echo Excute sc1 ;;
    *sc2)
    echo Excute sc2 ;;
    *)
    echo Invalid commnad !
    exit 1 ;;
    esac
    $ ln -s sc_core sc1
    $ ln -s sc_core sc2
    $ ./sc1
    Setup the Environments and Flags
    Excute sc1
    $ ./sc2
    Setup the Environments and Flags
    Excute sc2

 

    ½ÇÇàÇÑ ÆÄÀÏÀ̸§À» ãÀ» ¶§ sc_core ¿¹Á¦¿¡¼­¿Í °°ÀÌ ¡®*ÆÄÀÏ¸í¡¯ ÆÐÅÏÀ» ÀÌ¿ëÇÏ´Â ¹æ¹ýµµ ÀÖ°í basename ÇÁ·Î±×·¥À» »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.
     

    $ cat jc_core
    #!/bin/sh
    #
    # jc_core: basenameÀ» ÀÌ¿ëÇÑ ¶Ç ´Ù¸¥ ¹æ¹ý
    #

    jcpath=¡¯/usr/local/bin¡¯
    jcprogram=`basename $0`

    echo Setup the Environments and Flags

    case ¡°$jcprogram¡± in
    jcc)
    echo Excute jcc ;;
    jdb)
    echo Excute jdb ;;
    *)
    echo ¡°$jcpath/$jcprogram¡± ;;
    esac
    $ ln -s jc_core jcc
    $ ln -s jc_core jdb
    $ ln -s jc_core jzip

    $ ./jcc
    Setup the Environments and Flags
    Excute jcc
    $ ./jdb
    Setup the Environments and Flags
    Excute jdb
    $ ./jzip
    Setup the Environments and Flags
    /usr/local/bin/jzip

 

°á·Ð

    ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÏ´Â ÀÏÀÌ ´Ù ³¡ÀÌ ³µ´Ù¸é ÀÌÁ¦ ¸¶Áö¸·À¸·Î ³²Àº °ÍÀº ½ºÅ©¸³Æ®ÀÇ À̸§À» Á¤ÇÏ´Â °ÍÀÌ´Ù. ¾î¶² À̸§À» Áþ´øÁö »ó°üÀº ¾øÁö¸¸ ÇÑ °¡Áö ÁÖÀÇÇÒ °ÍÀº À̹̠ÀÖ´Â ÇÁ·Î±×·¥ÀÇ À̸§À» »ç¿ëÇؼ­´Â ¾È µÈ´Ù´Â °ÍÀÌ´Ù. ¿ì¸®°¡ Á¤ÇÑ À̸§ÀÌ ÀÌ¹Ì Á¸ÀçÇÏ´Â Áö´Â ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î ã¾Æº¸¸é µÈ´Ù.

      man 1  <½ºÅ©¸³Æ® À̸§>
      which   <½ºÅ©¸³Æ® À̸§>
      whereis <½ºÅ©¸³Æ® À̸§>
      alias     <½ºÅ©¸³Æ® À̸§>
      type     <½ºÅ©¸³Æ® À̸§>

    ¸ðµç °¡´É¼ºÀ» °Ë»çÇØ º¸°í ¾ø´Â À̸§À¸·Î Á¤ÇÑ´Ù.

    ÀÌ·¸°Ô ½ºÅ©¸³Æ®ÀÇ ÀÛ¼ºÀÌ ³¡ÀÌ ³µ´Ù. ÀÌÁ¦´Â ¹Ýº¹ÀûÀÎ ÀÏÀ» °£´ÜÈ÷ ó¸®ÇØÁÖ´Â ³ª¸§´ë·ÎÀÇ ½ºÅ©¸³Æ®´Â ÀÛ¼ºÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ºÎÁ·ÇÑ ºÎºÐÀÌ ÀÖ±â´Â ÇÏÁö¸¸ ±×·± ºÎºÐµéÀº ¸¹Àº ½Ãµµ¸¦ ÅëÇؼ­ äµæÇÒ ¼ö ÀÖÀ» °ÍÀ̶ó »ý°¢ÇÑ´Ù. ¶ÇÇÑ ½© ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇϱâ À§Çؼ­´Â »ç¿ëÇÏ´Â ½©¿¡ ´ëÇÑ ÀÌÇصµ ÇÊ¿äÇÏ´Ù. ´ÙÀ½ ±â»ç¿¡¼­´Â ÀÛ¼ºÇÑ ½ºÅ©¸³Æ®¸¦ µð¹ö±ëÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸ÀÚ.

     

¡¤Âü¡¤°í¡¤ÀÚ¡¤·á¡¤

¡¤UNIX POWER TOOLS, 2ed. Jerry Peek, Tim O¡¯Reilly, Mike Loukides. O¡¯Reilly
¡¤bash ¸Å´º¾ó ÆäÀÌÁö




¡ã top

homeÀ¸·Î...