12.5. ÆÄÀÏ, ¾ÆÄ«À̺ê(archive) ¸í·É¾î

¾ÆÄ«À̺ù

tar

À¯´Ð½ºÀÇ Ç¥ÁØ ¾ÆÄ«À̺ê(archive) À¯Æ¿¸®Æ¼. ¿ø·¡´Â Tape ARchiving ÇÁ·Î±×·¥¿¡¼­ ¿Ô´Âµ¥, ÀÌ ÇÁ·Î±×·¥Àº Å×ÀÔ µå¶óÀ̺êºÎÅÍ º¸Åë ÆÄÀÏ, ½ÉÁö¾î´Â Ç¥ÁØÃâ·Â(¿¹ 4-3 Âü°í)±îÁö Æ÷ÇÔÇÏ´Â ¸ðµç Á¾·ùÀÇ µð¹ÙÀ̽º¿¡ ´ëÇؼ­ ¸ðµç Á¾·ùÀÇ ¾ÆÄ«À̺긦 ´Ù·ê ¼ö ÀÖµµ·Ï ¸¸µé¾î Á³½À´Ï´Ù. GNU tar´Â ¿À·¡ÀüºÎÅÍ gzip ¾ÐÃàÀ» ´Ù·ê ¼ö ÀÖ´Â ¿É¼ÇÀÌ ÆÐÄ¡µÇ¾î ÀÖ¾ú´Âµ¥, tar czvf archive-name.tar.gz * ¶ó°í Çϸé ÇÏÀ§ µð·ºÅ丮¸¦ Æ÷ÇÔÇÑ ¸ðµç ÆÄÀÏÀ» ¹­¾î¼­ ¾ÐÃàÇ϶ó´Â ¶æÀÔ´Ï´Ù(µµÆ®ÆÄÀÏÀº Á¦¿Ü).

À¯¿ëÇÑ tar ¿É¼Ç ¸î °¡Áö:

  1. -c ¸¸µé±â(»õ ¾ÆÄ«À̺ê)

  2. --delete Áö¿ì±â(¾ÆÄ«À̺꿡 µé¾î ÀÖ´Â ÆÄÀÏ)

  3. -r µ¡ºÙÀ̱â(ÆÄÀÏÀ» ¾ÆÄ«À̺ê·Î)

  4. -t ¸ñ·Ï(¾ÆÄ«ÀÌºê ³»¿ë)

  5. -u ¾ÆÄ«ÀÌºê ¾÷µ¥ÀÌÆ®

  6. -x »Ì¾Æ³»±â(¾ÆÄ«À̺꿡 µé¾î ÀÖ´Â ÆÄÀÏ)

  7. -z ¾ÆÄ«À̺긦 gzip À¸·Î ¾ÐÃà

°æ°í

gzipÀ¸·Î ¹­ÀÎä ¼Õ»óµÈ tar ¾ÆÄ«À̺ê´Â º¹±¸ÇϱⰡ ¸Å¿ì Èûµé±â ¶§¹®¿¡ Áß¿äÇÑ ÆÄÀÏÀ» ¾ÆÄ«À̺ê·Î ¸¸µé¶§´Â ¿©·¯ ±ºµ¥¿¡ ¹é¾÷À» ÇØ ³õ±â ¹Ù¶ø´Ï´Ù.

shar

½© ¾ÆÄ«À̺ê À¯Æ¿¸®Æ¼. ½© ¾ÆÄ«À̺ê ÆÄÀÏÀº ½ÇÁ¦·Î´Â #!/bin/sh Çì´õ¿Í ¾ÆÄ«À̺긦 Ç®±â À§ÇÑ ¸í·É¾îµé·Î ÀÌ·ç¾îÁø ½© ½ºÅ©¸³Æ®·Î½á, ¾ÐÃàµÇÁö ¾ÊÀº ÆÄÀϵéÀÌ Âß ºÙ¾î ÀÖ´Â ÆÄÀÏÀÔ´Ï´Ù. shar ¾ÆÄ«À̺ê´Â ¾ÆÁ÷µµ ÀÎÅÍ³Ý ´º½º ±×·ì¿¡¼­ º¼ ¼ö Àִµ¥ ¿©±â ¸»°í ´Ù¸¥ °÷¿¡¼­´Â tar/gzip ¶§¹®¿¡ °ÅÀÇ ¾È ¾¹´Ï´Ù. shar ¾ÆÄ«À̺ê´Â unshar ¸í·É¾î·Î Ç®¾î ÁÝ´Ï´Ù.

