½© ½ºÅ©¸³Æ® III

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

 

     

µð¹ö±ë

    ÀÌÀü ±â»ç¸¦ ÅëÇØ ¿ì¸®´Â °£´ÜÇÑ Á¤µµÀÇ ½© ½ºÅ©¸³Æ®´Â ÀÛ¼ºÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù. ÀÌÁ¦´Â ´ÙÀ½ ´Ü°è·Î ÀÛ¼ºÇÑ ½© ½ºÅ©¸³Æ®¸¦ µð¹ö±ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ­ ´Ù·çµµ·Ï ÇÏ°Ú´Ù. ÇÁ·Î±×·¥À» ÇÑ ¹ø¿¡ ¿¡·¯¾øÀÌ ÀÛ¼ºÇÒ ¼ö Àִ õÀç ÇÁ·Î±×·¡¸Ó°¡ ¾Æ´Ñ ÀÌ»ó µð¹ö±ëÀ̶õ ÄÚµåÀÇ ¾ÈÁ¤¼º°ú ¿Ïº®ÇÔÀ» ³ôÀÌ´Â ÇʼöÀûÀÎ ÀÛ¾÷ÀÌ´Ù. ¶ÇÇÑ ´ëºÎºÐÀÇ °æ¿ì, Äڵ带 ÀÛ¼ºÇÏ´Â °Íº¸´Ùµµ ´õ ¸¹Àº ½Ã°£ÀÌ °É¸®´Â ÀÏÀÌ µð¹ö±ëÀÌ´Ù. º¸Åë ¸®´ª½º °³¹ß ȯ°æ¿¡¼­ C·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ¿´´Ù¸é µð¹ö±ë µµ±¸·Î gdb¸¦ »ç¿ëÇÒ °ÍÀÌ´Ù. ÇÏÁö¸¸ gdbÀÌÀü¿¡ °¡Àå ÁÁÀº µð¹ö±ë ¹æ¹ýÀº ÄÚµå °÷°÷¿¡ printf¸¦ Ãß°¡ÇÏ¿© ½ÇÇà °á°ú¸¦ º¸°í ¹®Á¦Á¡À» ÆľÇÇÏ´Â °ÍÀÏ °ÍÀÌ´Ù. ½© ½ºÅ©¸³Æ®¿¡µµ º°´Ù¸¥ µð¹ö°Å°¡ Á¸ÀçÇÏÁö ¾Ê±â ¶§¹®¿¡ echo¸¦ »ç¿ëÇÏ¿© µð¹ö±ëÇÏ´Â °ÍÀÌ ÀϹÝÀûÀÌ´Ù. ÇÏÁö¸¸ ´ÙÀ½¿¡¼­´Â ±× ¹æ¹ý ÀÌ¿Ü¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú´Ù.

     

