°í±Þ Bash ½ºÅ©¸³Æà °¡À̵å: Bash¸¦ ÀÌ¿ëÇÑ ½© ½ºÅ©¸³Æà ¿ÏÀü °¡À̵å | ||
---|---|---|
ÀÌÀü | 12Àå. ¿ÜºÎ ÇÊÅÍ, ÇÁ·Î±×·¥, ¸í·É¾î | ´ÙÀ½ |
À¯´Ð½ºÀÇ Ç¥ÁØ ¾ÆÄ«À̺ê(archive) À¯Æ¿¸®Æ¼. ¿ø·¡´Â Tape ARchiving ÇÁ·Î±×·¥¿¡¼ ¿Ô´Âµ¥, ÀÌ ÇÁ·Î±×·¥Àº Å×ÀÔ µå¶óÀ̺êºÎÅÍ º¸Åë ÆÄÀÏ, ½ÉÁö¾î´Â Ç¥ÁØÃâ·Â(¿¹ 4-3 Âü°í)±îÁö Æ÷ÇÔÇÏ´Â ¸ðµç Á¾·ùÀÇ µð¹ÙÀ̽º¿¡ ´ëÇؼ ¸ðµç Á¾·ùÀÇ ¾ÆÄ«À̺긦 ´Ù·ê ¼ö ÀÖµµ·Ï ¸¸µé¾î Á³½À´Ï´Ù. GNU tar´Â ¿À·¡ÀüºÎÅÍ gzip ¾ÐÃàÀ» ´Ù·ê ¼ö ÀÖ´Â ¿É¼ÇÀÌ ÆÐÄ¡µÇ¾î ÀÖ¾ú´Âµ¥, tar czvf archive-name.tar.gz * ¶ó°í Çϸé ÇÏÀ§ µð·ºÅ丮¸¦ Æ÷ÇÔÇÑ ¸ðµç ÆÄÀÏÀ» ¹¾î¼ ¾ÐÃàÇ϶ó´Â ¶æÀÔ´Ï´Ù(µµÆ®ÆÄÀÏÀº Á¦¿Ü).
À¯¿ëÇÑ tar ¿É¼Ç ¸î °¡Áö:
-c ¸¸µé±â(»õ ¾ÆÄ«À̺ê)
--delete Áö¿ì±â(¾ÆÄ«À̺꿡 µé¾î ÀÖ´Â ÆÄÀÏ)
-r µ¡ºÙÀ̱â(ÆÄÀÏÀ» ¾ÆÄ«À̺ê·Î)
-t ¸ñ·Ï(¾ÆÄ«ÀÌºê ³»¿ë)
-u ¾ÆÄ«ÀÌºê ¾÷µ¥ÀÌÆ®
-x »Ì¾Æ³»±â(¾ÆÄ«À̺꿡 µé¾î ÀÖ´Â ÆÄÀÏ)
-z ¾ÆÄ«À̺긦 gzip À¸·Î ¾ÐÃà
°æ°í |
gzipÀ¸·Î ¹ÀÎä ¼Õ»óµÈ tar ¾ÆÄ«À̺ê´Â º¹±¸ÇϱⰡ ¸Å¿ì Èûµé±â ¶§¹®¿¡ Áß¿äÇÑ ÆÄÀÏÀ» ¾ÆÄ«À̺ê·Î ¸¸µé¶§´Â ¿©·¯ ±ºµ¥¿¡ ¹é¾÷À» ÇØ ³õ±â ¹Ù¶ø´Ï´Ù. |
½© ¾ÆÄ«À̺ê À¯Æ¿¸®Æ¼. ½© ¾ÆÄ«À̺ê ÆÄÀÏÀº ½ÇÁ¦·Î´Â #!/bin/sh Çì´õ¿Í ¾ÆÄ«À̺긦 Ç®±â À§ÇÑ ¸í·É¾îµé·Î ÀÌ·ç¾îÁø ½© ½ºÅ©¸³Æ®·Î½á, ¾ÐÃàµÇÁö ¾ÊÀº ÆÄÀϵéÀÌ Âß ºÙ¾î ÀÖ´Â ÆÄÀÏÀÔ´Ï´Ù. shar ¾ÆÄ«À̺ê´Â ¾ÆÁ÷µµ ÀÎÅÍ³Ý ´º½º ±×·ì¿¡¼ º¼ ¼ö Àִµ¥ ¿©±â ¸»°í ´Ù¸¥ °÷¿¡¼´Â tar/gzip ¶§¹®¿¡ °ÅÀÇ ¾È ¾¹´Ï´Ù. shar ¾ÆÄ«À̺ê´Â unshar ¸í·É¾î·Î Ç®¾î ÁÝ´Ï´Ù.
ÁÖ·Î ¹ÙÀ̳ʸ® ¿ÀºêÁ§Æ® ÆÄÀÏ ¶óÀ̺귯¸®¿¡¼ ¾²ÀÌ´Â ¾ÆÄ«À̺긦 À§ÇÑ »ý¼º, Á¶ÀÛ À¯Æ¿¸®Æ¼.
ÀÌ Æ¯ÈµÈ ¾ÆÄ«ÀÌºê º¹»ç ¸í·É¾î(copy input and output)´Â tar/gzip ¶§¹®¿¡ ÀÌÁ¦ °ÅÀÇ ¾È ¾²ÀÌÁö¸¸ µð·ºÅ丮 Æ®¸®¸¦ ¿Å±â·Á´Â °æ¿ìµîÀÇ ¾²ÀÓ»õ°¡ ¾ÆÁ÷ ³²¾Æ ÀÖ½À´Ï´Ù.
¿¹ 12-22. cpio·Î µð·ºÅ丮 Æ®¸® ¿Å±â±â
#!/bin/bash # cpio ·Î µð·ºÅ丮 Æ®¸®¸¦ º¹»çÇϱâ. ARGS=2 E_BADARGS=65 if [ $# -ne "$ARGS" ] then echo "»ç¿ë¹ý: `basename $0` source destination" exit $E_BADARGS fi source=$1 destination=$2 find "$source" -depth | cpio -admvp "$destination" # ¿©±â¼ ¾²ÀÎ cpio ¿É¼ÇÀÌ ¹«½¼ ¶æÀÎÁö ¾Ë·Á¸é ¸Ç ÆäÀÌÁö¸¦ ÀÐ¾î º¸¼¼¿ä. exit 0 |
¿¹ 12-23. rpm ¾ÆÄ«À̺ê Ç®±â
#!/bin/bash # de-rpm.sh: 'rpm' ¾ÆÄ«À̺ê Ç®±â E_NO_ARGS=65 TEMPFILE=$$.cpio # "À¯ÀÏÇÑ" Àӽà ÆÄÀÏ. # $$ ´Â ½ºÅ©¸³Æ®ÀÇ ÇÁ·Î¼¼½º ID. if [ -z "$1" ] then echo "»ç¿ë¹ý: `basename $0` filename" exit $E_NO_ARGS fi rpm2cpio < $1 > $TEMPFILE # rpm ¾ÆÄ«À̺긦 cpio ¾ÆÄ«À̺ê·Î º¯È¯. cpio --make-directories -F $TEMPFILE -i # cpio ¾ÆÄ«À̺ê Ç®±â. rm -f $TEMPFILE # cpio ¾ÆÄ«À̺ê Áö¿ì±â. exit 0 |
Ç¥ÁØ GNU/UNIX ¾ÐÃà À¯Æ¿¸®Æ¼·Î¼, ¼º´ÉÀÌ ¶³¾îÁö°í ƯÇã°¡ °É·Á ÀÖ´Â compress¸¦ ´ë½ÅÇÕ´Ï´Ù. ¾ÐÃà Ç®±â ¸í·É¾î´Â gunzipÀ¸·Î½á, gzip -d¿Í °°½À´Ï´Ù.
zcat ÇÊÅÍ´Â gzipÀ¸·Î ¹ÀÎ ÆÄÀÏÀÇ ¾ÐÃàÀ» Ç®¾î Ç¥ÁØÃâ·ÂÀ¸·Î ³»º¸³»±â ¶§¹®¿¡ ÆÄÀÌÇÁÀÇ ÀÔ·ÂÀ̳ª ÀçÁöÇâ¿¡¼ ¾²ÀÏ ¼ö ÀÖ½À´Ï´Ù. Áï, ½ÇÁ¦·Î´Â ÀÔÃà ÆÄÀÏ¿¡ ´ëÇؼ µ¿ÀÛÇÏ´Â catÀ̶ó°í º¸¸é µË´Ï´Ù(¿¾³¯ compress ·Î ¹ÀÎ ÆÄÀϵµ Æ÷ÇÔ). zcatÀº gzip -dc¿Í °°½À´Ï´Ù.
°æ°í |
¸î¸î »ó¾÷¿ë À¯´Ð½º ½Ã½ºÅÛ¿¡¼´Â zcatÀÌ uncompress -c¿Í µ¿ÀǾî·Î ¾²ÀÌÁö¸¸ gzipÀ¸·Î ¹ÀÎ ÆÄÀÏ¿¡ ´ëÇؼ´Â µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù. |
¿¹ 7-6 Âü°í.
¶Ç ´Ù¸¥ ¾ÐÃà À¯Æ¿¸®Æ¼·Î½á, Ưº°È÷ Å©±â°¡ Å« ÆÄÀÏ¿¡ ´ëÇؼ´Â gzipº¸´Ù ´õ È¿À²ÀûÀÔ´Ï´Ù. bzip2¿¡ ´ëÇÑ ¾ÐÃà Ç®±â ¸í·É¾î´Â bunzip2ÀÔ´Ï´Ù.
»ó¿ë À¯´Ð½º ¹èÆ÷ÆÇ¿¡¼ ãÀ» ¼ö ÀÖ´Â ¿À·¡µÇ°í ƯÇã°¡ °É·ÁÀÖ´Â À¯Æ¿¸®Æ¼ÀÌ°í, ´õ È¿À²ÀûÀÎ gzipÀ¸·Î °ÅÀÇ ´Ù ¹Ù²î¾ú½À´Ï´Ù. gunzipÀÌ compress·Î ¹ÀÎ ÆÄÀϵéÀ» Ç® ¼ö ÀÖÁö¸¸, ¸®´ª½º ¹èÆ÷ÆǵéÀº ȣȯ¼ºÀ» À§Çؼ compress¸¦ ´àÀº ¸í·É¾î¸¦ Æ÷ÇÔ½Ãŵ´Ï´Ù.
ÀÛÀº Á¤º¸: znew ¸í·É¾î´Â compress·Î ¾ÐÃàµÈ ÆÄÀÏÀ» gzipÀ¸·Î ¾ÐÃàµÈ ÆÄÀÏ·Î º¯È¯ÇØ ÁÝ´Ï´Ù.
¶Ç ´Ù¸¥ ¾ÐÃà À¯Æ¿¸®Æ¼·Î½á ¿ÀÁ÷ Á¤·ÄµÈ ¾Æ½ºÅ° ³¹¸» ¸ñ·Ï¿¡ ´ëÇؼ¸¸ µ¿ÀÛÇÏ´Â ÇÊÅÍÀÔ´Ï´Ù. sq < input-file > output-file ó·³ Ç¥ÁØ ÇÊÅ͸¦ ¾²µíÀÌ ¾²¸é µË´Ï´Ù. ¼Óµµ´Â ºü¸£Áö¸¸ gzip¸¸Å È¿°úÀûÀÌÁö´Â ¾Ê½À´Ï´Ù. ÀÌ ¸í·É¾î¿¡ ÇØ´çÇÏ´Â ¾ÐÃà Ç®±â ÇÊÅÍ´Â unsqÀÌ°í »ç¿ë¹ýÀº sq¿Í °°½À´Ï´Ù.
ÀÛÀº Á¤º¸: sqÀÇ Ãâ·ÂÀ» gzip¿¡ ÆÄÀÌÇÁ·Î °É¾î¼ ´õ ¾ÐÃà ½Ãų ¼öµµ ÀÖ½À´Ï´Ù.
µµ½ºÀÇ PKZIP°ú ȣȯµÇ´Â Å©·Î½º Ç÷§Æû ÆÄÀÏ ¾ÆÄ«À̺ù¹× ¾ÐÃà À¯Æ¿¸®Æ¼. ÀÎÅͳݿ¡¼ "Zip"À¸·Î ¹ÀÎ ¾ÆÄ«À̺êµéÀÌ "Ÿ¸£º¼"º¸´Ù ´õ ¸¹ÀÌ ¾²ÀÔ´Ï´Ù.
ÆÄÀÏ Á¾·ù¸¦ ±¸ºÐÁö¾î ÁÖ´Â À¯Æ¿¸®Æ¼. file file-name À̶ó°í Ä¡¸é ascii textÀÌ data°°Àº file-name¿¡ ´ëÇÑ ½ºÆåÀ» ¾Ë·ÁÁÝ´Ï´Ù. ÀÌ ¸í·É¾î´Â Linux/UNIX ¹èÆ÷ÆÇ¿¡ µû¶ó /usr/share/magicÀ̳ª /etc/magic, /usr/lib/magicµî¿¡¼ ¸ÅÁ÷ ³Ñ¹ö¸¦ Âü°íÇؼ ÆÄÀÏ ½ºÆåÀ» ¾Ë·ÁÁÝ´Ï´Ù.
-f ¿É¼ÇÀ» ¾²¸é ÆÄÀÏÀ̸§ÀÇ ¸ñ·ÏÀÌ µé¾î ÀÖ´Â ÁöÁ¤µÈ ÆÄÀÏÀ» ºÐ¼®ÇÏ¸é¼ ¹èÄ¡ ¸ðµå·Î µ¿ÀÛÇÕ´Ï´Ù. -z ¿É¼ÇÀº ´ë»ó ÆÄÀÏÀÌ ¾ÐÃàµÈ ÆÄÀÏÀÏ °æ¿ì °Á¦·Î ¾ÐÃàÀÌ Ç®¸° »óÅÂÀÇ ÆÄÀÏ Å¸ÀÔÀ» ºÐ¼®ÇØ ÁÝ´Ï´Ù.
bash$ file test.tar.gz test.tar.gz: gzip compressed data, deflated, last modified: Sun Sep 16 13:34:51 2001, os: Unix bash file -z test.tar.gz test.tar.gz: GNU tar archive (gzip compressed data, deflated, last modified: Sun Sep 16 13:34:51 2001, os: Unix) |
¿¹ 12-24. C ¼Ò½º¿¡¼ ÁÖ¼®À» Á¦°ÅÇϱâ
#!/bin/bash # strip-comment.sh: C ¼Ò½º¿¡¼ ÁÖ¼®(/* ÁÖ¼® */)À» Á¦°ÅÇØ ÁÝ´Ï´Ù. E_NOARGS=65 E_ARGERROR=66 E_WRONG_FILE_TYPE=67 if [ $# -eq "$E_NOARGS" ] then echo "»ç¿ë¹ý: `basename $0` C-program-file" >&2 # ¿¡·¯ ¸Þ¼¼Áö´Â Ç¥ÁØÃâ·ÂÀ¸·Î. exit $E_ARGERROR 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 $E_WRONG_FILE_TYPE fi # ¾à°£Àº ½Åºñ½º·¯¿ö º¸ÀÌ´Â sed ½ºÅ©¸³Æ®: #-------- sed ' /^\/\*/d /.*\/\*/d ' $1 #-------- # sed ÀÇ ±âº»¿¡ ´ëÇؼ ¸î ½Ã°£¸¸ ÅõÀÚ¸¦ Çϸé ÀÌÇØÇϱ⠽±½À´Ï´Ù. # ÁÖ¼®ÀÌ ÄÚµå¿Í °°Àº ÁÙ¿¡ ÀÖ´Â °æ¿ì¸¦ ó¸®Çϱâ À§Çؼ´Â # Ãß°¡ÀûÀÎ sed ½ºÅ©¸³Æ®°¡ ÇÊ¿äÇÕ´Ï´Ù. # ¾à°£Àº ¾î·Á¿ï ¼öµµ ÀÖÁö¸¸ µ¶ÀÚµéÀ» À§Çؼ ¿¬½À¹®Á¦·Î ³²°Ü ³õ½À´Ï´Ù. # ¶Ç, À§ ÄÚµå´Â ¿ì¸®°¡ ¹Ù¶óÁö ¾Ê´ø °á°ú·Î¼ # "*/" À̳ª "/*" ÀÎ ÁÙµµ Áö¿ö¹ö¸³´Ï´Ù. exit 0 # -------------------------------------------------------------------- # ´ÙÀ½ÀÇ ÄÚµåµéÀº À§¿¡¼ 'exit 0'À̶ó°í Ç߱⠶§¹®¿¡ ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù. # Stephane Chazelas °¡ Á¦¾ÈÇÑ ´Ù¸¥ ¹æ¹ý: usage() { echo "»ç¿ë¹ý: `basename $0` C-program-file" >&2 exit 1 } WEIRD=`echo -n -e '\377'` # ȤÀº WEIRD=$'\377' [[ $# -eq 1 ]] || usage case `file "$1"` in *"C program text"*) sed -e "s%/\*%${WEIRD}%g;s%\*/%${WEIRD}%g" "$1" \ | tr '\377\n' '\n\377' \ | sed -ne 'p;n' \ | tr -d '\n' | tr '\377' '\n';; *) usage;; esac # ÀÌ°Í ¿ª½Ã ´ÙÀ½°ú °°Àº °æ¿ì¿¡´Â ¿Àµ¿ÀÛÀ» ÇÕ´Ï´Ù: # printf("/*"); # ³ª # /* /* ÁÖ¼®¿¡ ÁÖ¼®ÀÌ µé¾î°¨ */ # # Ưº°ÇÑ °æ¿ìµé(¹®ÀÚ¿¿¡ µé¾î ÀÖ´Â ÁÖ¼®, # \"³ª \\" ¸¦ Æ÷ÇÔÇÑ ¹®ÀÚ¿¿¡ µé¾î ÀÖ´Â ÁÖ¼®...)À» ¸ðµÎ ó¸®ÇÒ ¼ö ÀÖ´Â # À¯ÀÏÇÑ ¹æ¹ýÀº C Æļ(¾Æ¸¶µµ lex ³ª yacc?)¸¦ ÀÛ¼ºÇÏ´Â °ÍÀÔ´Ï´Ù. exit 0 |
which command-xxx ¶ó°í Çϸé "command-xxx"ÀÇ Àüü °æ·Î¸íÀ» ¾Ë·Á ÁÝ´Ï´Ù. ½Ã½ºÅÛ¿¡ ƯÁ¤ ¸í·É¾î³ª À¯Æ¿¸®Æ¼°¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö ¾Ë¾Æ³»·Á°í ÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù.
$bash which rm
/usr/bin/rm |
À§ÀÇ which¿Í ºñ½ÁÇÏÁö¸¸ "command-xxx" ¸Ç ÆäÀÌÁöÀÇ Àüü °æ·Î¸íµµ °°ÀÌ ¾Ë·ÁÁÝ´Ï´Ù.
$bash whereis rm
rm: /bin/rm /usr/share/man/man1/rm.1.bz2 |
whatis filexxx Àº whatis µ¥ÀÌŸº£À̽º¿¡¼ "filexxx"¸¦ ã¾ÆÁÝ´Ï´Ù. ½Ã½ºÅÛ ¸í·É¾î¿Í Áß¿äÇÑ ¼³Á¤ ÆÄÀÏÀ» È®ÀÎÇÏ°í ½ÍÀ» ¶§ À¯¿ëÇÕ´Ï´Ù. °£´ÜÇÑ manÀ̶ó°í »ý°¢ÇÏ¸é µË´Ï´Ù.
$bash whatis whatis
whatis (1) - search the whatis database for complete words |
¿¹ 12-25. /usr/X11R6/bin µÑ·¯º¸±â
#!/bin/bash # µµ´ëü /usr/X11R6/bin ¿¡ µé¾îÀÖ´Â ÀÌ»ó¾ß¸©ÇÑ ½ÇÇàÆÄÀϵéÀÇ Á¤Ã¼°¡ ¹»±î¿ä? DIRECTORY="/usr/X11R6/bin" # "/bin", "/usr/bin", "/usr/local/bin" °°Àº µð·ºÅ丮¿¡ ´ëÇؼµµ Çغ¸¼¼¿ä. for file in $DIRECTORY/* do whatis `basename $file` # ½ÇÇàÆÄÀÏ¿¡ ´ëÇÑ Á¤º¸¸¦ ¿¡ÄÚ. done exit 0 # ÀÌ ½ºÅ©¸³Æ®ÀÇ °á°ú¸¦ ÀçÁöÇâ ÇÏ°í ½Í´Ù¸é, # ./what.sh >>whatis.db # ȤÀº Ç¥ÁØÃâ·Â¿¡¼ ÇÑ ¹ø¿¡ ÇÑ Âʾ¿ º¸·Á¸é, # ./what.sh | less |
¿¹ 10-3 Âü°í.
ÀÚ¼¼ÇÑ µð·ºÅ丮 ¸ñ·ÏÀ» º¸¿©ÁÝ´Ï´Ù. ls -l À̶ó°í ÇÏ´Â °Í°ú ºñ½ÁÇÕ´Ï´Ù.
GNU fileutils ¿¡ ¼ÓÇÏ´Â ¸í·É¾îÀÔ´Ï´Ù.
bash$ vdir total 10 -rw-r--r-- 1 bozo bozo 4034 Jul 18 22:04 data1.xrolo -rw-r--r-- 1 bozo bozo 4602 May 25 13:58 data1.xrolo.bak -rw-r--r-- 1 bozo bozo 877 Dec 17 2000 employment.xrolo bash ls -l total 10 -rw-r--r-- 1 bozo bozo 4034 Jul 18 22:04 data1.xrolo -rw-r--r-- 1 bozo bozo 4602 May 25 13:58 data1.xrolo.bak -rw-r--r-- 1 bozo bozo 877 Dec 17 2000 employment.xrolo |
ÆÄÀÏÀ» Áö¿ì±â Àü¿¡ ·£´ý ºñÆ® ÆÐÅÏÀ» ¿©·¯¹ø µ¤¾î ½á¼ º¸¾È»ó ¾ÈÀüÇÏ°Ô Áö¿öÁÝ´Ï´Ù. ¿¹ 12-33 °ú µ¿ÀÏÇÑ °á°ú¸¦ °¡Á®¿ÀÁö¸¸ ´õ ºóÆ´¾ø°í ¸ÚÁø ¹æ¹ýÀÔ´Ï´Ù.
GNU fileutils ¿¡ ¼ÓÇÏ´Â ¸í·É¾îÀÔ´Ï´Ù.
°æ°í |
shred¸¦ ½á¼ ÆÄÀÏÀ» Áö¿î´Ù°í Çصµ ÃÖ÷´Ü º¹±¸ ±â¼ú(advanced forensic technology)À» ÀÌ¿ëÇØ ±× ³»¿ëÀÇ ÀϺγª Àüü¸¦ º¹±¸ÇØ ³»´Â °ÍÀ» ¸·Áö´Â ¸øÇÕ´Ï´Ù. |
locate´Â ÀÚü µ¥ÀÌŸº£À̽º¿¡¼ ÆÄÀÏÀ» ã¾Æ ÁÝ´Ï´Ù. slocate´Â locate(slocate·Î º°ÄªÀÌ ÁöÁ¤ µÇ¾î ÀÖÀ»)ÀÇ º¸¾È °È ¹öÀüÀÔ´Ï´Ù.
$bash locate hickson
/usr/lib/xephem/catalogs/hickson.edb |
strings¸¦ ¾²¸é ¹ÙÀ̳ʸ®³ª µ¥ÀÌŸ ÆÄÀϾȿ¡¼ »ç¶÷ÀÌ ÀÐÀ» ¼ö ÀÖ´Â(Ãâ·Â °¡´ÉÇÑ) ¹®ÀÚ¸¦ ãÀ» ¼ö ÀÖ½À´Ï´Ù. ÇØ´ç ÆÄÀÏ¿¡¼ Ãâ·Â °¡´ÉÇÑ ¹®ÀÚµéÀ» ¼ø¼´ë·Î º¸¿©ÁÝ´Ï´Ù. ÀÌ ¸í·É¾î¸¦ ¾²¸é ÄÚ¾î ´ýÇÁ ÆÄÀÏÀ» °£´ÜÇÏ°Ô Á¡°ËÇØ º¼ ¼ö ÀÖ°í ¾Ë ¼ö ¾ø´Â ±×·¡ÇÈ ÆÄÀÏÀÇ Å¸ÀÔÀ» È®ÀÎÇØ º¼ ¼ö ÀÖ½À´Ï´Ù(strings image-file | more À̶ó°í Ãļ JFIF°°Àº ¹®ÀÚ¸¦ º¸¿©ÁØ´Ù¸é ±× ÆÄÀÏÀº jpeg ÆÄÀÏÀ̶ó°í º¸¸é µË´Ï´Ù). ½ºÅ©¸³Æ®¿¡¼´Â stringsÀÇ Ãâ·ÂÀ» grepÀ̳ª sed·Î ÆĽÌÇؼ ¾µ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¿¹ 10-7°ú ¿¹ 10-8À» Âü°íÇϼ¼¿ä.
ÆÄÀÏ¸í¿¡¼ °æ·Î Á¤º¸¸¦ ¶¼¾î³»°í ¿ÀÁ÷ ÆÄÀÏ À̸§¸¸ º¸¿© ÁÝ´Ï´Ù. basename $0 À̶ó°í ÇÏ¸é ½ºÅ©¸³Æ®´Â ÀڱⰡ ½©¿¡¼ ºÒ¸° ÀÚ±â À̸§À» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ½ºÅ©¸³Æ®¿¡ ÇÊ¿äÇÑ ÀÎÀÚ°¡ ¾øÀÌ ½ÇÇàµÇ´Â °æ¿ì¿¡ "»ç¿ë¹ý" ¸Þ¼¼Áö¸¦ ÂïÀ» ¶§ ¾µ ¼ö ÀÖ½À´Ï´Ù:
echo "»ç¿ë¹ý: `basename $0` arg1 arg2 ... argn" |
ÆÄÀÏ¸í¿¡¼ basenameÀ» ¶¼¾î³»°í ¿ÀÁ÷ °æ·Î Á¤º¸¸¸ º¸¿©ÁÝ´Ï´Ù.
Âü°í: basename°ú dirnameÀº ¾î¶² ¹®ÀÚ¿¿¡ ´ëÇؼµµ µ¿ÀÛÇÕ´Ï´Ù. ÀÌ ¸í·É¾îµé¿¡ ³Ñ°ÜÁÙ ÀÎÀÚ´Â ²À ½ÇÁ¦·Î Á¸ÀçÇÏ´Â ÆÄÀÏÀÌ ¾Æ´Ï¿©µµ µË´Ï´Ù(¿¹ A-6 Âü°í).
¿¹ 12-26. basename°ú dirname
#!/bin/bash a=/home/bozo/daily-journal.txt echo "/home/bozo/daily-journal.txt ÀÇ basename = `basename $a`" echo "/home/bozo/daily-journal.txt ÀÇ dirname = `dirname $a`" echo echo "³» Ȩ µð·ºÅ丮´Â `basename ~/`." # ±×³É ~ µµ µË´Ï´Ù. echo "³» Ȩ µð·ºÅ丮ÀÇ È¨Àº `dirname ~/`." # ±×³É ~ µµ µË´Ï´Ù. exit 0 |
ÇÑ ÆÄÀÏÀ» ÀÛÀº Á¶°¢À¸·Î ³ª´²ÁÖ´Â À¯Æ¿¸®Æ¼·Î¼ Ç÷ÎÇÇ¿¡ ¹é¾÷À» ÇÏ·Á°í Çϰųª, À̸ÞÀÏÀÇ Ã·ºÎ ÆÄÀÏ·Î ¾²·Á°í ÇÒ ¶§, ¾÷·Îµå¸¦ ÇÏ·Á°í ÇÒ ¶§ ÁÖ·Î ¾²ÀÔ´Ï´Ù.
üũ½æ(checksum)À» »ý¼ºÇØ ÁÖ´Â À¯Æ¿¸®Æ¼ÀÔ´Ï´Ù. üũ½æÀ̶õ ÆÄÀÏÀÇ ½ÇÁ¦ ³»¿ë¿¡ ´ëÇØ »ê¼úÀûÀÎ °è»êÀ» ÇØ Æ¯Á¤ÇÑ ¼ýÀÚ¸¦ »Ì¾Æ³½ °ÍÀÔ´Ï´Ù. À̸¦ ÀÌ¿ëÇØ ÆÄÀÏÀÇ ¹«°á¼ºÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. º¸¾È¿¡ °ü·ÃµÈ ¸ñÀûÀ¸·Î ¾ÆÁÖ Áß¿äÇÑ ½Ã½ºÅÛ ÆÄÀÏ ³»¿ëÀÌ º¯°æµÇ°Å³ª ¼Õ»óµÆ´ÂÁö ¿©ºÎµîÀ» üũ½æ ¸ñ·ÏÀ¸·Î °ü¸®ÇÏ°í À̸¦ ÂüÁ¶ÇÏ´Â ½ºÅ©¸³Æ®¸¦ ¸¸µé¾î ¾µ ¼öµµ ÀÖ½À´Ï´Ù. md5sumÀº ÀÌ·± º¸¾È ¾îÇø®ÄÉÀ̼ǿ¡ Á¦ÀÏ ÀûÇÕÇÑ ¸í·É¾îÀÔ´Ï´Ù.
¹ÙÀ̳ʸ® ÆÄÀÏÀ» ¾Æ½ºÅ° ¹®ÀÚ·Î ÀÎÄÚµåÇؼ À̸ÞÀÏÀ» º¸³»°Å³ª ´º½º ±×·ì¿¡ Æ÷½ºÆà ÇÒ ¶§ Á¦´ë·Î Àü¼ÛµÉ ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù.
uuencodeµÈ ÆÄÀÏÀ» µðÄÚµåÇؼ ¿ø·¡ ¹ÙÀ̳ʸ® ÆÄÀÏ·Î ¸¸µé¾î ÁÝ´Ï´Ù.
¿¹ 12-27. ÀÎÄÚµåµÈ ÆÄÀÏÀ» uudecodeÇϱâ
#!/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 # ÀÌ ½ºÅ©¸³Æ®ÀÇ ÀÎÀÚ·Î ÀÌ ½ºÅ©¸³Æ® ÀÚü¸¦ ÁÖ°Ô µÇ¸é ¿Àµ¿ÀÛÀ» ÇÒ ÅÙµ¥, #+ ¿Ö³ÄÇϸé ÀÌ ½ºÅ©¸³Æ®´Â "begin"°ú "end"¸¦ ¸ðµÎ Æ÷ÇÔÇÏ°í Àֱ⠶§¹®ÀÔ´Ï´Ù. # ¿¬½À¹®Á¦: # ´º½º ±×·ì Çì´õ¸¦ È®ÀÎÇϵµ·Ï ¼öÁ¤ÇØ º¸¼¼¿ä. exit 0 |
ÀÛÀº Á¤º¸: À¯Áî³Ý ´º½º ±×·ì¿¡¼ ¹ÞÀº ¾ÆÁÖ ±ä ¸Þ¼¼Áö¸¦ uudecodeÇÒ ¶§ fold -s ¸í·É¾î¸¦ ÆÄÀÌÇÁµî¿¡ °É¾î¼ ¾²¸é ¾ÆÁÖ À¯¿ëÇÕ´Ï´Ù.
¿¹Àü¿¡´Â ÀÌ ¸í·É¾î°¡ À¯´Ð½ºÀÇ ÆÄÀÏ ¾ÏÈ£È Ç¥ÁØ À¯Æ¿¸®Æ¼¿´½À´Ï´Ù. [1] Á¤Ä¡ÀûÀÎ ÀÌÀ¯¶§¹®¿¡ ¾ÏÈ£È ¼ÒÇÁÆ®¿þ¾îÀÇ ¼öÃâÀ» ±ÝÁöÇÏ´Â Á¤ºÎÀÇ ±ÔÁ¦·Î ÀÎÇØ ¸¹Àº À¯´Ð½º ¼¼°è¿¡¼ crypt°¡ »ç¶óÁö°Ô µÆ°í ¾ÆÁ÷µµ °ÅÀÇ ´ëºÎºÐÀÇ ¸®´ª½º ¹èÆ÷ÆÇ¿¡¼ ºüÁ® ÀÖ½À´Ï´Ù. ´ÙÇàÈ÷µµ ¸¹Àº ÇÁ·Î±×·¡¸ÓµéÀÌ crypt¸¦ ÀûÀýÈ÷ ´ë½ÅÇÒ ÇÁ·Î±×·¥À» ¸¹ÀÌ ¸¸µé¾î ³ù°í À̵éÁß¿¡´Â ÀúÀÚ°¡ Á÷Á¢ ¸¸µç cruft µµ ÀÖ½À´Ï´Ù(¿¹ A-4 Âü°í).
À⵿»ç´Ï ¸í·É¾î(Miscellaneous)
¹ÙÀ̳ʸ® ÆÐÅ°Áö¸¦ ºôµå¹× ÄÄÆÄÀÏÇØÁÖ´Â À¯Æ¿¸®Æ¼. ¼Ò½º ÆÄÀÏ¿¡¼ Ãß°¡ º¯°æ »çÇ×ÀÌ ¹ß»ýÇϸé Á¤ÇØÁø µ¿ÀÛÀ» Çϵµ·Ï Çϴµ¥ ¾²ÀÔ´Ï´Ù.
make ¸í·É¾î´Â ÆÄÀÏ ÀÇÁ¸¼º°ú ¼öÇàÇÒ µ¿ÀÛÀÌ µé¾î ÀÖ´Â MakefileÀ» ¹ÙÅÁÀ¸·Î µ¿ÀÛÇÕ´Ï´Ù.
Ưº°ÇÑ ¸ñÀûÀ» °®°í ÀÖ´Â ÆÄÀÏ º¹»ç ¸í·É¾î·Î¼ cp¿Í ºñ½ÁÇÏÁö¸¸ º¹»çµÉ ÆÄÀÏÀÇ ¼ÒÀ¯±Ç°ú ¼Ó¼ºÀ» ¼³Á¤ÇØ ÁÙ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸í·É¾î´Â ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö¸¦ ¼³Ä¡ÇÒ ¶§¿¡ µü ¸Â´Â ¸í·É¾îó·³ º¸À̴µ¥, ½ÇÁ¦·Î Makefiles(make install : ¼½¼Ç)¿¡¼ ÀÚÁÖ µîÀåÇÕ´Ï´Ù. ¶ÇÇÑ ¼³Ä¡ ½ºÅ©¸³Æ®¿¡¼ ã¾Æ º¼ ¼öµµ ÀÖ½À´Ï´Ù.
ÅؽºÆ® ÆÄÀÏÀ̳ª ½ºÆ®¸²À» Ç¥ÁØÃâ·ÂÀ¸·Î ÇÑ ¹ø¿¡ ÇÑ Âʾ¿ Ç¥½ÃÇØ ÁÖ´Â ÆäÀÌÀúÀÔ´Ï´Ù. ½ºÅ©¸³Æ®ÀÇ Ãâ·ÂÀ» À§ÇÑ ÇÊÅÍ·Î ¾µ ¼ö ÀÖ½À´Ï´Ù.
[1] | ÀÌ ¸í·É¾î´Â ´ÜÀÏ ½Ã½ºÅÛÀ̳ª Áö¿ª ³×Æ®¿öÅ©¿¡ ÀÖ´Â ÆÄÀÏÀ» ¾ÏÈ£È Çϴµ¥ ¾²ÀÌ´Â ´ëĪÇü ºí·° ¾ÏÈ£È(symmetric block cipher)¸í·É¾îÀÔ´Ï´Ù. ÀÌ¿Í ¹Ý´ë °³³äÀÎ "°ø°³Å°" ¾Ïȣȶõ °Íµµ ÀÖ´Â µ¥ ÀÌ ¾ÏÈ£ÈÀÇ À¯¸íÇÑ ¿¹°¡ ¹Ù·Î pgpÀÔ´Ï´Ù. |