¿©±â¼´Â ½© ½ºÅ©¸³Æ®¿¡¼ ¾µ¸¸ÇÑ À¯´Ð½º Ç¥ÁØ ¸í·É¾îµéÀ» º¸¿©µå¸³´Ï´Ù.
ÆÄÀÏ "¸ñ·Ï"¸¦ º¸¿©ÁÖ´Â ±âº» ¸í·É¾î·Î¼, ³Ê¹« °£´ÜÇÑ ¸í·É¾î¶ó °ú¼ÒÆò°¡µÇ±â ½±Áö¸¸ ½ÇÁ¦´Â ±×·¸Áö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¸é ÇÏÀ§ µð·ºÅ丮±îÁö Ç¥½ÃÇÏ´Â ¿É¼ÇÀÎ -RÀ» ¾²¸é Æ®¸®ÇüÅÂÀÇ µð·ºÅ丮 ±¸Á¶¸¦ º¸¿©ÁÝ´Ï´Ù.
예 3-46. CDR µð½ºÅ©¸¦ ±¸¿ï ¶§ ls·Î ¸ñÂ÷¸¦ ¸¸µé±â
#!/bin/bash # CDR À» ÀÚµ¿À¸·Î ±¸¿öÁÖ´Â ½ºÅ©¸³Æ® # Joerg Schilling ÀÇ "cdrecord" ÆÐŰÁö ¾¸ # (http://www.fokus.gmd.de/nthp/employees/schilling/cdrecord.html) # ÀÏ¹Ý »ç¿ëÀÚ°¡ ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇà½ÃŲ´Ù¸é cdrecord ¿¡ suid °¡ °É·Á ÀÖ¾î¾ß # ÇÕ´Ï´Ù(·çÆ®·Î chmod u+s /usr/bin/cdrecord). if [ -z $1 ] then IMAGE_DIRECTORY=/opt # ¸í·É¾î ÁÙ¿¡¼ ÁöÁ¤ ¾È µÆÀ» °æ¿ìÀÇ ±âº» µð·ºÅ丮 else IMAGE_DIRECTORY=$1 fi ls -lRF $IMAGE_DIRECTORY > $IMAGE_DIRECTORY/contents # "l" ¿É¼ÇÀº "ÀÚ¼¼ÇÑ(long)" ÆÄÀÏ ¸ñ·ÏÀ» º¸¿©ÁÝ´Ï´Ù. # "R" ¿É¼ÇÀº ÇÏÀ§ µð·ºÅ丮±îÁö º¸¿©ÁÝ´Ï´Ù. # "F" ¿É¼ÇÀº ÆÄÀÏ Å¸ÀÔÀ» ÁöÁ¤ÇØ ÁÝ´Ï´Ù(µð·ºÅ丮´Â À̸§ ³¡¿¡ / ¸¦ ºÙÀÓ). echo "¸ñÂ÷¸¦ ¸¸µì´Ï´Ù." mkisofs -r -o cdimage.iso $IMAGE_DIRECTORY echo "ISO9660 ÆÄÀÏ ½Ã½ºÅÛ À̹ÌÁö¸¦ ¸¸µì´Ï´Ù(cdimage.iso)." cdrecord -v -isosize speed=2 dev=0,0 cdimage.iso # ¿©·¯ºÐÀÇ ¹è¼Ó¿¡ ¸Â°Ô ¼Óµµ¸¦ °íÄ¡¼¼¿ä. echo "µð½ºÅ©¸¦ ±Á´ÂÁß." echo "½Ã°£ÀÌ ¿À·¡ °É¸®´Ï±î ±â´Ù¸®½Ã±â ¹Ù¶ø´Ï´Ù." exit 0 |
ÆÄÀÏÀÇ ¼Ó¼ºÀ» º¯°æ(예 3-51 Âü°í).
chmod +x filename # "filename"À» ¸ðµç »ç¿ëÀÚ°¡ ½ÇÇàÇÒ ¼ö ÀÖ°Ô. |
chmod 644 filename # "filename" ¼ÒÀ¯ÀÚ´Â ÀÐ°í ¾µ¼ö ÀÖ°Ô, ´Ù¸¥ »ç¶÷Àº Àб⸸ ÇϰÔ(8Áø¼ö). |
chmod 1777 directory-name # µð·ºÅ丮 ¾ÈÀÇ ¸ðµç ÆÄÀÏ¿¡ ´ëÇØ ¸ðµç »ç¶÷ÀÌ ÀÐ°í ¾²°í ½ÇÇà ÇÒ ¼ö ÀÖÁö¸¸ # "½ºÆ¼Å° ºñÆ®(sticky bit)"°¡ ¼¼Æ®µÇ¾î ÀÖÀ¸¹Ç·Î # µð·ºÅ丮 ¼ÒÀ¯ÀÚ¸¸ ÆÄÀÏÀ» º¯°æÇÒ ¼ö ÀÖÀ½. |
ƯÁ¤ »ç¿ëÀÚ¿¡°Ô ±âº» ÆÄÀÏ ¼Ó¼ºÀ» ÁöÁ¤. ƯÁ¤ »ç¿ëÀÚ°¡ ¸¸µé¾î³»´Â ¸ðµç ÆÄÀÏÀº umask°¡ ÁöÁ¤ÇÑ ¼Ó¼ºÀÌ ºÎ¿©µÊ. umask°¡ ÁöÁ¤ÇÑ °ªÀº ÆÄÀÏ ÆÛ¹Ì¼ÇÀÇ ¹Ý´ë·Î Àû¿ëµÇ´Âµ¥ ¿¹¸¦ µé¸é, umask 022´Â »õ ÆÄÀÏ¿¡ 755 ÆÛ¹Ì¼ÇÀ» ÁÝ´Ï´Ù(777 - 022). º¸ÅëÀº ÃʱâÈ ½ºÅ©¸³Æ®¿¡¼ »ç¿ëµË´Ï´Ù.
exec COMMAND \;
find°¡ ã¾Æ³½ °¢°¢ÀÇ ÆÄÀÏ¿¡ ´ëÇØ COMMAND ¸¦ ½ÇÇàÇÕ´Ï´Ù. COMMAND´Â \;À¸·Î ³¡³ª¾ß ÇÕ´Ï´Ù(;¸¦ ½á¼ find·Î ³Ñ¾î°¡´Â ¸í·É¾îµéÀ» ¸í·É¾î ±×´ë·Î ÇØ¼®Çϵµ·Ï À̽ºÄÉÀÌÇÁ ½ÃÄÑ¾ß ÇÕ´Ï´Ù). COMMAND°¡ {} À» Æ÷ÇÔÇϰí ÀÖ´Ù¸é find´Â ¼±ÅÃµÈ ÆÄÀÏÀÇ Àüü °æ·ÎÀ̸§À¸·Î ¹Ù²ã¹ö¸³´Ï´Ù.
예 3-47. ÇöÀç µð·ºÅ丮 ¾ÈÀÇ ÆÄÀÏÁß ÆÄÀÏ À̸§¾È¿¡ ÀϹÝÀûÀÌÁö ¾ÊÀº ¹®ÀÚ³ª °ø¹é ¹®ÀÚ¸¦ Æ÷ÇÔÇϰí ÀÖ´Â ÆÄÀÏÀ» Áö¿ì±â
#!/bin/bash # ÇöÀç µð·ºÅ丮 ÆÄÀϵéÁß ÆÄÀÏÀ̸§¿¡ Á¤»óÀûÀÌÁö ¾ÊÀº ±ÛÀÚ¸¦ Æ÷ÇÔÇÑ ÆÄÀÏÀ» Áö¿ì±â for filename in * do badname=`echo "$filename" | sed -n /[\+\{\;\"\\\=\?~\(\)\<\>\&\*\|\$]/p` # ÀÌ·± °í¾àÇÑ ±ÛÀÚ¸¦ Æ÷ÇÔÇÑ ÆÄÀϵé: + { ; " \ = ? ~ ( ) < > & * | $ rm $badname 2>/dev/null # ¿¡·¯ ¸Þ¼¼Áö´Â ¹«½ÃÇÕ´Ï´Ù. done # ÀÌÁ¦´Â ¸ðµç Á¾·ùÀÇ °ø¹é ¹®ÀÚ¸¦ Æ÷ÇÔÇÑ ÆÄÀÏÀ» ó¸®ÇսôÙ. find . -name "* *" -exec rm -f {} \; # 'find'°¡ ãÀº °æ·Î À̸§ÀÌ "{}"·Î ¹Ù²î¾î¼ µé¾î°©´Ï´Ù. # '\'´Â ';'°¡ ¸í·É¾î ³¡À» ³ªÅ¸³½´Ù´Â ¿ø·¡ ÀÇ¹Ì·Î ÇØ¼®µÇµµ·Ï ÇØÁÝ´Ï´Ù. exit 0 |
ÀÚ¼¼ÇÑ °ÍÀº find ¸Ç ÆäÀÌÁö¸¦ Âü°íÇϼ¼¿ä.
¸í·É¾î¿¡ ÀÎÀÚ¸¦ ÇÊÅ͸µÇؼ ³Ñ°Ü ÁÖ°í ¸í·É¾î ÀÚ½ÅÀ» ÀçÁ¶ÇÕÇØÁÖ´Â ÅøÀÔ´Ï´Ù. ÀÚ½ÅÀÌ ¹Þ¾Æ µéÀÎ µ¥ÀÌŸ¸¦ ÇÊÅÍ¿ëÀ¸·Î Á¶°¢³»¼ ¸í·É¾î°¡ ó¸®ÇÒ ¼ö ÀÖ°Ô ÇØ ÁÝ´Ï´Ù. ¿ªµû¿ÈÇ¥ÀÇ ÈǸ¢ÇÑ ´ë¿ëǰÀ̶ó°í »ý°¢Çϼ¼¿ä. ¿ªµû¿ÈÇ¥¸¦ ½á¼ too many arguments À̶õ ¿¡·¯°¡ ³´Ù¸é xargs·Î ¹Ù²ã¼ ¾²¸é ¼º°øÇÒ ¼öµµ ÀÖ½À´Ï´Ù. º¸Åë, xargsÀÇ ÀÔ·ÂÀº Ç¥ÁØ ÀÔ·ÂÀ̳ª ÆÄÀÌÇÁÁö¸¸ ÆÄÀÏÀÇ Ãâ·Â¿¡¼µµ ÀÐÀ» ¼ö ÀÖ½À´Ï´Ù.
ls | xargs -p -l gzip ´Â ÇöÀç µð·ºÅ丮ÀÇ ¸ðµç ÆÄÀÏÀ» Çϳª¾¿ ¹°¾îº¸¸é¼ gzipÀ¸·Î ¹½À´Ï´Ù.
Àç¹Õ´Â ¿É¼ÇÁß ÇϳªÀÎ -n XX´Â XX·Î ³Ñ±æ ÀÎÀÚÀÇ ¼ýÀÚ¸¦ Á¦ÇÑÇÕ´Ï´Ù.
ls | xargs -n 8 echo ´Â ÇöÀç µð·ºÅ丮ÀÇ ÆÄÀÏÀ» ÇÑ ÁÙ¿¡ 8°³¾¿ ²÷¾î Ç¥½ÃÇØ ÁÝ´Ï´Ù.
참고: xargsÀÇ ±âº» ¸í·É¾î´Â echoÀÔ´Ï´Ù.
예 3-48. ½Ã½ºÅÛ ·Î±×¸¦ ¸ð´ÏÅÍ Çϱâ À§ÇÑ xargs ·Î±× ÆÄÀÏ
#!/bin/bash # /var/log/messages ÀÇ ³¡ ºÎºÐ¿¡¼ ÇöÀç µð·ºÅ丮·Î ·Î±× ÆÄÀÏÀ» ¸¸µé±â # ÁÖÀÇ: ÀÏ¹Ý »ç¿ëÀÚµµ /var/log/messages ¸¦ ÀÐÀ» ¼ö ÀÖ°Ô ÇÏ·Á¸é # ·çÆ®·Î chmod 755 /var/log/messages ¶ó°í ÇØÁÖ¼¼¿ä. ( date; uname -a ) >>logfile # ½Ã°£°ú ¸Ó½Å À̸§ echo --------------------------------------------------------------------- >>logfile tail -5 /var/log/messages | xargs | fmt -s >>logfile echo >>logfile echo >>logfile exit 0 |
예 3-49. copydir, xargs·Î ÇöÀç µð·ºÅ丮¸¦ ´Ù¸¥ µð·ºÅ丮·Î º¹»çÇϱâ
#!/bin/bash # ÇöÀç µð·ºÅ丮ÀÇ ¸ðµç ÆÄÀÏÀ» ¸í·É¾î ÁÙ¿¡¼ ÁöÁ¤ÇÑ # µð·ºÅ丮·Î º¹»çÇϱâ(verbose) if [ -z $1 ] # ÀÎÀÚ°¡ ¾øÀ¸¸é Á¾·á then echo "»ç¿ë¹ý: `basename $0` directory-to-copy-to" exit 1 fi ls . | xargs -i -t cp ./{} $1 # cp * $1 °ú ¿ÏÀüÈ÷ µ¿ÀÏÇÕ´Ï´Ù. exit 0 |
ÀÎÀÚµéÀ» ¸í·É¾î·Î ¹Ù²Ù¾î ÁÝ´Ï´Ù(½ºÅ©¸³Æ®¿¡¼ Äڵ带 ¸¸µé¾î ³¾ ¶§ À¯¿ëÇÕ´Ï´Ù).
예 3-50. eval È¿°ú º¸¿©ÁÖ±â
#!/bin/bash y=`eval ls -l` echo $y y=`eval df` echo $y # ¶óÀÎÇǵå´Â Áö¿öÁý´Ï´Ù. exit 0 |
예 3-51. °Á¦·Î ·Î±× ¾Æ¿ô ½Ã۱â
#!/bin/bash y=`eval ps ax | sed -n '/ppp/p' | awk '{ print $1 }'` # 'ppp'ÀÇ ÇÁ·Î¼¼½º ¹øÈ£ ã±â kill -9 $y # Á×À̰í # ÀÌÀü »óŸ¦ º¹±¸ÇÔ... chmod 666 /dev/ttyS3 # ppp¿¡ SIGKILLÀ» ³¯¸®¸é Á÷·Ä Æ÷Æ®ÀÇ ÆÛ¹Ì¼ÇÀÌ ¹Ù²î±â ¶§¹®¿¡ # ÀÌÀü ÆÛ¹Ì¼ÇÀ¸·Î ´Ù½Ã º¹±¸½ÃÄÑ¾ß µË´Ï´Ù. rm /var/lock/LCK..ttyS3 # Á÷·Ä Æ÷Æ®ÀÇ Àá±Ý ÆÄÀÏÀ» Áö¿ó´Ï´Ù. exit 0 |
´Ù¸ñÀû ¼ö½Ä Æò°¡ ¸í·É¾î: ÁÖ¾îÁø ¿¬»ê¿¡ µû¶ó ÀÚµ¿À¸·Î °è»êÇϰųª Æò°¡ÇÕ´Ï´Ù. ÀÎÀÚ´Â ºóÄÀ¸·Î ºÐ¸®µÇ¾î¾ß ÇÕ´Ï´Ù. °¡´ÉÇÑ ¿¬»êÀ¸·Î´Â ¼ö½Ä, ºñ±³, ¹®ÀÚ¿, ³í¸®½ÄµîÀÌ ÀÖ½À´Ï´Ù.
8 ¸®ÅÏ
2 ¸®ÅÏ
º¯¼ö¸¦ Áõ°¡. let y=y+1³ª y=$(($y+1)) °ú °°À½.
sed³ª Perl°°Àº ¿ÜºÎ ÇÁ·Î±×·¥ÀÌ ¹®ÀÚ¿ ÆÄ½Ì¿¡ ÀÖ¾î¼ ´õ ¶Ù¾î³ª±â ¶§¹®¿¡ bash ³»ºÎ ¸í·É¾î´Â ¾²Áö ¾Ê´Â°Ô ÁÁ½À´Ï´Ù.
예 3-52. expr ¾²±â
#!/bin/bash # 'expr'ÀÇ ¸î °¡Áö »ç¿ë¹ý ½Ã¹ü # +++++++++++++++++++++++++++++++++++++++ echo # »ê¼ú ¿¬»êÀÚ echo »ê¼ú ¿¬»êÀÚ echo a=`expr 5 + 3` echo 5 + 3 = $a a=`expr $a + 1` echo echo a + 1 = $a echo \(º¯¼ö¸¦ Áõ°¡½Ã۱â\) a=`expr 5 % 3` # ³ª¸ÓÁö echo echo 5 mod 3 = $a echo echo # ³í¸® ¿¬»êÀÚ echo ³í¸® ¿¬»êÀÚ echo a=3 echo a = $a b=`expr $a \> 10` echo 'b=`expr $a \> 10`, Áï...' echo "If a > 10, b = 0 (°ÅÁþ)" echo b = $b b=`expr $a \< 10` echo "If a < 10, b = 1 (Âü)" echo b = $b echo echo # ºñ±³ ¿¬»êÀÚ echo ºñ±³ ¿¬»êÀÚ echo a=zipper echo a ´Â $a if [ `expr $a = snap` ] # º¯¼ö 'a' ¸¦ °Á¦·Î ÀçÆò°¡(re-evaluation) then echo "a ´Â zipper °¡ ¾Æ´Ô" fi echo echo # ¹®ÀÚ¿ ¿¬»êÀÚ echo ¹®ÀÚ¿ ¿¬»êÀÚ echo a=1234zipper43231 echo $a ¸¦ °¡Áö°í Á¶ÀÛÇØ º¸°Ú½À´Ï´Ù. # index: ¹®ÀÚ¿ Á¶°¢(substring)ÀÇ À§Ä¡ b=`expr index $a 23` echo $a ¿¡¼ 23ÀÌ Ã³À½ ³ª¿À´Â À§Ä¡´Â $b ÀÔ´Ï´Ù. # substr: ÁÖ¾îÁø ½ÃÀÛ À§Ä¡¿¡¼ ±æÀ̸¸ÅÀÇ ¹®ÀÚ¿ Á¶°¢(substring) Âï±â b=`expr substr $a 2 6` echo ½ÃÀÛ À§Ä¡´Â 2ÀÌ°í ±æÀ̰¡ 6ÀÎ $a ÀÇ ¹®ÀÚ¿ Á¶°¢\(substring\)Àº $b ÀÔ´Ï´Ù. # length: ¹®ÀÚ¿ÀÇ ±æÀÌ b=`expr length $a` echo $a ÀÇ ±æÀÌ´Â $b ÀÔ´Ï´Ù. # 'match' ´Â 'grep'°ú ºñ½ÁÇÏ°Ô µ¿ÀÛÇÕ´Ï´Ù. b=`expr match $a [0-9]*` echo $a ¿¡¼ ¾ÕÂÊÀÇ ¼ýÀÚ °¹¼ö´Â $b ÀÔ´Ï´Ù. b=`expr match $a '\([0-9]*\)'` echo $a ¿¡¼ ¾ÕÂÊÀÇ ¼ýÀÚ´Â $b ÀÔ´Ï´Ù. echo exit 0 |
:Àº match ´ë½Å ¾µ ¼ö ÀÖ½À´Ï´Ù. À§ ¿¹Á¦¿¡¼ b=`expr $a : [0-9]*` ´Â b=`expr match $a [0-9]*` ¿Í Á¤È®ÇÏ°Ô ÀÏÄ¡Çϴ ǥÇöÀÔ´Ï´Ù.
letÀº º¯¼ö¿¡ ´ëÇØ »ê¼ú ¿¬»êÀ» ¼öÇàÇÕ´Ï´Ù. ¸¹Àº °æ¿ì¿¡ exprº¸´Ù Á» °¡º¿î ¿ëµµ·Î ¾²ÀÔ´Ï´Ù.
예 3-53. letÀ¸·Î »ê¼ú ¿¬»ê Çϱâ
#!/bin/bash echo let a=11 # 'a=11'¿Í °°½À´Ï´Ù. let a=a+5 # let "a = a + 5"¿Í °°½À´Ï´Ù. # (Å« µû¿ÈÇ¥´Â Á» ´õ Àб⠽±°Ô ÇØ ÁÝ´Ï´Ù) echo "a = $a" let "a <<= 3" # let "a = a << 3"¿Í °°½À´Ï´Ù. echo "3¹ø ¿ÞÂÊ ½¬ÇÁÆ® = $a" let "a /= 4" # let "a = a / 4"¿Í °°½À´Ï´Ù. echo $a let "a -= 5" # let "a = a - 5"¿Í °°½À´Ï´Ù. echo $a let "a = a * 10" echo $a let "a %= 8" echo $a exit 0 |
printf´Â Çü½ÄÈ Ãâ·ÂÀ» ÇØÁÖ´Â ¸í·É¾î·Î¼, echoÀÇ Çâ»óµÈ ¹öÀüÀÔ´Ï´Ù. C ¾ð¾îÀÇ printf ¿¡¼ ¸î°¡Áö°¡ Á¦ÇѵǾî ÀÖ´Â º¯Á¾ÀÌ¸ç ¹®¹ýµµ ¿ª½Ã ¾à°£ ´Ù¸¨´Ï´Ù.
printf format-string ... parameter ...
Á» ´õ ÀÚ¼¼ÇÑ °ÍÀº printf ¸Ç ÆäÀÌÁö¸¦ º¸¼¼¿ä.
경고 |
¿À·¡µÈ bash ¹öÀüÀÏ °æ¿ì printf°¡ ¾È µÉ ¼öµµ ÀÖ½À´Ï´Ù. |
예 3-54. printf ¿¹Á¦
#!/bin/bash # printf ½Ã¿¬ PI=3.14159265358979 DecimalConstant=31373 Message1="¾È³çÇϼ¼¿ä," Message2="Áö±¸Àο©·¯ºÐ." echo printf "Pi¸¦ ¼Ò¼öÁ¡ ÀÌÇÏ 2 ÀÚ¸®¸¸ Ç¥½Ã = %1.2f" $PI echo printf "Pi¸¦ ¼Ò¼öÁ¡ ÀÌÇÏ 9 ÀÚ¸®¸¸ Ç¥½Ã = %1.9f" $PI # ¹Ý¿Ã¸²ÀÌ ¾Ë¸Â°Ô µÈ °Í¿¡ ÁÖÀÇÇϼ¼¿ä. printf "\n" # ¶óÀÎ Çǵ带 ÂïÀ½. 'echo'¿Í °°½À´Ï´Ù. printf "»ó¼ö = \t%d\n" $DecimalConstant # ÅÇÀÌ µé¾î°¬ÁÒ.(\t) printf "%s %s \n" $Message1 $Message2 echo exit 0 |
ÀÛ¾÷ Á¦¾î ¸í·É¾îÀÎ atÀº ƯÁ¤ÇÑ ½Ã°£¿¡ ƯÁ¤ÇÑ ¸í·ÉÀ» ½ÇÇà ½Ãŵ´Ï´Ù. ÀÌ´Â cronÀÇ »ç¿ëÀÚ ¹öÀü ¸í·É¾îÀÔ´Ï´Ù.
at 2pm January 15 ¶ó°í ÇÏ¸é ±× ½Ã°£¿¡ ½ÇÇà½Ãų ¸í·É¾îµéÀ» ¹°¾îº¾´Ï´Ù. ¿©±â¿¡´Â ½© ½ºÅ©¸³Æ®¸¦ ½áµµ µË´Ï´Ù.
-f ¿É¼ÇÀ» ¾²°Å³ª ÀÔ·Â ÀçÁöÇâ(<)À» ½á¼ ÆÄÀÏ·Î ÀúÀåµÇ¾î ÀÖ´Â ¸í·É¾î¸¦ ÇÑ ¹ø¿¡ ÀνĽÃų ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ ¶§, ÆÄÀϾȿ¡´Â ½© ½ºÅ©¸³Æ®°¡ À־ µÇÁö¸¸ ´ç¿¬È÷ »ç¿ëÀÚÀÇ ÀÔ·ÂÀÌ ÇÊ¿äÄ¡ ¾Ê¾Æ¾ß ÇÕ´Ï´Ù.
bash$ at 2:30 am Friday < at-jobs.list job 2 at 2000-10-27 02:30 |
ÇöÀç ½ÇÇàÁßÀÎ ÀÛ¾÷À» »ç¿ëÀÚ¿Í ÇÁ·Î¼¼½º ID·Î º¸¿©ÁÝ´Ï´Ù. º¸Åë ax ¿É¼ÇÀ» ¾²´Âµ¥ ÆÄÀÌÇÁ·Î grepÀ» °É¾î¼ ƯÁ¤ÇÑ ÇÁ·Î¼¼½º¸¦ ãÀ» ¼ö ÀÖ½À´Ï´Ù.
ps ax | grep sendmail ÀÇ °á°ú´Â
295 ? S 0:00 sendmail: accepting connections on port 25 |
batchµµ at°ú ºñ½ÁÇÑ ÀÛ¾÷ Á¦¾î ¸í·É¾î ÀÌÁö¸¸ ´Ù¸¥ Á¡Àº ½Ã½ºÅÛ ºÎÇϰ¡ 0.8 ÀÌÇÏÀÏ °æ¿ì¿¡¸¸ ¸í·É¾îµéÀ» ½ÇÇàÇÕ´Ï´Ù. ¿ª½Ã -f ¿É¼ÇÀ» ½á¼ ÆÄÀÏ¿¡¼ ¸í·É¾îµéÀ» ÀоîµéÀÏ ¼ö ÀÖ½ººó´Ù.
½©¿¡¼ wait ·çÇÁ¿Í °°½À´Ï´Ù. ƯÁ¤ÇÑ ÃÊ´ÜÀ§ ½Ã°£µ¿¾È ¾Æ¹«Àϵµ ¾È ÇÏ°í ±â´Ù¸³´Ï´Ù. ŸÀ̹ÖÀ̳ª ¹é±×¶ó¿îµå¿¡¼ ƯÁ¤ÇÑ »ç°ÇÀÌ ÀϾ±â¸¦ ±â´Ù¸®¸é¼ ´ë±âÇÑ´ÙµçÁö ÇÒ ¶§ À¯¿ëÇÏ°Ô ¾²ÀÏ ¼ö ÀÖ½À´Ï´Ù.
sleep 3 # 3Ãʰ£ ´ë±â. |
¾îµòÁö ¸ð¸£°Ô ºÒ¸íÈ®ÇÏ°í ¾à°£Àº ¾²±â ²¨·ÁÇÏ´Â "µ¥ÀÌŸ º¹»ç±â"(data duplicator) ¸í·É¾îÀÔ´Ï´Ù. º¯È¯°úÁ¤À» °ÅÃÄ ÆÄÀÏ(ȤÀº Ç¥ÁØ ÀÔÃâ·Â)À» º¹»çÇÕ´Ï´Ù. ASCII-EBCDIC°£ º¯È¯, ´ë¼Ò¹®ÀÚ°£ º¯È¯, ÀÔÃâ·Â ¹ÙÀÌÆ® ½ÖÀ» ¹Ù²Ù°Å³ª ÀÔ·ÂÆÄÀÏÀÇ Ã³À½À̳ª ³¡À» °Ç³Ê¶Ù°Å³ª Àß¶ó³»¼ Ãâ·ÂÆÄÀÏÀ» ¸¸µç´Ùµç°¡ ÇÏ´Â µîÀÇ º¯È¯ÀÌ °¡´ÉÇÕ´Ï´Ù. dd°¡ °®°í ÀÖ´Â °·ÂÇÑ ±â´ÉÀÇ º¯È¯ ¸ñ·Ï°ú ´Ù¸¥ ¿É¼ÇµéÀ» º¸·Á¸é dd --help¸¦ ÇÏ½Ã¸é µË´Ï´Ù.
dd ¸í·É¾î´Â Ç÷ÎÇÇ °°Àº µð¹ÙÀ̽ºÀÇ raw µ¥ÀÌŸ¿Í µð½ºÅ© À̹ÌÁö¿¡ Á÷Á¢ Á¢±ÙÇÒ ¼ö Àֱ⠶§¹®¿¡ ºÎÆ® Ç÷ÎÇǸ¦ ¸¸µé ¶§ °°Àº °æ¿ì¿¡ ¾²ÀÏ ¼ö ÀÖ½À´Ï´Ù.
dd if=kernel-image of=/dev/fd0H1440 |
ÆÄÀÏÀ» Á¤·ÄÇÒ ¶§ ¾²À̴µ¥ ÁÖ·Î ÆÄÀÌÇÁ¿¡¼ ÇÊÅͷμ ¾²ÀÔ´Ï´Ù. ¿É¼ÇÀº ¸Ç ÆäÀÌÁö¸¦ Âü°íÇϼ¼¿ä.
°£´ÜÇÑ ÆÄÀÏ ºñ±³ À¯Æ¿¸®Æ¼. µÎ ÆÄÀÏÀ» ÁÙ ´ÜÀ§·Î Â÷·Ê´ë·Î ºñ±³ÇÕ´Ï´Ù. ºñ±³ ´Ü¾î »çÀü °°Àº °÷¿¡¼ À¯¿ëÇÏ°Ô ¾²ÀÏ ¼ö Àִµ¥, sort¿Í uniq¸¦ ½á¼ diff¿¡ ÆÄÀÌÇÁ·Î ³Ñ°ÜÁÖ´Â ½ÄÀÔ´Ï´Ù. diff file-1 file-2 Ãâ·ÂÀº °¢ ÆÄÀÏ¿¡¼ ¼·Î ´Ù¸¥ ºÎºÐÀ» ij·µÀ¸·Î º¸¿©ÁÝ´Ï´Ù. diffÀÇ ÀϹÝÀûÀÎ ¿ëµµ´Â patch ¿Í °°ÀÌ ¾²¿©¼ ´Ù¸¥ ÆÄÀÏÀ» ¸¸µé¾î ³»´Â °ÍÀÔ´Ï´Ù(¾Æ·¡ Âü°í). -e ¿É¼ÇÀº ed³ª ex¿¡ ¸Â´Â Ãâ·Â ÆÄÀÏÀ» ¸¸µé¾î ³À´Ï´Ù.
patch -p1 <patch-file # 'patch-file'¿¡ ÀÖ´Â º¯°æ»çÇ×À» 'patch-file'¿¡¼ ³ªÅ¸³»´Â ÆÄÀÏ¿¡ Àû¿ë cd /usr/src gzip -cd patchXX.gz | patch -p0 # 'patch'·Î Ä¿³Î ¼Ò½º ¾÷±×·¹À̵å Çϱâ. # À͸íÀÇ ÀúÀÚ(¾Ë¶õ ÄÛ½º?)°¡ ¾´ ¸®´ª½º Ä¿³Î ¹®¼ "README"¿¡¼ ¹ßÃé. |
´Ù¸ñÀû ÆÄÀÏ ºñ±³ À¯Æ¿¸®Æ¼. Á¦´ë·Î µÈ °á°ú¸¦ ¾òÀ¸·Á¸é ÆÄÀÏÀÌ Á¤·ÄµÇ¾î ÀÖ¾î¾ß Èü´Ï´Ù.
comm -options first-file second-file
comm file-1 file-2 Ãâ·ÂÀº ¼¼ ÄÀ¸·Î ÀÌ·ç¾î Áý´Ï´Ù:
ù° Ä = file-1¿¡ À¯ÀÏÇÑ ÁÙ
µÑ° Ä = file-2¿¡ À¯ÀÏÇÑ ÁÙ
¼¼Â° Ä = µÎ ÆÄÀÏ ¾çÂÊ¿¡ °øÅëÀ¸·Î ³ªÅ¸³ª´Â ÁÙ
´ÙÀ½ ¿É¼ÇÀº Çϳª ÀÌ»óÀÇ Ãâ·Â ÄÀ» Á¦°ÅÇÕ´Ï´Ù.
-1 Àº 1¹ø ÄÀ» Á¦°Å
-2 ´Â 2¹ø ÄÀ» Á¦°Å
-3 Àº 3¹ø ÄÀ» Á¦°Å
-12 ´Â 1¹ø°ú 2 ¹ø ÄÀ» °°ÀÌ Á¦°Å, µîµî..
ÀÌ ÇÊÅÍ´Â Á¤·ÄµÈ ÆÄÀÏ¿¡¼ Áߺ¹µÈ ÁÙÀ» Á¦°ÅÇÕ´Ï´Ù. º¸Åë sort¿Í ÆÄÀÌÇÁ¿¡¼ °°ÀÌ ¾²ÀÔ´Ï´Ù.
cat list-1 list-2 list-3 | sort | uniq > final.list # ¸®½ºÆ® ÆÄÀϵéÀ» ºÙÀ̰í Á¤·ÄÇÑ ´ÙÀ½ # Áߺ¹µÈ ÁÙÀ» Á¦°ÅÇÑ ÈÄ °á°ú¸¦ final.list¿¡ ÀúÀå. |
ÅÇÀ» ºó ÄÀ¸·Î ¸¸µé¾îÁÖ´Â ÇÊÅÍ·Î½á ÆÄÀÌÇÁ¿¡¼ ÁÖ·Î ¾²ÀÔ´Ï´Ù.
ÆÄÀÏ¿¡¼ Çʵ带 »Ì¾Æ ³»´Â ¸í·É¾î. awk¿¡¼ print $N°ú ºñ½ÁÇÏÁö¸¸ ¾à°£ÀÇ Á¦ÇÑ »çÇ×À» °®°í ÀÖ½À´Ï´Ù. awkº¸´Ù´Â ´õ °£´ÜÇÏ°Ô ¾µ ¼ö ÀÖ½À´Ï´Ù. Ưº°È÷ Áß¿äÇÑ ¿É¼ÇÀ¸·Î´Â -d(±¸ºÐÀÚ)¿Í -f(Çʵå Áö½ÃÀÚ)°¡ ÀÖ½À´Ï´Ù.
¸¶¿îÆ® µÈ ÆÄÀÏ ½Ã½ºÅÛ ¸ñ·ÏÀ» ¾ò±â À§ÇØ cut ¾²±â:
cat /etc/mtab | cut -d ' ' -f1,2 |
OS¿Í Ä¿³Î ¹öÀüÀ» ¾ò±â À§ÇØ cut ¾²±â:
uname -a | cut -d" " -f1,3,11,12 |
cut -d ' ' -f2,3 filename Àº awk '{ print $2, $3 }' filename °ú °°Àº °á°ú¸¦ º¸¿©ÁÝ´Ï´Ù.
Ä Á¦°Å ÇÊÅÍ. ÆÄÀÏ¿¡¼ Ä(ÇÑ ±ÛÀÚ)À» Áö¿ó´Ï´Ù. Áö¿ï ºÎºÐÀ» ÁöÁ¤ ¾È ÇÏ¸é ¿ø·¡ ÆÄÀÏÀ» ±×´ë·Î Ç¥ÁØ Ãâ·ÂÀ¸·Î µ¹·ÁÁÝ´Ï´Ù. colrm 2 4 <filename Àº filename °¢ ÁÙÀÇ 2¿¡¼ 4¹øÂ° ±ÛÀÚ¸¦ Áö¿ó´Ï´Ù.
주의 |
ÆÄÀÏ¿¡ ÅÇÀ̳ª Ãâ·Â ¸øÇÏ´Â ±ÛÀÚ°¡ ÀÖ´Ù¸é ¾î¶² °á°ú°¡ ³ª¿ÃÁö ¾Ë ¼ö ¾ø½À´Ï´Ù. |
´Ù¸¥ ÆÄÀÏÀ» ¿©·¯ ÄÀ» °¡Áø ÇϳªÀÇ ÆÄÀÏ·Î ¸¸µå´Â ¸í·É¾î. cut¿Í °°ÀÌ ½á¼ ½Ã½ºÅÛ ·Î±× ÆÄÀÏÀ» ¸¸µå´Âµ¥ À¯¿ëÇÕ´Ï´Ù.
pasteº¸´Ù Á» ´õ À¯¿¬ÇÑ ¸í·É¾î¶ó°í º¸¸é µË´Ï´Ù. ´ÜÁö µÎ °³ÀÇ ÆÄÀÏ¿¡¼¸¸ µ¿ÀÛÇÏÁö¸¸ ¾î¶² Çʵ带 ºÙÀÏ °ÍÀÎÁö, ¾î¶² ¼ø¼·Î ¹À» °ÍÀÎÁö¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
tar/gzip ¶§¹®¿¡ Áö±ÝÀº °ÅÀÇ ¾È ¾²ÀÌ´Â Æ¯ÈµÈ º¹»ç ¸í·É¾îÁö¸¸ µð·ºÅ丮 Æ®¸®¸¦ ¿Å±â·Á°í ÇÒ ¶§ °°Àº °æ¿ìÀÇ ¾²ÀÓ»õ°¡ ¾ÆÁ÷ ³²¾Æ ÀÖ½À´Ï´Ù.
Ä£¼÷ÇÑ ¸í·É¾îÀÎ cd´Â ¾î¶² ¸í·É¾î°¡ ƯÁ¤ÇÑ µð·ºÅ丮¿¡¼ ½ÇÇà µÅ¾ß ÇÒ °æ¿ì¿¡ °°ÀÌ ¾²ÀÔ´Ï´Ù.
(cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xvfp -) |
ÆÄÀÏ¿¡ ´ëÇÑ Á¢±Ù/¼öÁ¤ ½Ã°£À» ÇöÀç ½Ã°¢À̳ª ƯÁ¤ÇÑ ½Ã°¢À¸·Î ¹Ù²ã ÁÖ´Â À¯Æ¿¸®Æ¼Áö¸¸ ÁÖ·Î »õ ÆÄÀÏÀ» ¸¸µé ¶§ ¾¹´Ï´Ù. zzz¶õ ÆÄÀÏÀÌ ¾ø¾ú´Ù°í °¡Á¤Çϰí touch zzz ¶ó°í Çϸé Å©±â°¡ 0ÀÎ zzz ÆÄÀÏÀ» ¸¸µì´Ï´Ù. ÀÌ·± ½ÄÀÇ ½Ã°£ Á¤º¸¸¦ °°´Â ºó ÆÄÀÏÀº ³¯Â¥ Á¤º¸¿ëÀ¸·Î ¾ÆÁÖ ¾µ ¸¸ ÇÕ´Ï´Ù. ¿¹¸¦ µé¸é ¾î¶² ÇÁ·ÎÁ§Æ®¿¡ ´ëÇÑ º¯°æ ½Ã°£°°Àº °ÍÀ» °è¼Ó °ü¸®ÇÏ·Á°í ÇÒ´Â °æ¿ì°¡ ±×·¸½À´Ï´Ù.
ÇÑ ÆÄÀÏÀ» ÀÛÀº Á¶°¢À¸·Î ³ª´²ÁÖ´Â À¯Æ¿¸®Æ¼. Ç÷ÎÇÇ·Î ¹é¾÷À» ÇÏ·Á°í ÇÑ´ÙµçÁö À̸ÞÀÏÀÇ Ã·ºÎ ÆÄÀÏ·Î ¾²·Á°í ÇÑ´ÙµçÁö ¾÷·Îµå¸¦ ÇÏ·Á°í ÇÒ ¶§ ¾²ÀÔ´Ï´Ù.
Çϳª ÀÌ»óÀÇ ÆÄÀÏÀ» Áö¿ó´Ï´Ù. -f ¿É¼ÇÀº Àбâ Àü¿ë ÆÄÀÏÀÌ¶óµµ °Á¦µµ Áö¿ï¼ö ÀÖ°Ô ÇÕ´Ï´Ù.
주의 |
Àç±Í ¿É¼ÇÀÎ -rÀ» ¾²¸é µð·ºÅ丮 Æ®¸® Àüü¸¦ Áö¿ó´Ï´Ù. |
µð·ºÅ丮¸¦ Áö¿ó´Ï´Ù. ÀÌ ¶§ ÇØ´ç µð·ºÅ丮¿¡´Â Á¡ ÆÄÀÏÀ» Æ÷ÇÔÇØ¼ ¾Æ¹« ÆÄÀϵµ ¾ø¾î¾ß ÀÌ ¸í·É¾î°¡ ¼º°øÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ¹Ì Á¸ÀçÇÏ´Â ÆÄÀÏ¿¡ ´ëÇÑ ¸µÅ©¸¦ ¸¸µì´Ï´Ù. ½Éº¼¸¯À̳ª ¼ÒÇÁÆ® ¸µÅ© Ç÷¡±×¸¦ ³ªÅ¸³»´Â -s ¿É¼ÇÀ» ¸¹ÀÌ ¾¹´Ï´Ù. ÀÌ´Â ÂüÁ¶µÇ´Â ¿ø·¡ ÆÄÀÏÀÌ Çϳª ÀÌ»óÀÇ À̸§À» °¡Áú ¼ö ÀÖ°Ô ÇØÁÖ°í »óÀ§ °³³äÀÇ ´Ù¸¥ º°ÄªÀ» °®°Ô ÇØ ÁÝ´Ï´Ù.
ln -s oldfile newfile À̶ó°í Çϸé ÀÌ¹Ì Á¸ÀçÇÏ´Â oldfile¿¡ ´ëÇÑ »õ·Î¿î ¸µÅ© ÆÄÀÏÀÎ newfileÀ» ¸¸µé¾î ³À´Ï´Ù.
µð·ºÅ丮 ¸¸µé±â. mkdir -p project/programs/December ´Â ÁÖ¾îÁø µð·ºÅ丮¸¦ ¸¸µå´Âµ¥ -p ¿É¼ÇÀÌ ºÙ¾ú±â ¶§¹®¿¡ ¾ø´Â ºÎ¸ð µð·ºÅ丮¸¦ ÀÚµ¿À¸·Î ¸¸µé¾î ÁÝ´Ï´Ù.
ÆÄÀÏ º¹»ç ¸í·É¾î. cp file1 file2 ´Â file1À» file2·Î º¹»çÇÕ´Ï´Ù. ÀÌ ¶§ file2°¡ ÀÌ¹Ì Á¸ÀçÇÑ´Ù¸é µ¤¾î ¾¹´Ï´Ù.
ÆÄÀÏ À̵¿ ¸í·É¾î. cp¿Í rmÀ» °°ÀÌ ¾²´Â °Í°ú ¶È°°½À´Ï´Ù. ¿©·¯°³ÀÇ ÆÄÀÏÀ» µð·ºÅ丮·Î ¿Å±æ ¶§ ¾²À̴µ¥ 예 3-7¿Í 예 A-2¿¡ ¿¹Á¦°¡ ÀÖ½À´Ï´Ù.
"¿ø°Ý(remote) º¹»ç", ÆÄÀÏÀ» ³×Æ®¿öÅ©¿¡ ¹°¸° ´Ù¸¥ ¸Ó½ÅÀ¸·Î º¹»çÇÔ. rcp¿Í ±× ºñ½ÁÇÑ À¯Æ¿¸®Æ¼µéÀ» ½©¿¡¼ ¾²´Â °ÍÀº º¸¾È°ú °ü·ÃÀÌ Àֱ⠶§¹®¿¡ º°·Î ÃßõÇÏÁö ¾Ê½À´Ï´Ù. ´ë½Å expect ½ºÅ©¸³Æ®¸¦ ¾²½Ã±â ¹Ù¶ø´Ï´Ù.
yesÀÇ ±âº» µ¿ÀÛÀº y¿Í ¶óÀÎ Çǵ带 Ç¥ÁØ Ãâ·ÂÀ¸·Î °è¼Ó »Ñ¸®´Âµ¥, control-c ·Î ¸ØÃâ ¼ö ÀÖ½À´Ï´Ù. yes ¾î¶² ¹®ÀÚ¿À̶ó°í ÇÏ¸é ¾î¶² ¹®ÀÚ¿À» y ´ë½Å °è¼Ó »Ñ¸³´Ï´Ù. ¿Ö ÀÌ·±°Ô ÇÊ¿äÇÒ±î¿ä? ¸í·É¾î ÁÙÀ̳ª ½ºÅ©¸³Æ® »ó¿¡¼ »ç¿ëÀÚ ÀÔ·ÂÀ» ¿øÇÏ´Â ÇÁ·Î±×·¥¿¡°Ô yesÀÇ Ãâ·ÂÀ» ÀçÁöÇâÀ̳ª ÆÄÀÌÇÁ ½Ãų ¼ö ÀÖ½À´Ï´Ù. »ç½Ç, yes´Â expectÀÇ °£´ÜÇÑ ¹öÀüÀÔ´Ï´Ù.
ÀÌÁø ÆÄÀÏÀ̳ª µ¥ÀÌŸ ÆÄÀÏ ¾È¿¡¼ Ãâ·Â °¡´ÉÇÑ ¹®ÀÚµéÀ» ã°í ½ÍÀ» ¶§ strings¸¦ ¾²¸é µË´Ï´Ù. ´ë»ó ÆÄÀÏ¿¡¼ Ãâ·Â °¡´ÉÇÑ ¹®ÀÚµéÀ» ¼ø¼´ë·Î º¸¿©ÁÝ´Ï´Ù. À̰ÍÀ¸·Î ÄÚ¾î ´ýÇÁ ÆÄÀÏÀ̳ª ¾Ë ¼ö ¾ø´Â ±×·¡ÇÈ ÆÄÀÏÀ» °£´ÜÇÏ°Ô È®ÀÎÇØ º¼ ¼ö ÀÖ½À´Ï´Ù (strings image-file | moreÀÌ JFIF °°Àº ¹®ÀÚ¸¦ º¸¿©ÁØ´Ù¸é ±× ÆÄÀÏÀº jpeg ÆÄÀÏÀ̶ó°í »ý°¢ÇÏ¸é µË´Ï´Ù). ½ºÅ©¸³Æ®¿¡¼´Â grepÀ̳ª sed·Î stringsÀÇ Ãâ·ÂÀ» ÆÄ½ÌÇØ¼ ¾µ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
Ç¥Çö½ÄÀ̳ª º¯¼ö($variable)¸¦ Ç¥ÁØ Ãâ·ÂÀ¸·Î Ãâ·ÂÇϱâ.
echo Hello echo $a |
º¸Åë, echo°¡ ´º¶óÀÎ ¹®ÀÚ¸¦ Âï¾îÁÖÁö¸¸ ÇÊ¿ä¾ø´Ù¸é -nÀ¸·Î ¸ø Âï°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù.
cat´Â concatenate(¿¬¼ÓÀ¸·Î ÀÕ´Ù) ¿¡¼ µû¿Â ¸»·Î½á ÆÄÀÏÀ» Ç¥ÁØ Ãâ·ÂÀ¸·Î »Ñ·ÁÁÝ´Ï´Ù. ÀçÁöÇâ(>À̳ª >>)°ú °°ÀÌ ¾²¸é ¿©·¯ ÆÄÀÏÀ» ÇÑ ÆÄÀÏ·Î ¸¸µì´Ï´Ù.
cat filename cat file.1 file.2 file.3 > file.123 |
tac, Àº cat¸¦ °Å²Ù·Î ¾´ °ÍÀε¥, ÆÄÀÏÀÇ ³¡¿¡¼ºÎÅÍ °Å²Ù·Î º¸¿©ÁÝ´Ï´Ù.
ÆÄÀÏÀÇ °¢ ÁÙÀ» °Å²Ù·Î µÚÁý¾î Ç¥ÁØ Ãâ·ÂÀ¸·Î ³»º¸³À´Ï´Ù. tac°ú ´Ù¸¥ Á¡Àº rev´Â ÁÙÀÇ ¼ø¼´Â ±×´ë·Î »ì¸®°í °¢ ÁÙÀ» ÁÙ ³¡¿¡¼ Á٠óÀ½À¸·Î µÚÁý´Â´Ù´Â °ÍÀÔ´Ï´Ù.
bash$ cat file1.txt This is line 1. This is line 2. |
bash$ tac file1.txt This is line 2. This is line 1. |
bash$ rev file1.txt .1 enil si sihT .2 enil si sihT |
ÆÄÀÏÀÇ Ã³À½ 10ÁÙÀ» Ç¥ÁØ Ãâ·ÂÀ¸·Î º¸¿©ÁÝ´Ï´Ù.
ÆÄÀÏÀÇ ¸¶Áö¸·À» Ç¥ÁØ Ãâ·ÂÀ¸·Î º¸¿©ÁÝ´Ï´Ù(±âº»Àº 10 ÁÙÀÌÁö¸¸ ¹Ù²Ü ¼ö ÀÖ½À´Ï´Ù). º¸Åë -f ¿É¼ÇÀ» ½á¼ ½Ã½ºÅÛ ·Î±× ÆÄÀÏ¿¡ °è¼Ó Ãß°¡µÇ´Â »çÇ×À» º¸·Á°í ÇÒ ¶§ ¾²ÀÔ´Ï´Ù.
tailÀÌ ½ÇÁ¦·Î ¾î¶»°Ô ¾²ÀÌ´ÂÁö´Â 예 3-48 °ú 예 3-100 ¸¦ Âü°íÇϼ¼¿ä.
[¼öµµ¾÷°è¿¡¼ ÀÌ ¾ÆÀ̵ð¾î¸¦ ¾ò¾ú½À´Ï´Ù.]
tee´Â ÀçÁöÇâ ¿¬»êÀÚÀÌÁö¸¸ ¾à°£ ´Ù¸¨´Ï´Ù. ¼öµµ ¹è°ü°øÀÇ tee(TÀÚ ¹è°ü ÆÄÀÌÇÁ)ó·³ ¸í·É¾î Ãâ·ÂÀ̳ª, ÆÄÀÌÇÁ¸¦ °É¾î¼ ÀÛ¾÷ÁßÀÎ ¸í·É¾îÀÇ Ãâ·ÂÀ» È®Àå ½ÃŰÁö¸¸ °á°ú¿¡´Â ¾Æ¹« ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù. ÁøÇàÁßÀÎ ÇÁ·Î¼¼½ºÀÇ »óȲÀ» ÆÄÀϵîÀ¸·Î Ãâ·ÂÇÒ ¶§ À¯¿ëÇѵ¥, º¸Åë µð¹ö±ë ¿ëµµ·Î ¾²ÀÔ´Ï´Ù.
tee |------> ÆÄÀÏ·Î | ===============|=============== ¸í·É¾î --->----|-¿¬»êÀÚ--->---> ¸í·É¾îÀÇ °á°ú =============================== |
cat listfile*| sort | tee check.file | uniq > result.file |
À̸§ÀÌ ¾à°£ ¾Ö¸ÅÇÑ ÀÌ ¸í·É¾î´Â ³×ÀÓµå ÆÄÀÌÇÁ(named pipe)¸¦ ¸¸µé¾î ³À´Ï´Ù. ³×ÀÓµå ÆÄÀÌÇÁ¶õ ÇÁ·Î¼¼½º³¢¸® µ¥ÀÌŸ¸¦ ÁÖ°í ¹ÞÀ» ¼ö ÀÖµµ·Ï ÇÏ´Â Àӽà FIFO(First-In-First-Out) ¹öÆÛ¸¦ °¡¸£Å°´Â ¸»ÀÔ´Ï´Ù. ÀüÇüÀûÀÎ ½Ã³ª¸®¿À´Â ÇÑ ÇÁ·Î¼¼½º°¡ FIFO¿¡ µ¥ÀÌŸ¸¦ ¾²°í ´Ù¸¥ ÇÁ·Î¼¼½º°¡ ±× µ¥ÀÌŸ¸¦ ÀÐ¾î °¡´Â °ÍÀÔ´Ï´Ù. 예 A-7 ¸¦ Âü°íÇϼ¼¿ä.
ÅØ½ºÆ® ÆÄÀÏÀ̳ª ¸í·É¾îÀÇ Ãâ·ÂÀ» ÆÄ½ÌÇϴµ¥ ƯÈ÷ ¾Ë¸ÂÀº ½ºÅ©¸³Æ® ¾ð¾îÀÔ´Ï´Ù. Ȧ·Î ¾²ÀÏ ¼öµµ ÀÖ°í ÆÄÀÌÇÁ³ª ½© ½ºÅ©¸³Æ®¿¡¼ ¾²ÀÏ ¼öµµ ÀÖ½À´Ï´Ù.
ex ¸í·É¾îµéÀ» ¹èÄ¡ ¸ðµå¿¡¼ ¾µ ¼ö ÀÖ°Ô ÇØÁÖ´Â ºñ´ëÈ½Ä "½ºÆ®¸² ¿¡µðÅÍ"ÀÔ´Ï´Ù. ½© ½ºÅ©¸³Æ®¿¡¼ ¾ÆÁÖ ÀÚÁÖ ¾²ÀÔ´Ï´Ù(2.2절¸¦ º¸¼¼¿ä).
ÇÁ·Î±×·¥ °¡´ÉÇÑ ÆÄÀÏ ºÐ¼®¹× Çü½ÄÈ ¸í·É¾î·Î½á, ±¸Á¶ÈµÈ ÅØ½ºÆ® ÆÄÀÏ¿¡ ÀÖ´Â Çʵ峪 Ä÷³À» »Ì¾Æ³»°í Á¶ÀÛÇϴµ¥ ¾ÆÁÖ Àû´çÇϸç, ¹®¹ýÀº C¿Í ºñ½ÁÇÕ´Ï´Ù. 예 2-5 ¸¦ º¸½Ã¸é ½© ½ºÅ©¸³Æ®¿¡¼ awk°¡ ¾î¶»°Ô ¾²ÀÌ´ÂÁö ¾Ë ¼ö ÀÖ½À´Ï´Ù.
ÃâÆÇ¿ë ¿ø°í³ª Çü½ÄÈµÈ ºñµð¿À µð½ºÇ÷¹ÀÌ¿ë ÅØ½ºÆ® ¸¶Å©¾÷ ¾ð¾î(Text markup language)µéÀÔ´Ï´Ù.
¸Ç ÆäÀÌÁö°¡ groffÀ» ¾¹´Ï´Ù(예 A-1 Âü°í). °í½ºÆ®½ºÅ©¸³Æ®(Ghostscript, gs)´Â Æ÷½ºÆ®½ºÆ®¸³Æ®(Postscript)ÀÇ GPL ¹öÀüÀÔ´Ï´Ù. TeX´Â Donald KnuthÀÇ Á¤±³ÇÑ Á¶ÆÇ ½Ã½ºÅÛÀÔ´Ï´Ù. Á¾Á¾, ÀÌ ¸¶Å©¾÷ ¾ð¾îµé¿¡ ³Ñ±æ ÀÎÀÚ³ª ¿É¼ÇµéÀ» ½© ½ºÅ©¸³Æ®¿¡¼ 󸮸¦ Çϵµ·Ï ÇØ ÆíÇÏ°Ô ¾¹´Ï´Ù.
üũ½æÀ» ¸¸µé¾î³»´Â À¯Æ¿¸®Æ¼µéÀÔ´Ï´Ù. üũ½æÀ̶õ ÆÄÀÏ ÀÚüÀÇ ¹«°á¼ºÀ» È®ÀÎÇϱâ À§ÇØ ÆÄÀÏÀÇ ³»¿ëÀ¸·ÎºÎÅÍ ¼öÇÐÀûÀ¸·Î °è»êµÈ ¼ýÀÚ¸¦ ³ªÅ¸³À´Ï´Ù. Áß¿äÇÑ ½Ã½ºÅÛ ÆÄÀÏÀÌ ¹Ù²î¾ú°Å³ª ±úÁ³´ÂÁöµîÀÇ È®ÀÎ ¿©ºÎ °°Àº º¸¾È ¸ñÀûÀ¸·Î üũ½æÀ» Âü°íÇÒ ¼ö ÀÖ½À´Ï´Ù.
wc ´Â ÆÄÀÏÀ̳ª I/O ½ºÆ®¸²¿¡ ³ªÅ¸³ª´Â "´Ü¾î °¹¼ö"(word count)¸¦ ¾Ë·ÁÁÝ´Ï´Ù.
$ wc /usr/doc/sed-3.02/README [20 lines 127 words 838 characters] |
wc -w ´Â ´Ü¾î °¹¼ö¸¸ ³ªÅ¸³À´Ï´Ù.
wc -l Àº ÁÙ ¼ö¸¸ ³ªÅ¸³À´Ï´Ù.
wc -c ´Â ±ÛÀÚ¼ö¸¸ ³ªÅ¸³À´Ï´Ù.
wc -L Àº °¡Àå ±ä ÁÙÀÇ ±æÀ̸¸ ³ªÅ¸³À´Ï´Ù.
ÇöÀç µð·ºÅ丮¿¡ .txt ÆÄÀÏÀÌ ¸î °³ ÀÖ´ÂÁö ¾Ë¾Æ³»´Â ¿¹Á¦ÀÔ´Ï´Ù:
$ ls *.txt | wc -l |
¹®ÀÚ º¯È¯ ÇÊÅÍ.
경고 |
ÀοëºÎÈ£³ª ²©¼è¸¦ ÀûÀýÇÏ°Ô ½á Áà¾ß µË´Ï´Ù. |
tr "A-Z" "*" <filename filename¼ÓÀÇ ¸ðµç ´ë¹®ÀÚ¸¦ º°Ç¥·Î ¹Ù²Ù¾î Ç¥ÁØ Ãâ·ÂÀ¸·Î ³»º¸³À´Ï´Ù.
tr -d [0-9] <filename ´Â filename ¿¡ µé¾îÀÖ´Â ¸ðµç ¼ýÀÚ¸¦ Áö¿ö¹ö¸³´Ï´Ù.
예 3-56. toupper: ÆÄÀÏ ³»¿ëÀ» ¸ðµÎ ´ë¹®ÀÚ·Î ¹Ù²Þ.
#!/bin/bash # ÆÄÀÏ ³»¿ëÀ» ¸ðµÎ ´ë¹®ÀÚ·Î ¹Ù²Þ if [ -z $1 ] # ¸í·É¾î ÁÙ ÀÎÀÚ°¡ ÀÖ´ÂÁö È®ÀÎÇϴ ǥÁØ È®ÀÎ ÀÛ¾÷ then echo "»ç¿ë¹ý: `basename $0` filename" exit 1 fi tr [a-z] [A-Z] <$1 exit 0 |
예 3-57. lowercase: ÇöÀç µð·ºÅ丮ÀÇ ¸ðµç ÆÄÀÏ À̸§À» ¼Ò¹®ÀÚ·Î ¹Ù²Þ.
#! /bin/bash # # ÇöÀç µð·ºÅ丮ÀÇ ¸ðµç ÆÄÀÏ À̸§À» ´Ù ¼Ò¹®ÀÚ·Î ¹Ù²Þ # # ¿ø·¡ john duboisÀÇ ½ºÅ©¸³Æ®¸¦ Chet Ramey°¡ bash¿ëÀ¸·Î ¼öÁ¤ÇÑ °Í¿¡¼ # ¿µ°¨À» ¾ò¾î ÀÌ HOWTOÀÇ ÀúÀÚÀÎ Mendel Cooper°¡ »ó´çÈ÷ °£´ÜÇÏ°Ô ¼öÁ¤ÇßÀ½. for filename in * # ÇöÀç µð·ºÅ丮ÀÇ ¸ðµç ÆÄÀÏ do fname=`basename $filename` n=`echo $fname | tr A-Z a-z` # À̸§À» ¼Ò¹®ÀÚ·Î ¹Ù²Ù°í if [ $fname != $n ] # ¿ø·¡ ¼Ò¹®ÀÚ°¡ ¾Æ´Ñ ÆÄÀϸ¸ ¼Ò¹®ÀÚ·Î ¹Ù²Þ then mv $fname $n fi done exit 0 |
ÀÔ·Â ÁÙµéÀ» ÁÖ¾îÁø ³ÐÀÌ·Î Àß¶óÁÖ´Â ÇÊÅÍ.
°£´ÜÇÑ ÆÄÀÏ Çü½ÄÈ ¸í·É¾î·Î½á ÆÄÀÌÇÁ Áß°£¿¡ ÇÊÅÍ·Î ¾²¿© ±ä ÁÙÀ» ´ÙÀ½ ÄÀ¸·Î ³Ñ±â±â(wrap)À§ÇØ »ç¿ëµË´Ï´Ù.
Ä÷³ Çü½ÄÈ ¸í·É¾î. ¸ñ·Ï ÇüÅÂÀÇ ÅØ½ºÆ® °á°ú¹°ÀÇ Àû´çÇÑ °÷¿¡ ÅÇÀ» ³Ö¾î¼ "±ú²ýÇÑ Ãâ·Â"À» ¾ò°Ô ÇØ ÁÖ´Â ÇÊÅÍÀÔ´Ï´Ù.
예 3-58. columnÀ» ½á¼ µð·ºÅ丮 ¸ñ·ÏÀ» Çü½ÄÈÇØ¼ º¸¿©ÁÖ±â
#!/bin/bash # "column" ¸Ç ÆäÀÌÁö¿¡ ÀÖ´Â ¿¹Á¦¸¦ ¾à°£ ¼öÁ¤Çß½À´Ï´Ù. (printf "PERMISSIONS LINKS OWNER GROUP SIZE MONTH DAY HH:MM PROG-NAME\n" \ ; ls -l | sed 1d) | column -t # "sed 1d"´Â "total N" À̶ó°í ³ª¿À´Â ù ¹øÂ° ÁÙÀ» Áö¿öÁÝ´Ï´Ù. # ¿©±â¼, "N" Àº "ls -l"À̶ó°í ÇßÀ» ¶§ÀÇ Àüü ÆÄÀÏ ¼ö¸¦ ³ªÅ¸³À´Ï´Ù. # "column"ÀÇ -t ¿É¼ÇÀº Ç¥ ÇüÅ·Π¿¹»Ú°Ô Âï±â(pretty-print)ÀÔ´Ï´Ù. exit 0 |
ÁÙ ¹øÈ£ ¸Å±â±â ÇÊÅÍ. ln filenameÀ̶ó°í Çϸé filenameÀ» ºó ÄÀ» Á¦¿ÜÇÑ °¢ ÁÙ¿¡ ¿¬¼ÓÀûÀÎ ¹øÈ£¸¦ ºÙ¿©¼ Ç¥ÁØ Ãâ·ÂÀ¸·Î º¸¿©ÁÝ´Ï´Ù. filenameÀ» ¾È ÀûÀ¸¸é Ç¥ÁØ ÀԷ¿¡ ´ëÇØ¼ µ¿ÀÛÇÕ´Ï´Ù.
예 3-59. nl: ÀÚ±â Àڽſ¡°Ô ¹øÈ£¸¦ ºÙÀÌ´Â ½ºÅ©¸³Æ®.
#!/bin/bash # ÀÌ ½ºÅ©¸³Æ® ÆÄÀÏ¿¡ ÁÙ¹øÈ£¸¦ ºÙ¿©¼ Ç¥ÁØÃâ·ÂÀ¸·Î µÎ ¹ø Ãâ·ÂÇØ ÁÝ´Ï´Ù. # 'nl' Àº ºó ÁÙÀ» ¼¼Áö ¾Ê±â ¶§¹®¿¡ Áö±Ý ÀÌ ÁÙÀ» 3¹øÂ° ÁÙ·Î º¾´Ï´Ù. # 'cat -n' Àº À ÁÙÀ» 5¹øÂ° ÁÙ·Î º¾´Ï´Ù. nl `basename $0` echo; echo # ÀÚ, ÀÌÁ¦ 'cat -n'À¸·Î ÇØº¸ÁÒ. cat -n `basename $0` # ´Ù¸¥Á¡Àº 'cat -n'Àº ºó ÁÙ¿¡µµ ¼ýÀÚ¸¦ ºÙÀδٴ °ÍÀÔ´Ï´Ù. exit 0 |
Ãâ·Â Çü½ÄÈ ÇÊÅÍ. ÆÄÀÏÀ̳ª Ç¥ÁØ Ãâ·ÂÀ» ÇÁ¸°ÅÍ·Î Ãâ·ÂÇϱ⿡ ¾Ë¸ÂÀº ÇüÅ·ΠÆäÀÌÁö¸¦ ¸Å°Ü ÁÝ´Ï´Ù. Ưº°È÷ À¯¿ëÇÑ ¿É¼ÇÀ¸·Î´Â -d°¡ Àִµ¥ ÇÑ ÁÙ ¸¶´Ù °Á¦·Î ºó ÄÀ» ³Ö¾îÁÝ´Ï´Ù.
lp¿Í lpr´Â ÆÄÀÏÀ» ÇÁ¸°Æ® Å¥·Î º¸³»¼ ÇÁ¸°ÅÍ·Î Ãâ·ÂÇϱâ À§ÇØ ¾²ÀÌ´Â ¸í·É¾îÀÔ´Ï´Ù. [1] ÀÌ ¸í·É¾îµéÀÇ À̸§Àº ¿¾³¯ ¶óÀÎ ÇÁ¸°Å͸¦ ¾²´ø ½ÃÀý¿¡¼ À¯·¡ µÆ½À´Ï´Ù.
bash$ cat file1.txt | lp
Çü½ÄÈµÈ Ãâ·ÂÀ» ¾ò±â À§ÇØ pr¿¡¼ lp·Î ÆÄÀÌÇÁ¸¦ ½á¼ ÀÚÁÖ ¾²ÀÔ´Ï´Ù.
bash$ pr -options file1.txt | lp
groff³ª °í½ºÆ®½ºÅ©¸³Æ®°°Àº Çü½ÄÈ ÆÐŰÁöµéÀº ÀڽŵéÀÇ Ãâ·ÂÀ» lp·Î Á÷Á¢ Àü´ÞÇØ¼ ¾²À̱⵵ ÇÕ´Ï´Ù.
bash$ groff -Tascii file.tr | lp
bash$ gs -options | lp file.ps
°ü·ÃµÈ ¸í·É¾î·Î´Â ÇÁ¸°Æ® Å¥¸¦ º¸±â À§ÇÑ lpq³ª ÇÁ¸°Æ® Å¥¿¡¼ ƯÁ¤ ÀÛ¾÷À» Áö¿ì±â À§ÇÑ lprm°¡ ÀÖ½À´Ï´Ù.
°£´ÜÇÏ°Ô date¶ó°í¸¸ Ä¡¸é ÇöÀç ³¯Â¥¿Í ½Ã°£À» º¸¿©ÁÝ´Ï´Ù. ÀÌ ¸í·É¾î¿¡¼ ÁøÂ¥ Àç¹Õ´Â ºÎºÐÀº Ãâ·Â ÇüÅÂ¿Í ÆÄ½Ì ¿É¼ÇÀÔ´Ï´Ù.
예 3-61. date ¾²±â
#!/bin/bash # 'date' ¸í·É¾î ¾²±â # Æ÷¸ÅÆÃÀ» ÇÏ·Á¸é ¾Õ¿¡ '+'¸¦ ºÙ¿©Áà¾ß ÇÕ´Ï´Ù. echo "¿ÃÇØ°¡ ½ÃÀÛÇÑ µÚ·Î Áö±Ý±îÁö ³¯ ¼ö´Â `date +%j`ÀÔ´Ï´Ù." # %j ´Â ³âÁß ¸î ° ³¯Àΰ¡¸¦ ¾Ë·ÁÁÝ´Ï´Ù. echo "01/01/1970 ÀÌÈÄ·Î Áö³ ÃÊ´Â `date +%s`ÀÔ´Ï´Ù." # %s ´Â "UNIX ¿¡Æø(epoch)"ÀÌ ½ÃÀÛÇÑ µÚ·Î ¸î Ãʰ¡ Áö³µ´ÂÁö¸¦ ¾Ë·ÁÁÝ´Ï´Ù¸¸, # ÀÌ°É µµ´ëü ¾îµð´Ù ½á ¸ÔÁÒ? prefix=temp suffix=`eval date +%s` filename=$prefix.$suffix echo $filename # "À¯ÀÏÇÑ" Àӽà ÆÄÀÏ À̸§À¸·Î $$¸¦ ¾²´Â °Í º¸´Ù ´õ ÈǸ¢ÇÕ´Ï´Ù. # ´õ ¸¹Àº Æ÷¸Ë ¿É¼ÇÀ» º¸·Á¸é 'date' ¸Ç ÆäÀÌÁö¸¦ Àо¼¼¿ä. exit 0 |
¸í·É¾îÀÇ ½ÇÇà¿¡ ´ëÇÑ ¾ÆÁÖ ÀÚ¼¼ÇÑ ½Ã°£ °ü·Ã Åë°èµéÀ» º¸¿©ÁÝ´Ï´Ù.
time ls -l / ´Â ÀÌ·± °ÍµéÀ» º¸¿©ÁÝ´Ï´Ù:
0.00user 0.01system 0:00.05elapsed 16%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (149major+27minor)pagefaults 0swaps |
¹Ù·Î Àü ¼½¼Ç¿¡¼ ¼Ò°³ÇØ µå·È´ø ¾ÆÁÖ °£´ÜÇÑ ¸í·É¾îÀÎ timesµµ °°ÀÌ º¸¼¼¿ä.
Á¤±Ô Ç¥Çö½ÄÀ» ¾²´Â ´Ù¸ñÀû ÆÄÀÏ °Ë»ö µµ±¸. ¿ø·¡ ¿¹ÀüÀÇ ¶óÀÎ ¿¡µðÅÍÀÎ edÀÇ ¸í·É¾î/ÇÊÅÍ¿´´ø g/re/p ¿¡¼ µû¿Â °ÍÀ¸·Î °¢°¢Àº global - reqular expression - print ¶õ ¶æÀÔ´Ï´Ù.
grep pattern [file...]
file¿¡¼ patternÀÌ ÀÖ´ÂÁö ã½À´Ï´Ù.ls -l | grep '.txt'´Â ls -l *.txt¿Í °°Àº °á°ú¸¦ º¸¿©ÁÝ´Ï´Ù.
-i ¿É¼ÇÀº ´ë¼Ò¹®ÀÚ ±¸ºÐ ¾øÀÌ Ã£µµ·Ï ÇØÁÝ´Ï´Ù.
예 3-100 Àº grepÀ¸·Î ½Ã½ºÅÛ ·Î±× ÆÄÀÏ¿¡¼ ƯÁ¤ Ű¿öµå¸¦ ã´Â ¿¹Á¦¸¦ º¸¿©ÁÝ´Ï´Ù.
예 3-62. ½ºÅ©¸³Æ®¿¡¼ "grep"À» ¿¡¹Ä·¹À̼ÇÇϱâ
#!/bin/bash # 'grep'À» ¾ÆÁÖ Á¶ÀâÇÏ°Ô ´Ù½Ã ±¸Çö if [ -z $1 ] # ÀÎÀÚ¸¦ È®ÀÎ then echo "»ç¿ë¹ý: `basename $0` pattern" exit 1 fi echo for file in * # $PWDÀÇ ¸ðµç ÆÄÀϵéÀ»... do output=$(sed -n /"$1"/p $file) # ¸í·É¾î ¹Ù²Ù±â. if [ ! -z "$output" ] # $file º¯¼ö¸¦ Àοë(quote) ¾È ÇÏ¸é ¿©·¯ÁÙÂ¥¸® Ãâ·Â¿¡¼´Â ¿¡·¯°¡ ³ª¿É´Ï´Ù. then echo -n "$file: " echo $output fi echo done echo exit 0 # µ¶ÀÚ¸¦ À§ÇÑ ¿¬½À¹®Á¦: # ------------------- # 1) ÁÖ¾îÁø ÆÄÀÏÁß ÀÏÄ¡ÇÏ´Â °ÍÀÌ Çϳª ÀÌ»óÀ̶ó¸é Ãâ·Â¿¡ ´º¶óÀÎÀ» Ãß°¡ÇØ º¸¼¼¿ä. # 2) ¿©·¯ Ư¡µéÀ» Ãß°¡ÇØ º¸¼¼¿ä. |
참고: egrepÀº grep -E¶û °°½À´Ï´Ù. Á» ´õ À¯¿¬ÇÑ °Ë»ö ´É·ÂÀ» °®´Â È®Àå Á¤±Ô Ç¥Çö½ÄÀ» Áö¿øÇÕ´Ï´Ù.
참고: fgrepÀº grep -F¿Í °°½À´Ï´Ù. ¹®ÀÚ ±×´ë·ÎÀÇ °Ë»ö(Á¤±Ô Ç¥Çö½Ä ¾È ¾¸)¸¸ Çϱ⠶§¹®¿¡, ¼Óµµ°¡ ¾à°£ ºü¸¨´Ï´Ù.
참고: ¾ÐÃàµÇ¾î ÀÖ´Â ÆÄÀÏ¿¡¼ °Ë»öÀ» ÇÏ·Á¸é zgrep¸¦ ¾²¼¼¿ä. ¾ÐÃà ¾È µÇ¾î ÀÖ´Â ÆÄÀÏ¿¡¼µµ µ¿ÀÛÇÏÁö¸¸ ±×³É grepº¸´Ù´Â ¾à°£ ´À¸³´Ï´Ù. ¾ÐÃà ÆÄÀϰú ºñ¾ÐÃà ÆÄÀÏÀÌ ¼¯¿© ÀÖÀ» ¶§ »ç¿ëÇÏ¸é ¾ÆÁÖ Æí¸®ÇÕ´Ï´Ù.
lookÀº grep°ú ºñ½ÁÇÏ°Ô µ¿ÀÛÇÏÁö¸¸ Á¤·ÄµÈ ´Ü¾î ¸ñ·ÏÀÎ "»çÀü"¿¡ µé¾îÀÖ´Â ´Ü¾î¸¸À» ã½À´Ï´Ù. Ưº°È÷ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é /usr/dict/words¿¡ ÀÖ´Â ´Ü¾î¸¸À» ã´Âµ¥ ´Ù¸¥ »çÀüÀ» ÁöÁ¤Çؼ ãÀ» ¼öµµ ÀÖ½À´Ï´Ù.
예 3-63. ¸ñ·Ï¿¡ ÀÖ´Â ´Ü¾îµéÀÇ À¯È¿¼º È®ÀÎÇϱâ
#!/bin/bash # lookup: # µ¥ÀÌŸ ÆÄÀÏ¿¡ µé¾î ÀÖ´Â °¢ ³¹¸»µéÀ» »çÀü¿¡¼ ã¾Æ º¾´Ï´Ù. file=words.data # È®ÀÎÇØ º¼ ³¹¸»µéÀÌ µé¾î ÀÖ´Â µ¥ÀÌŸ ÆÄÀÏ echo while [ "$word" != end ] # µ¥ÀÌŸ ÆÄÀÏÀÇ ¸¶Áö¸· ³¹¸» do read word # while ¹® ¸¶Áö¸·¿¡ ÀçÁöÇâÀ» °É¾î¼ µ¥ÀÌŸ ÆÄÀÏ¿¡¼ Àеµ·Ï ÇÔ look $word > /dev/null # »çÀü ÆÄÀÏÀÇ Á٠ǥ½Ã ¾È Çϱâ lookup=$? # 'look'ÀÇ Á¾·á°ª if [ "$lookup" -eq 0 ] then echo "\"$word\" ´Â À¯È¿ÇÕ´Ï´Ù." else echo "\"$word\" ´Â À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù." fi done <$file # Ç¥ÁØÀÔ·ÂÀ» $file ·Î ÀçÁöÇâ Çϱ⠶§¹®¿¡ $file ¿¡¼ ÀоîµéÀÓ echo exit 0 |
which <¸í·É¾î> ¶ó°í ÇÏ¸é ¸í·É¾îÀÇ Àüü °æ·Î¸íÀ» ¾Ë·ÁÁÝ´Ï´Ù. ½Ã½ºÅÛ¿¡ ƯÁ¤ ¸í·É¾î³ª À¯Æ¿¸®Æ¼°¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö ¾Ë¾Æ ³»·Á°í ÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù.
$bash which pgp
/usr/bin/pgp |
ÄܼÖÀ̳ª ¿¢½ºÅÒÀÇ ¸í·É¾î ÁÙ¿¡¼ »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ¸ðµç ۸¦ ÆÄÀÏ¿¡ ÀúÀåÇÕ´Ï´Ù. Áï, ¼¼¼Ç¿¡ ´ëÇÑ ±â·ÏÀ» ¸¸µé¾î ÁÝ´Ï´Ù.
À¯´Ð½ºÀÇ ±âº» ¾ÆÄ«À̺ê(archive) À¯Æ¿¸®Æ¼. tar¶õ À̸§Àº ¿ø·¡ Tape ARchivingÀ̶õ ÇÁ·Î±×·¥¿¡¼ ¿Ô´Âµ¥, ÀÌ ÇÁ·Î±×·¥Àº Å×ÀÔ µå¶óÀ̺êºÎÅÍ ÀϹÝÀûÀÎ º¸Åë ÆÄÀÏ, ½ÉÁö¾î´Â Ç¥ÁØ Ãâ·Â±îÁö Æ÷ÇÔÇÏ´Â ¸ðµç Á¾·ùÀÇ µð¹ÙÀ̽º¿¡ ´ëÇØ¼ ¸ðµç Á¾·ùÀÇ ¾ÆÄ«À̺긦 ´Ù·ê ¼ö ÀÖµµ·Ï ¸¸µé¾îÁ³½À´Ï´Ù. GNU tar ´Â ¿À·¡ÀüºÎÅÍ gzipÀ» ´Ù·ê ¼ö ÀÖµµ·Ï ÆÐÄ¡µÇ¾î ÀÖ¾ú´Âµ¥, ´ÙÀ½°ú °°Àº ¸í·É¾î´Â ÇÏÀ§ µð·ºÅ丮¸¦ Æ÷ÇÔÇÑ ¸ðµç ÆÄÀÏÀ» ¹¾î¼ ¾ÐÃàÇ϶ó´Â ¶æÀÔ´Ï´Ù("µµÆ® ÆÄÀÏÀº Á¦¿ÜµË´Ï´Ù."). tar czvf archive-name.tar.gz *
Ç¥ÁØ GNU/UNIX ¾ÐÃà À¯Æ¿¸®Æ¼·Î½á ¼º´ÉÀÌ ¶³¾îÁö°í ƯÇã¿¡ °É·Á ÀÖ´Â compress¸¦ ´ë½ÅÇÕ´Ï´Ù. ¾ÐÃà Ç®±â ¸í·É¾î´Â gunzip·Î, gzip -d¿Í °°½À´Ï´Ù.
ÇÊÅÍ ÇÁ·Î±×·¥ÀÎ zcat´Â gzipÀ¸·Î ¹ÀÎ ÆÄÀÏÀÇ ¾ÐÃàÀ» Ç®¾î Ç¥ÁØ Ãâ·ÂÀ¸·Î ³»º¸³»±â ¶§¹®¿¡ ÆÄÀÌÇÁÀÇ ÀÔ·ÂÀ̳ª ÀçÁöÇâ¿¡¼ ¾²ÀÏ ¼ö ÀÖ½À´Ï´Ù. Áï, ¾ÐÃà ÆÄÀÏ¿¡ ´ëÇØ µ¿ÀÛÇÏ´Â cat¶ó°í º¸¸é µË´Ï´Ù(compress °¡ ¹¾î ³õÀº ÆÄÀϵµ Æ÷ÇÔÇÕ´Ï´Ù). 예 3-14¸¦ Âü°íÇϼ¼¿ä.
´Ù¸¥ ¾ÐÃà À¯Æ¿¸®Æ¼·Î º¸Åë Å©±â°¡ Å« ÆÄÀÏ¿¡ ´ëÇØ¼ gzipº¸´Ù ¼º´ÉÀÌ ´õ ÁÁ½À´Ï´Ù. bzip2¿¡ ´ëÇÑ ¾ÐÃà Ç®±â ¸í·É¾î´Â bunzip2ÀÔ´Ï´Ù.
¶Ç ´Ù¸¥ ¾ÐÃà À¯Æ¿¸®Æ¼·Î½á ¿ÀÁ÷ Á¤·ÄµÈ ¾Æ½ºÅ° ´Ü¾î ¸®½ºÆ®¿¡ ´ëÇØ¼¸¸ µ¿ÀÛÇÏ´Â ÇÊÅÍÀÔ´Ï´Ù. »ç¿ë¹ýÀº º¸Åë ÇÊÅ͸¦ ¾²µíÀÌ ¾²¸é µË´Ï´Ù. sq < input-file > output-file. ÀÌ À¯Æ¿¸®Æ¼´Â ¼Óµµ´Â ºü¸£Áö¸¸ gzip¸¸Å È¿À²ÀûÀÌÁö´Â ¾Ê½À´Ï´Ù. ÇØ´çÇÏ´Â ¾ÐÃà Ç®±â ÇÊÅÍ´Â unsqÀÌ°í »ç¿ë¹ýÀº sq¿Í °°½À´Ï´Ù.
참고: sqÀÇ Ãâ·ÂÀ» gzip¿¡ ÆÄÀÌÇÁ·Î °É¾î¼ ´õ ¾ÐÃà½Ãų¼öµµ ÀÖ½À´Ï´Ù.
½© ¾ÆÄ«À̺ê(shell archiving) À¯Æ¿¸®Æ¼. ½© ¾ÆÄ«À̺ê´Â ½ÇÁ¦·Î´Â #!/bin/sh Çì´õ¿Í, ¾ÆÄ«À̺긦 Ç®±â À§ÇÑ ¸í·É¾îµéÀ» °®°í ÀÖ´Â ½© ½ºÅ©¸³Æ®·Î½á ¾ÐÃàµÇÁö ¾ÊÀº ¿©·¯ ÆÄÀϵéÀ» Âß ºÙ¿©¼ ¸¸µé¾îÁø ÆÄÀÏÀÔ´Ï´Ù. Shar ¾ÆÄ«À̺ê´Â ¾ÆÁ÷µµ ÀÎÅÍ³Ý ´º½º ±×·ì¿¡¼ º¼ ¼ö Àִµ¥ ´Ù¸¥ ÂÊ¿¡¼´Â tar/gzip¶§¹®¿¡ °ÅÀÇ ¾È ¾¹´Ï´Ù. unshar ¸í·É¾î°¡ shar ¾ÆÄ«À̺긦 Ç®¾î ÁÝ´Ï´Ù.
ÆÄÀÏ Á¾·ù¸¦ ±¸ºÐÁö¾îÁÖ´Â À¯Æ¿¸®Æ¼. file file-nameÀ̶ó°í Ä¡¸é ascii text³ª data°°Àº file-nameÀÇ Á¾·ù¸¦ ¾Ë·ÁÁÝ´Ï´Ù. ÆÄÀÏ Á¾·ùÀÇ ´ëÇÑ Á¤º¸´Â Linux/UNIX ¹èÆ÷ÆÇ¿¡ µû¶ó /usr/share/magicÀ̳ª /etc/magic, /usr/lib/magicµî¿¡¼ ¸ÅÁ÷ ³Ñ¹ö¸¦ Âü°íÇÕ´Ï´Ù.
예 3-64. C ÇÁ·Î±×·¥ ÆÄÀÏ¿¡¼ ÁÖ¼®À» Á¦°ÅÇϱâ
#!/bin/bash # C ¼Ò½º¿¡¼ ÁÖ¼®(/* ÁÖ¼® */)À» Á¦°ÅÇØ ÁÝ´Ï´Ù. NOARGS=1 WRONG_FILE_TYPE=2 if [ $# = 0 ] then echo "»ç¿ë¹ý: `basename $0` C-program-file" >&2 # Ç¥ÁØ¿¡·¯·Î ¿¡·¯ ¸Þ¼¼Áö º¸³»±â exit $NOARGS fi # ÆÄÀÏ Å¸ÀÔÀ» È®ÀÎ type=`eval file $1 | awk '{ print $2, $3, $4, $5 }'` # "file $1" ´Â ÆÄÀÏ Å¸ÀÔÀ» ¿¡ÄÚÇØÁÖ°í... # awk °¡ ù ¹øÂ° Çʵå(ÆÄÀÏ À̸§)¸¦ Àß¶ó³»°í... # ±× °á°ú°¡ "type" º¯¼ö°ªÀÌ µË´Ï´Ù. correct_type="ASCII C program text" if [ "$type" != "$correct_type" ] then echo echo "ÀÌ ½ºÅ©¸³Æ®´Â ¿ÀÁ÷ C ¼Ò½º ÆÄÀÏ¿¡ ´ëÇØ¼¸¸ µ¿ÀÛÇÕ´Ï´Ù." echo exit $WRONG_FILE_TYPE fi # ¾à°£Àº ½Åºñ·Î¿ö º¸ÀÌ´Â sed ½ºÅ©¸³Æ®: #-------- sed ' /^\/\*/d /.*\/\*/d ' $1 #-------- # sed ¿¡ ´ëÇØ¼ ¸î ½Ã°£¸¸ ÅõÀÚ¸¦ Çϸé ÀÌÇØÇϱ⠽±½À´Ï´Ù. # ÁÖ¼®ÀÌ ÄÚµå¿Í °°Àº ÁÙ¿¡ ÀÖ´Â °æ¿ì¸¦ ó¸®Çϱâ À§Çؼ´Â Ãß°¡ÀûÀÎ # sed ½ºÅ©¸³Æ®°¡ ÇÊ¿äÇÕ´Ï´Ù. # ¾à°£Àº ¾î·Á¿ï ¼öµµ ÀÖÁö¸¸ µ¶ÀÚµéÀ» À§ÇØ ¿¬½À¹®Á¦·Î ³²°Ü ³õ½À´Ï´Ù. exit 0 |
¹ÙÀ̳ʸ® ÆÄÀÏÀ» ¾Æ½ºÅ° ¹®ÀÚ·Î ÀÎÄÚµåÇØ¼ À̸ÞÀÏ·Î º¸³»°Å³ª ´º½º ±×·ì¿¡ Æ÷½ºÆÃÇÒ ¼ö ÀÖµµ·Ï ÇØ ÁÝ´Ï´Ù.
uuencode µÈ ÆÄÀÏÀ» ´Ù½Ã ¿ø·¡ ¹ÙÀ̳ʸ® ÆÄÀÏ·Î µðÄÚµå ÇØÁÝ´Ï´Ù.
예 3-65. ÀÎÄÚµåµÈ ÆÄÀÏÀ» µðÄÚµåÇϱâ
#!/bin/bash lines=35 # Çì´õ¿Í Å×ÀÏ¿ëÀ¸·Î ¿©À¯ÀÖ°Ô 35ÁÙÀ» Àâ½À´Ï´Ù. for File in * # ÇöÀç ÀÛ¾÷ µð·ºÅ丮¿¡ ÀÖ´Â ¸ðµç ÆÄÀÏÀ» È®ÀÎ... do search1=`head -$lines $File | grep begin | wc -w` search2=`tail -$lines $File | grep end | wc -w` # uuencode µÈ ÆÄÀÏÀº ¾Õ ºÎºÐ¿¡ "begin"À̶õ ³¹¸»ÀÌ µé¾î ÀÖ°í, ³¡ ºÎºÐ¿¡ "end"¶õ ³¹¸»ÀÌ µé¾î ÀÖ½À´Ï´Ù. if [ $search1 -gt 0 ] then if [ $search2 -gt 0 ] then echo "uudecode Áß - $File -" uudecode $File fi fi done exit 0 |
ÅØ½ºÆ® ÆÄÀÏÀ̳ª ÅØ½ºÆ® ½ºÆ®¸²À» Ç¥ÁØ Ãâ·ÂÀ¸·Î ÇÑ ¹ø¿¡ ÇÑ Âʾ¿ Ç¥½ÃÇØ ÁÝ´Ï´Ù.
ÀÌ À¯Æ¿¸®Æ¼µéÀº ÁÖ¾îÁø °£°ÝÀ¸·Î Á¤¼ö°ªÀ» ¼ø¼´ë·Î ¸¸µé¾î ³À´Ï´Ù. for ¹®¿¡¼ ¾ÆÁÖ À¯¿ëÇÏ°Ô ¾²ÀÏ ¼ö ÀÖ½À´Ï´Ù.
clear´Â ÄܼÖÀÇ ÅØ½ºÆ® ȸéÀ̳ª ¿¢½ºÅÒÀ» ±ú²ýÀÌ Áö¿ì´Â ¸í·É¾îÀÔ´Ï´Ù. ¸í·É¾î ÁÙ ÇÁ·ÒÇÁÆ®¿Í Ä¿¼´Â ȸé Á¦ÀÏ À§ÀÇ ¿ÞÂÊ¿¡ ³ªÅ¸³¯ °ÍÀÔ´Ï´Ù. ±×³É ¸í·É¾î ÁÙ¿¡¼ ÀÌ ¸í·É¾î¸¦ ½ÇÇàÇÒ ¼öµµ ÀÖ°í ½ºÅ©¸³Æ® ¾È¿¡¼ ½ÇÇà ½Ãų ¼öµµ ÀÖ½À´Ï´Ù. 예 3-36À» Âü°íÇϼ¼¿ä.
ÆÄÀÏ À̸§ÀÌ ¿Ã¹Ù¸¥Áö ¾Æ´ÑÁö¸¦ È®ÀÎÇØ ÁÝ´Ï´Ù. ÆÄÀÏ À̸§ÀÌ ÃÖ´ë Çã¿ë °¡´É ±æÀÌ(255 ±ÛÀÚ)¸¦ ³Ñ´Â´Ù°Å³ª ÁÖ¾îÁø °æ·Î¿¡¼ Çϳª ÀÌ»óÀÇ µð·ºÅ丮¸¦ ãÀ» ¼ö ¾ø´Ù°Å³ª ÇÒ °æ¿ì¿¡ ¿¡·¯ ¸Þ¼¼Áö¸¦ ¹ß»ý½Ãŵ´Ï´Ù. ºÒÇàÇϰԵµ pathchk´Â ¾Ë¾Æ º¼ ¼ö ÀÖ´Â ¿¡·¯ Äڵ带 ¸®ÅϽÃŰÁö ¾Ê±â ¶§¹®¿¡ ½ºÅ©¸³Æ® »ó¿¡¼´Â ÀüÇô ¾µ¸ð°¡ ¾ø½À´Ï´Ù.
[1] | ÇÁ¸°Æ® Å¥¶õ ÇÁ¸°Æ®¸¦ À§ÇØ ¼ø¼´ë·Î ´ë±âÇϰí ÀÖ´Â ÀÛ¾÷ ±×·ìÀ» ¸»ÇÕ´Ï´Ù. |