½© ¿É¼Ç ±â´É

    ½© ÀÚüÀûÀ¸·Î µð¹ö±ëÀ» À§ÇØ »ç¿ëµÇ´Â ¸í·ÉÇà ¿É¼ÇÀÌ ÀÖ´Ù. -v´Â ½©ÀÌ ½ºÅ©¸³Æ®¸¦ ¼öÇàÇϱâ À§Çؼ­ ÀÐÀº ºÎºÐÀ» È­¸é¿¡ Ãâ·ÂÇØÁØ´Ù. -x´Â ÀоîµéÀÎ ºÎºÐ Áß¿¡¼­ ½ÇÁ¦ ½ÇÇàÀ» ÇÑ ºÎºÐÀ» º¸¿©ÁØ´Ù. ÀÌ °á°ú´Â stderr·Î Ãâ·ÂÀÌ µÇ¸é ´ÙÀ½ÀÇ ¼¼ °¡Áö ¹æ¹ý Áß Çϳª·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.

    ¡¤½© ½ºÅ©¸³Æ®ÀÇ Ã¹ ÁÙ¿¡ ´ÙÀ½°ú °°ÀÌ ¿É¼ÇÀ» ÁöÁ¤ÇÑ´Ù.
    #!/bin/sh -xv

    ¡¤¼Ò½º¸¦ ¼öÁ¤ÇÏÁö ¾Ê°í ÇÑ ¹ø¸¸ ½ÇÇàÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÑ´Ù.
    $ sh -xv [½ºÅ©¸³Æ®À̸§]

    ¡¤½ºÅ©¸³Æ®ÀÇ Àüü°¡ ¾Æ´Ñ ÀϺκп¡¼­¸¸ ÀÌ ±â´ÉÀ» »ç¿ëÇÏ·Á¸é »ç¿ëÇÏ·Á°í ÇÏ´Â ºÎºÐ ¾Õ¿¡
      ´ÙÀ½À» Ãß°¡ÇÑ´Ù.
    set -xv

    ¡¤ÀÌ ±â´ÉÀ» ¾ø¾Ö±â À§Çؼ­ ÇÊ¿äÇÑ ºÎºÐ ÀÌÈÄ¿¡ ´ÙÀ½À» Ãß°¡ÇÑ´Ù.
    set +xv

    ù ¹ø ±â»ç¿¡¼­ ´Ù·ç¾ú´ø ¿¹Á¦¸¦ ´Ù½Ã º¸¸é¼­ »ç¿ë¹ýÀ» ¼³¸íÇϵµ·Ï ÇÏ°Ú´Ù.

    º¸¸é ½±°Ô ¾Ë ¼ö ÀÖµíÀÌ  prarg ½ºÅ©¸³Æ®´Â ¼¼ ÀÎÀÚ¸¦ ÀԷ¹޾Ƽ­ Ãâ·ÂÇÏ´Â ¸Å¿ì °£´ÜÇÑ ½ºÅ©¸³Æ®ÀÌ´Ù. µÎ¹ø° ¹æ¹ýÀ» ÀÌ¿ëÇÏ¿©¼­ ½ÇÇàÇØ º¸ÀÚ.

     

      $ cat ./prarg
      #!/bin/sh
      #
      # prarg: ÀÎÀÚ¸¦ Ãâ·ÂÇÏ´Ù.
      #

      prog=`basename $0`

      if [ $# -eq 3 ]
      then
      echo ¡°Script $prog path: $0¡±
      echo ¡°Arg1: $1¡±
      echo ¡°Arg2: $2¡±
      shift
      echo ¡°Arg3: $2¡±
      else
      echo ¡°Usage: $ $prog arg1 arg2 arg3¡±
      exit 1
      fi
      $ ./prarg 1 2 3
      Script prarg path: ./prarg
      Arg1: 1
      Arg2: 2
      Arg3: 3
      $ sh -x ./prarg 1 2 3
      ++ basename ./prarg
      + prog=prarg
      + [ 3 -eq 3 ]
      + echo Script prarg path: ./prarg
      Script prarg path: ./prarg
      + echo Arg1: 1
      Arg1: 1
      + echo Arg2: 2
      Arg2: 2
      + shift
      + echo Arg3: 3
      Arg3: 3
      $ sh -xv ./prarg 1 2 3
      #!/bin/sh
      #
      # prarg: ÀÎÀÚ¸¦ Ãâ·ÂÇÏ´Ù.
      #

      prog=`basename $0`
      basename $0
      ++ basename ./prarg
      + prog=prarg

      if [ $# -eq 3 ]
      then
      echo ¡°Script $prog path: $0¡±
      echo ¡°Arg1: $1¡±
      echo ¡°Arg2: $2¡±
      shift
      echo ¡°Arg3: $2¡±
      else
      echo ¡°Usage: $ $prog arg1 arg2 arg3¡±
      exit 1
      fi
      + [ 3 -eq 3 ]
      + echo Script prarg path: ./prarg
      Script prarg path: ./prarg
      + echo Arg1: 1
      Arg1: 1
      + echo Arg2: 2
      Arg2: 2
      + shift
      + echo Arg3: 3
      Arg3: 3

     

    -x ¿É¼Ç¸¸À¸·Î ½ÇÇàÀ» ÇÒ °æ¿ì¿¡´Â ½ºÅ©¸³Æ®¿¡¼­ ½ÇÇàÇÏ´Â ºÎºÐ¸¸À» º¸¿©ÁØ´Ù. + Àº ½©ÀÌ ½ÇÇàÇÏ´Â ºÎºÐ, ++´Â ´Ù¸¥ ¿ÜºÎ ÇÁ·Î±×·¥ÀÌ (ÀÌ ¿ÜºÎ ÇÁ·Î±×·¥Àº ½©ÀÌ ½ÇÇàÇÑ´Ù.) ½ÇÇàÇÏ´Â ºÎºÐÀ» ÀǹÌÇÑ´Ù. -v ¿É¼Ç°ú °°ÀÌ ½ÇÇàÇÏ¸é ½ºÅ©¸³Æ®¸¦ ÀÐÀº ºÎºÐÀ» º¸¿©ÁØ´Ù. if, for, while, case µîÀÇ ºí·°µéÀº ÇÑ ¹ø¿¡ ºí·° Àüü¸¦ Àо ¼öÇàÇϱ⠶§¹®¿¡ À§ÀÇ ¿¹Á¦¿¡¼­¿Í °°Àº °á°ú°¡ ³ª¿Â´Ù. Ãâ·Â½Ã¿¡´Â ½ºÅ©¸³Æ®ÀÇ ½ÇÇà °á°ú¿Í µð¹ö±ëÀ» À§ÇÑ Ãâ·ÂÀÌ °°Àº È­¸éÀ¸·Î º¸ÀÌ´Â µíÇÏÁö¸¸ ÀüÀÚ´Â stdoutÀ¸·Î, ÈÄÀÚ´Â stderr·Î Ç¥½ÃµÇ´Â °ÍÀÌ´Ù. µû¶ó¼­ ÀÌ °á°ú¸¦ ÆÄÀÏ·Î ¸®´ÙÀÌ·º¼ÇÇϱâ À§Çؼ­´Â ´ÙÀ½°ú °°ÀÌ ½ÇÇàÇØ¾ß ÇÑ´Ù.

      $ sh -xv [½ºÅ©¸³Æ®À̸§]  >[ÆÄÀϸí] 2>&1

    2>&1Àº stderr(2)ÀÇ °á°ú¸¦ stdout(1)°ú °°Àº °÷À¸·Î ¸®´ÙÀÌ·º¼ÇÇÏ´Â °ÍÀÌ´Ù.

    ¶ÇÇÑ ½ÇÇ๮ÀÇ °á°ú¸¦ °Ë»çÇϱâ À§ÇÑ  -e ¿É¼ÇÀÌ ÀÖ´Ù.  -e´Â -x¿¡ ÀÇÇØ Ãâ·ÂµÇ´Â ½ÇÇ๮µéÀÇ ½ÇÇà °á°ú°¡  0ÀÌ ¾Æ´Ñ °ª Áï, ½ÇÆи¦ ¸®ÅÏÇÏ¿´À» °æ¿ì ½© ½ºÅ©¸³Æ®¸¦ Á¾·áÇÑ´Ù. ÇÏÁö¸¸ while, until, if¹®¿¡¼­ »ç¿ëÇÏ´Â Á¶°Ç½ÄÀ̳ª &&, ||, !ÀÌ Æ÷ÇÔµÇÀÖ´Â ½ÇÇ๮¿¡¼­´Â  -e°¡ È¿°ú ¾ø´Ù.
    »ç¿ë¹ýÀº  -x, -v¸¦ »ç¿ëÇÒ ¶§¿Í °°´Ù.

     

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

      filename=`line`

      if [ -e $filename ]
      then
      echo $filename exists.
      else
      echo $filename doesn¡¬¡¯t exist.
      fi
      $ ./stdio3
      ./stdio3: line: command not found
      exists.
      $ sh -x ./stdio3
      ++ line
      ./stdio3: line: command not found
      + filename=
      + [ -e ]
      + echo exists.
      exists.
      $ sh -ev ./stdio3
      ++ line
      ./stdio3: line: command not found
      + filename=

     

    -e ¿É¼ÇÀ» ÁÖ°í ½ÇÇàÇÑ °æ¿ì if ÀÌÀüÀÇ ½ÇÇ๮ÀÌ ½ÇÆи¦ ÇÏ¿© if °¡ ½ÇÇàµÇ±â Àü¿¡ Á¾·áÇÔÀ» ¾Ë ¼ö ÀÖ´Ù.

     

Á¶°Ç½Ä

    Á¶°Ç½ÄÀ» ÀϹÝÀûÀÎ ÄÄÆÄÀÏ ¾ð¾î¿¡¼­¿Í ºñ½ÁÇÏ°Ô »ç¿ëÇÒ °æ¿ì »ý°¢Áöµµ ¾Ê´Â ¿¡·¯°¡ ¹ß»ýÇÏ´Â °æ¿ì°¡ ÀÖ´Ù.

    ¼ö½Ä °Ë»ç Á¶°Ç½Ä¿¡¼­ °Ë»çÇÏ·Á´Â º¯¼ö°¡ Á¸ÀçÇÏÁö ¾Ê°Å³ª °ªÀÌ ¼³Á¤µÇÁö ¾Ê¾ÒÀ» °æ¿ì ¿¡·¯°¡ ¹ß»ýÇÑ´Ù. Áï, ´ÙÀ½°ú °°Àº Á¶°Ç½Ä¿¡¼­

      if [ ¡°$count¡± -eq 3 ]

    count º¯¼ö°¡ Á¸ÀçÇÏÁö ¾Ê°Å³ª °ªÀÌ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é ´ÙÀ½°ú °°ÀÌ Çؼ®ÀÌ µÇ¾î

      if [ ¡°¡± -eq 3 ]

    ¾Æ·¡¿Í °°Àº ¿¡·¯°¡ ¹ß»ýÇÑ´Ù.

      [: integer expression expected before -eq

    À̸¦ ¹æÁöÇϱâ À§Çؼ­´Â À§ÀÇ ¼ö½ÄÀ» ´ÙÀ½°ú °°ÀÌ ¹Ù²Û´Ù.

      if  [ ¡°0$count¡± -eq 3 ]

    ÀÌ ¶§´Â À§¿Í °°Àº ¿¡·¯ »óȲÀÏ ¶§ 0À» ¸®ÅÏÇÏ°Ô µÇ°í count º¯¼ö°ªÀÌ 3ÀÏ °æ¿ì¿¡´Â  03À» ¸®ÅÏÇÏ°Ô µÇ¾î ¿¡·¯¾øÀÌ  Á¶°Ç½ÄÀÌ ¼öÇàÀÌ µÈ´Ù.

    ¹®ÀÚ¿­ °Ë»ç Á¶°Ç½Ä¿¡¼­´Â °Ë»çÇÏ·Á´Â ¹®ÀÚ¿­ÀÌ Á¶°Ç½Ä¿¡¼­ »ç¿ëÇÏ´Â Å°¿öµåÀÏ °æ¿ì ¿¡·¯°¡ ¹ß»ýÇÑ´Ù. Áï, ±× ¹®ÀÚ¿­ÀÌ -eq, -ne, -gt, -r, -w, -z, -fµîÀÇ °ÍµéÀÏ ¶§ÀÌ´Ù. ÀÌ °æ¿ì¿¡´Â ºñ±³ÇÏ·Á´Â ¹®ÀÚ¿­ ¾Õ¿¡ Àû´çÇÑ ¹®ÀÚ¸¦ Ãß°¡ÇÏ¿© ¾Õ¿¡¼­¿Í °°Àº °ÍµéÀÌ Á¶°Ç½Ä¿¡¼­ ³ª¿ÀÁö ¾Êµµ·Ï ÇÑ´Ù.

      if  [ ¡°$op¡± = -gt ]

    ¸¦ ´ÙÀ½°ú °°ÀÌ º¯°æÀ» ÇÑ´Ù.

      if  [ ¡°Z$op¡± = Z-gt ]

    ¾ÕÀÇ -e ¿É¼ÇÀ» ¼³¸íÇÒ ¶§ º¸¾Ò´ø °Í°ú °°ÀÌ ½© ½ºÅ©¸³Æ®¿¡¼­ ½ÇÇ๮ÀÌ ½ÇÆÐÇÑ´Ù°í Çؼ­ ½ºÅ©¸³Æ®°¡ ÁߴܵÇÁö´Â ¾Ê´Â´Ù. (ÁߴܽÃÅ°·Á¸é -e ¿É¼ÇÀ» ÁÖ¾î¾ß ÇÑ´Ù.) ÇÏÁö¸¸ Áß´ÜÀÌ µÈ´Ù´Â À߸øµÈ Âø°¢À» ÇÏ¿© ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÏ´Â °æ¿ì°¡ ÀÖ´Ù. ´ÙÀ½ÀÇ °æ¿ì¿¡´Â ±×°ÍÀÌ Ä¡¸íÀûÀÎ °á°ú¸¦ ³ªÀ» ¼ö ÀÖ´Ù.

     

      $ cat clean
      #!/bin/sh

      tempdir=¡¯/tmp /usr/tmp /var/tmp¡¯

      for dir in $tempdir
      do
      cd $dir
      rm -rf *
      done

      echo ¡°Cleanup done !¡±

     

    ¡®cd $dir¡¯ÀÌ ½ÇÆÐÇÒ °æ¿ì¿¡µµ ´ÙÀ½ ½ÇÇ๮ÀÎ ¡®rm -rf *¡¯Àº ½ÇÇàÀÌ µÈ´Ù. cd°¡ ½ÇÆи¦ ÇÑ´Ù¸é »ý°¢Áöµµ ¾Ê´Â µð·ºÅ丮ÀÇ ³»¿ëÀ» ´Ù Áö¿ö¹ö¸®´Â °á°ú¸¦ ³ªÀ» ¼ö ÀÖ´Ù. ÀÌ·± ¹®Á¦¸¦ ¹æÁöÇϱâ À§ÇØ ÀÌ¿Í°°ÀÌ ´ÙÀ½¿¡ Ä¡¸íÀûÀÎ ½ÇÇ๮ÀÌ ¿Ã °æ¿ì ÀÌÀüÀÇ ½ÇÇ๮ÀÌ ½ÇÆÐÇÏ¸é ½ÇÇàÇÏÁö ¾Êµµ·Ï ÇÑ´Ù. || Á¶°ÇÀ» ÀÌ¿ë cd ½ÇÇ๮À» ¹Ù²Û´Ù.

      cd $dir || exit

    ÀÌ °æ¿ì || ¾ÕÀÇ cd°¡ ½ÇÆÐÇÒ °æ¿ì exit°¡ ½ÇÇàµÇ¾î ´õ ÀÌ»ó ÁøÇàµÇÁö ¾Êµµ·Ï ÇÑ´Ù. cd°¡ ¼º°øÇÑ °æ¿ì¿¡´Â || Á¶°Ç½ÄÀº Ç×»ó ÂüÀÌ µÇ±â ¶§¹®¿¡ || ¿ìÃøÀÇ exit´Â ½ÇÇàµÇÁö ¾Ê´Â´Ù. À§ÀÇ ¿¹Á¦¿¡¼­´Â exit ´ë½Å continue¸¦ ½áµµ ¹«¹æÇÏ´Ù.

 

º¯¼ö°ª È®ÀÎÇϱâ

    ½© ½ºÅ©¸³Æ®¿¡ ´ëÈ­½ÄÀ¸·Î º¯¼ö°ªÀ» È®ÀÎÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ÀÖ´Ù. ±×·± ±â´ÉÀ» ÇÏ´Â Äڵ带 ½© ½ºÅ©¸³Æ® Áß°£¿¡ »ðÀÔÇÏ´Â ¹æ¹ýÀÌ´Ù.

      while echo -n ¡°Enter a variable name you want to know; ¡¬
      just ENTER to quit: ¡°
      read var
      do
      case ¡°$var¡± in
      ¡°¡±) break ;;
      *) eval echo ¡¬$$var ;;
      esac
      done

    ÀÌ Æ®·¹À̽º(trace) ÄÚµå ÀÌÀü¿¡ »ç¿ëµÈ º¯¼öÀÇ °ªÀ» È®ÀÎÇØ º¼ ¼ö°¡ ÀÖ´Ù.

     

    $ cat trace
    #!/bin/sh
    #
    # trace: º¯¼ö°ªÀ» º¸¿©ÁÖ´Â Æ®·¹À̽º Äڵ带 »ç¿ëÇØ º»´Ù.
    #

    dir=`dirname $0`
    file=`basename $0`

    count=0

    for arg in $*
    do
    count=`expr $count + 1`

    # Trace code
    while echo -n ¡°Enter a variable name you want to know; just ENTER to quit: ¡°
    read var
    do
    case ¡°$var¡± in
    ¡°¡±) break ;;
    *) eval echo ¡¬$$var ;;
    esac
    done
    done
    $ ./trace a b cde fg h
    Enter a variable name you want to know; just ENTER to quit: dir
    .
    Enter a variable name you want to know; just ENTER to quit: file
    trace
    Enter a variable name you want to know; just ENTER to quit: count
    1
    Enter a variable name you want to know; just ENTER to quit: arg
    a
    Enter a variable name you want to know; just ENTER to quit: [ENTER]
    Enter a variable name you want to know; just ENTER to quit: count
    2
    Enter a variable name you want to know; just ENTER to quit: arg
    b
    Enter a variable name you want to know; just ENTER to quit: [ENTER]
    Enter a variable name you want to know; just ENTER to quit: count
    3
    Enter a variable name you want to know; just ENTER to quit: arg
    cde
    Enter a variable name you want to know; just ENTER to quit: [ENTER]
    Enter a variable name you want to know; just ENTER to quit: count
    4
    Enter a variable name you want to know; just ENTER to quit: arg
    fg
    Enter a variable name you want to know; just ENTER to quit: [ENTER]
    Enter a variable name you want to know; just ENTER to quit: count
    5
    Enter a variable name you want to know; just ENTER to quit: arg
    h
    Enter a variable name you want to know; just ENTER to quit: [ENTER]

    ([ENTER]Àº ENTER¸¦ ´­·¶À½À» ÀǹÌÇÑ´Ù.)

     