ar

ÁÖ·Î ¹ÙÀ̳ʸ® ¿ÀºêÁ§Æ® ÆÄÀÏ ¶óÀ̺귯¸®¿¡¼­ ¾²ÀÌ´Â ¾ÆÄ«À̺긦 À§ÇÑ »ý¼º, Á¶ÀÛ À¯Æ¿¸®Æ¼.

cpio

ÀÌ Æ¯È­µÈ ¾ÆÄ«ÀÌºê º¹»ç ¸í·É¾î(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

¾ÐÃà

gzip

Ç¥ÁØ GNU/UNIX ¾ÐÃà À¯Æ¿¸®Æ¼·Î¼­, ¼º´ÉÀÌ ¶³¾îÁö°í ƯÇã°¡ °É·Á ÀÖ´Â compress¸¦ ´ë½ÅÇÕ´Ï´Ù. ¾ÐÃà Ç®±â ¸í·É¾î´Â gunzipÀ¸·Î½á, gzip -d¿Í °°½À´Ï´Ù.

zcat ÇÊÅÍ´Â gzipÀ¸·Î ¹­ÀÎ ÆÄÀÏÀÇ ¾ÐÃàÀ» Ç®¾î Ç¥ÁØÃâ·ÂÀ¸·Î ³»º¸³»±â ¶§¹®¿¡ ÆÄÀÌÇÁÀÇ ÀÔ·ÂÀ̳ª ÀçÁöÇâ¿¡¼­ ¾²ÀÏ ¼ö ÀÖ½À´Ï´Ù. Áï, ½ÇÁ¦·Î´Â ÀÔÃà ÆÄÀÏ¿¡ ´ëÇؼ­ µ¿ÀÛÇÏ´Â catÀ̶ó°í º¸¸é µË´Ï´Ù(¿¾³¯ compress ·Î ¹­ÀÎ ÆÄÀϵµ Æ÷ÇÔ). zcatÀº gzip -dc¿Í °°½À´Ï´Ù.

°æ°í

¸î¸î »ó¾÷¿ë À¯´Ð½º ½Ã½ºÅÛ¿¡¼­´Â zcatÀÌ uncompress -c¿Í µ¿ÀǾî·Î ¾²ÀÌÁö¸¸ gzipÀ¸·Î ¹­ÀÎ ÆÄÀÏ¿¡ ´ëÇؼ­´Â µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù.

¿¹ 7-6 Âü°í.

bzip2

¶Ç ´Ù¸¥ ¾ÐÃà À¯Æ¿¸®Æ¼·Î½á, Ưº°È÷ Å©±â°¡ Å« ÆÄÀÏ¿¡ ´ëÇؼ­´Â gzipº¸´Ù ´õ È¿À²ÀûÀÔ´Ï´Ù. bzip2¿¡ ´ëÇÑ ¾ÐÃà Ç®±â ¸í·É¾î´Â bunzip2ÀÔ´Ï´Ù.

compress, uncompress

»ó¿ë À¯´Ð½º ¹èÆ÷ÆÇ¿¡¼­ ãÀ» ¼ö ÀÖ´Â ¿À·¡µÇ°í ƯÇã°¡ °É·ÁÀÖ´Â À¯Æ¿¸®Æ¼ÀÌ°í, ´õ È¿À²ÀûÀÎ gzipÀ¸·Î °ÅÀÇ ´Ù ¹Ù²î¾ú½À´Ï´Ù. gunzipÀÌ compress·Î ¹­ÀÎ ÆÄÀϵéÀ» Ç® ¼ö ÀÖÁö¸¸, ¸®´ª½º ¹èÆ÷ÆǵéÀº ȣȯ¼ºÀ» À§Çؼ­ compress¸¦ ´àÀº ¸í·É¾î¸¦ Æ÷ÇÔ½Ãŵ´Ï´Ù.

ÀÛÀº Á¤º¸: znew ¸í·É¾î´Â compress·Î ¾ÐÃàµÈ ÆÄÀÏÀ» gzipÀ¸·Î ¾ÐÃàµÈ ÆÄÀÏ·Î º¯È¯ÇØ ÁÝ´Ï´Ù.

sq

¶Ç ´Ù¸¥ ¾ÐÃà À¯Æ¿¸®Æ¼·Î½á ¿ÀÁ÷ Á¤·ÄµÈ ¾Æ½ºÅ° ³¹¸» ¸ñ·Ï¿¡ ´ëÇؼ­¸¸ µ¿ÀÛÇÏ´Â ÇÊÅÍÀÔ´Ï´Ù. sq < input-file > output-file ó·³ Ç¥ÁØ ÇÊÅ͸¦ ¾²µíÀÌ ¾²¸é µË´Ï´Ù. ¼Óµµ´Â ºü¸£Áö¸¸ gzip¸¸Å­ È¿°úÀûÀÌÁö´Â ¾Ê½À´Ï´Ù. ÀÌ ¸í·É¾î¿¡ ÇØ´çÇÏ´Â ¾ÐÃà Ç®±â ÇÊÅÍ´Â unsqÀÌ°í »ç¿ë¹ýÀº sq¿Í °°½À´Ï´Ù.

ÀÛÀº Á¤º¸: sqÀÇ Ãâ·ÂÀ» gzip¿¡ ÆÄÀÌÇÁ·Î °É¾î¼­ ´õ ¾ÐÃà ½Ãų ¼öµµ ÀÖ½À´Ï´Ù.

zip, unzip

µµ½ºÀÇ PKZIP°ú ȣȯµÇ´Â Å©·Î½º Ç÷§Æû ÆÄÀÏ ¾ÆÄ«À̺ù¹× ¾ÐÃà À¯Æ¿¸®Æ¼. ÀÎÅͳݿ¡¼­ "Zip"À¸·Î ¹­ÀÎ ¾ÆÄ«À̺êµéÀÌ "Ÿ¸£º¼"º¸´Ù ´õ ¸¹ÀÌ ¾²ÀÔ´Ï´Ù.

ÆÄÀÏ Á¤º¸

file

ÆÄÀÏ Á¾·ù¸¦ ±¸ºÐÁö¾î ÁÖ´Â À¯Æ¿¸®Æ¼. 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

which command-xxx ¶ó°í Çϸé "command-xxx"ÀÇ Àüü °æ·Î¸íÀ» ¾Ë·Á ÁÝ´Ï´Ù. ½Ã½ºÅÛ¿¡ ƯÁ¤ ¸í·É¾î³ª À¯Æ¿¸®Æ¼°¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö ¾Ë¾Æ³»·Á°í ÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù.

$bash which rm
/usr/bin/rm

whereis

À§ÀÇ which¿Í ºñ½ÁÇÏÁö¸¸ "command-xxx" ¸Ç ÆäÀÌÁöÀÇ Àüü °æ·Î¸íµµ °°ÀÌ ¾Ë·ÁÁÝ´Ï´Ù.

$bash whereis rm
rm: /bin/rm /usr/share/man/man1/rm.1.bz2

whatis

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 Âü°í.

vdir

ÀÚ¼¼ÇÑ µð·ºÅ丮 ¸ñ·ÏÀ» º¸¿©ÁÝ´Ï´Ù. 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
	      

shred

ÆÄÀÏÀ» Áö¿ì±â Àü¿¡ ·£´ý ºñÆ® ÆÐÅÏÀ» ¿©·¯¹ø µ¤¾î ½á¼­ º¸¾È»ó ¾ÈÀüÇÏ°Ô Áö¿öÁÝ´Ï´Ù. ¿¹ 12-33 °ú µ¿ÀÏÇÑ °á°ú¸¦ °¡Á®¿ÀÁö¸¸ ´õ ºóÆ´¾ø°í ¸ÚÁø ¹æ¹ýÀÔ´Ï´Ù.

GNU fileutils ¿¡ ¼ÓÇÏ´Â ¸í·É¾îÀÔ´Ï´Ù.

°æ°í

shred¸¦ ½á¼­ ÆÄÀÏÀ» Áö¿î´Ù°í Çصµ ÃÖ÷´Ü º¹±¸ ±â¼ú(advanced forensic technology)À» ÀÌ¿ëÇØ ±× ³»¿ëÀÇ ÀϺγª Àüü¸¦ º¹±¸ÇØ ³»´Â °ÍÀ» ¸·Áö´Â ¸øÇÕ´Ï´Ù.

locate, slocate

locate´Â ÀÚü µ¥ÀÌŸº£À̽º¿¡¼­ ÆÄÀÏÀ» ã¾Æ ÁÝ´Ï´Ù. slocate´Â locate(slocate·Î º°ÄªÀÌ ÁöÁ¤ µÇ¾î ÀÖÀ»)ÀÇ º¸¾È °­È­ ¹öÀüÀÔ´Ï´Ù.

$bash locate hickson
/usr/lib/xephem/catalogs/hickson.edb

strings

strings¸¦ ¾²¸é ¹ÙÀ̳ʸ®³ª µ¥ÀÌŸ ÆÄÀϾȿ¡¼­ »ç¶÷ÀÌ ÀÐÀ» ¼ö ÀÖ´Â(Ãâ·Â °¡´ÉÇÑ) ¹®ÀÚ¸¦ ãÀ» ¼ö ÀÖ½À´Ï´Ù. ÇØ´ç ÆÄÀÏ¿¡¼­ Ãâ·Â °¡´ÉÇÑ ¹®ÀÚµéÀ» ¼ø¼­´ë·Î º¸¿©ÁÝ´Ï´Ù. ÀÌ ¸í·É¾î¸¦ ¾²¸é ÄÚ¾î ´ýÇÁ ÆÄÀÏÀ» °£´ÜÇÏ°Ô Á¡°ËÇØ º¼ ¼ö ÀÖ°í ¾Ë ¼ö ¾ø´Â ±×·¡ÇÈ ÆÄÀÏÀÇ Å¸ÀÔÀ» È®ÀÎÇØ º¼ ¼ö ÀÖ½À´Ï´Ù(strings image-file | more À̶ó°í Ãļ­ JFIF°°Àº ¹®ÀÚ¸¦ º¸¿©ÁØ´Ù¸é ±× ÆÄÀÏÀº jpeg ÆÄÀÏÀ̶ó°í º¸¸é µË´Ï´Ù). ½ºÅ©¸³Æ®¿¡¼­´Â stringsÀÇ Ãâ·ÂÀ» grepÀ̳ª sed·Î ÆĽÌÇؼ­ ¾µ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¿¹ 10-7°ú ¿¹ 10-8À» Âü°íÇϼ¼¿ä.

À¯Æ¿¸®Æ¼

basename

ÆÄÀÏ¸í¿¡¼­ °æ·Î Á¤º¸¸¦ ¶¼¾î³»°í ¿ÀÁ÷ ÆÄÀÏ À̸§¸¸ º¸¿© ÁÝ´Ï´Ù. basename $0 À̶ó°í ÇÏ¸é ½ºÅ©¸³Æ®´Â ÀڱⰡ ½©¿¡¼­ ºÒ¸° ÀÚ±â À̸§À» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ½ºÅ©¸³Æ®¿¡ ÇÊ¿äÇÑ ÀÎÀÚ°¡ ¾øÀÌ ½ÇÇàµÇ´Â °æ¿ì¿¡ "»ç¿ë¹ý" ¸Þ¼¼Áö¸¦ ÂïÀ» ¶§ ¾µ ¼ö ÀÖ½À´Ï´Ù:
echo "»ç¿ë¹ý: `basename $0` arg1 arg2 ... argn"

dirname

ÆÄÀÏ¸í¿¡¼­ 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
split

ÇÑ ÆÄÀÏÀ» ÀÛÀº Á¶°¢À¸·Î ³ª´²ÁÖ´Â À¯Æ¿¸®Æ¼·Î¼­ Ç÷ÎÇÇ¿¡ ¹é¾÷À» ÇÏ·Á°í Çϰųª, À̸ÞÀÏÀÇ Ã·ºÎ ÆÄÀÏ·Î ¾²·Á°í ÇÒ ¶§, ¾÷·Îµå¸¦ ÇÏ·Á°í ÇÒ ¶§ ÁÖ·Î ¾²ÀÔ´Ï´Ù.

sum, cksum, md5sum

üũ½æ(checksum)À» »ý¼ºÇØ ÁÖ´Â À¯Æ¿¸®Æ¼ÀÔ´Ï´Ù. üũ½æÀ̶õ ÆÄÀÏÀÇ ½ÇÁ¦ ³»¿ë¿¡ ´ëÇØ »ê¼úÀûÀÎ °è»êÀ» ÇØ Æ¯Á¤ÇÑ ¼ýÀÚ¸¦ »Ì¾Æ³½ °ÍÀÔ´Ï´Ù. À̸¦ ÀÌ¿ëÇØ ÆÄÀÏÀÇ ¹«°á¼ºÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. º¸¾È¿¡ °ü·ÃµÈ ¸ñÀûÀ¸·Î ¾ÆÁÖ Áß¿äÇÑ ½Ã½ºÅÛ ÆÄÀÏ ³»¿ëÀÌ º¯°æµÇ°Å³ª ¼Õ»óµÆ´ÂÁö ¿©ºÎµîÀ» üũ½æ ¸ñ·ÏÀ¸·Î °ü¸®ÇÏ°í À̸¦ ÂüÁ¶ÇÏ´Â ½ºÅ©¸³Æ®¸¦ ¸¸µé¾î ¾µ ¼öµµ ÀÖ½À´Ï´Ù. md5sumÀº ÀÌ·± º¸¾È ¾îÇø®ÄÉÀ̼ǿ¡ Á¦ÀÏ ÀûÇÕÇÑ ¸í·É¾îÀÔ´Ï´Ù.

ÀÎÄÚµù°ú ¾Ïȣȭ

uuencode

¹ÙÀ̳ʸ® ÆÄÀÏÀ» ¾Æ½ºÅ° ¹®ÀÚ·Î ÀÎÄÚµåÇؼ­ À̸ÞÀÏÀ» º¸³»°Å³ª ´º½º ±×·ì¿¡ Æ÷½ºÆà ÇÒ ¶§ Á¦´ë·Î Àü¼ÛµÉ ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù.

uudecode

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 ¸í·É¾î¸¦ ÆÄÀÌÇÁµî¿¡ °É¾î¼­ ¾²¸é ¾ÆÁÖ À¯¿ëÇÕ´Ï´Ù.

crypt

¿¹Àü¿¡´Â ÀÌ ¸í·É¾î°¡ À¯´Ð½ºÀÇ ÆÄÀÏ ¾Ïȣȭ Ç¥ÁØ À¯Æ¿¸®Æ¼¿´½À´Ï´Ù. [1] Á¤Ä¡ÀûÀÎ ÀÌÀ¯¶§¹®¿¡ ¾Ïȣȭ ¼ÒÇÁÆ®¿þ¾îÀÇ ¼öÃâÀ» ±ÝÁöÇÏ´Â Á¤ºÎÀÇ ±ÔÁ¦·Î ÀÎÇØ ¸¹Àº À¯´Ð½º ¼¼°è¿¡¼­ crypt°¡ »ç¶óÁö°Ô µÆ°í ¾ÆÁ÷µµ °ÅÀÇ ´ëºÎºÐÀÇ ¸®´ª½º ¹èÆ÷ÆÇ¿¡¼­ ºüÁ® ÀÖ½À´Ï´Ù. ´ÙÇàÈ÷µµ ¸¹Àº ÇÁ·Î±×·¡¸ÓµéÀÌ crypt¸¦ ÀûÀýÈ÷ ´ë½ÅÇÒ ÇÁ·Î±×·¥À» ¸¹ÀÌ ¸¸µé¾î ³ù°í À̵éÁß¿¡´Â ÀúÀÚ°¡ Á÷Á¢ ¸¸µç cruft µµ ÀÖ½À´Ï´Ù(¿¹ A-4 Âü°í).

À⵿»ç´Ï ¸í·É¾î(Miscellaneous)

make

¹ÙÀ̳ʸ® ÆÐÅ°Áö¸¦ ºôµå¹× ÄÄÆÄÀÏÇØÁÖ´Â À¯Æ¿¸®Æ¼. ¼Ò½º ÆÄÀÏ¿¡¼­ Ãß°¡ º¯°æ »çÇ×ÀÌ ¹ß»ýÇϸé Á¤ÇØÁø µ¿ÀÛÀ» Çϵµ·Ï Çϴµ¥ ¾²ÀÔ´Ï´Ù.

make ¸í·É¾î´Â ÆÄÀÏ ÀÇÁ¸¼º°ú ¼öÇàÇÒ µ¿ÀÛÀÌ µé¾î ÀÖ´Â MakefileÀ» ¹ÙÅÁÀ¸·Î µ¿ÀÛÇÕ´Ï´Ù.

install

Ưº°ÇÑ ¸ñÀûÀ» °®°í ÀÖ´Â ÆÄÀÏ º¹»ç ¸í·É¾î·Î¼­ cp¿Í ºñ½ÁÇÏÁö¸¸ º¹»çµÉ ÆÄÀÏÀÇ ¼ÒÀ¯±Ç°ú ¼Ó¼ºÀ» ¼³Á¤ÇØ ÁÙ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸í·É¾î´Â ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö¸¦ ¼³Ä¡ÇÒ ¶§¿¡ µü ¸Â´Â ¸í·É¾îó·³ º¸À̴µ¥, ½ÇÁ¦·Î Makefiles(make install : ¼½¼Ç)¿¡¼­ ÀÚÁÖ µîÀåÇÕ´Ï´Ù. ¶ÇÇÑ ¼³Ä¡ ½ºÅ©¸³Æ®¿¡¼­ ã¾Æ º¼ ¼öµµ ÀÖ½À´Ï´Ù.

more, less

ÅؽºÆ® ÆÄÀÏÀ̳ª ½ºÆ®¸²À» Ç¥ÁØÃâ·ÂÀ¸·Î ÇÑ ¹ø¿¡ ÇÑ Âʾ¿ Ç¥½ÃÇØ ÁÖ´Â ÆäÀÌÀúÀÔ´Ï´Ù. ½ºÅ©¸³Æ®ÀÇ Ãâ·ÂÀ» À§ÇÑ ÇÊÅÍ·Î ¾µ ¼ö ÀÖ½À´Ï´Ù.

ÁÖ¼®

[1]

ÀÌ ¸í·É¾î´Â ´ÜÀÏ ½Ã½ºÅÛÀ̳ª Áö¿ª ³×Æ®¿öÅ©¿¡ ÀÖ´Â ÆÄÀÏÀ» ¾Ïȣȭ Çϴµ¥ ¾²ÀÌ´Â ´ëĪÇü ºí·° ¾Ïȣȭ(symmetric block cipher)¸í·É¾îÀÔ´Ï´Ù. ÀÌ¿Í ¹Ý´ë °³³äÀÎ "°ø°³Å°" ¾Ïȣȭ¶õ °Íµµ ÀÖ´Â µ¥ ÀÌ ¾ÏȣȭÀÇ À¯¸íÇÑ ¿¹°¡ ¹Ù·Î pgpÀÔ´Ï´Ù.