°á·Ð

    ÀÌÁ¦±îÁö ½© ½ºÅ©¸³Æ®ÀÇ ÀÛ¼º°ú µð¹ö±ë¿¡ °üÇÑ »çÇ×À» ¾Ë¾Æº¸¾Ò´Ù. ¹°·Ð Áö±Ý±îÁö ´Ù·é ³»¿ëÀÌ ½© ½ºÅ©¸³Æ®ÀÇ ÀüºÎ´Â ¾Æ´Ï´Ù. ÀÚÀßÇÏ°í ¹Ì¹¦ÇÑ ºÎºÐµé ÇÏÁö¸¸ Áß¿äÇÑ ºÎºÐµéÀº ´Ù·çÁö ¸øÇßÀ¸¸ç, ÇöÀç ¸¹ÀÌ »ç¿ëÇÏ´Â bash³ª tcshÀÇ È®Àå ±â´Éµµ ³²¾Æ ÀÖ´Ù. ÀÌÁ¦ ±× ºÎºÐÀº µ¶Àڵ鿡°Ô ³²°ÜÁø ¸òÀ̸ç ÀÌ ±â»ç¸¦ ÅëÇØ ±× ½ÃÀÛÀ» ÇÒ ¼ö Àֱ⸦ ¹Ù¶õ´Ù. ÀÏ´ÜÀº ´Ù¸¥ »ç¶÷µéÀÌ ¸¸µé¾î ³õÀº ½ºÅ©¸³Æ®¸¦ º¸°í ÀÌÇØÇϸ鼭 Äڵ带 ¼öÁ¤Çغ¸°í ÇÊ¿äÇÑ ½ºÅ©¸³Æ®¸¦ Çϳª¾¿ ¸¸µé¾î °¡¸é¼­ ÀÍÈ÷¸é µÉ °ÍÀÌ´Ù. ±×¸®°í ÀÛ¼ºÁß¿¡ ¸·È÷´Â ºÎºÐÀº ¸Å´º¾ó ÆäÀÌÁö°¡ Å« µµ¿òÀÌ µÉ °ÍÀÌ´Ù.  man bash !
    Âü°íÀÚ·á

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




¡ã top

homeÀ¸·Î...