ÀÌ ½ºÅ©¸³Æ®µéÀº ÀÌ ¹®¼ÀÇ ÁÖÁ¦¿¡ µü µé¾î ¸ÂÁö´Â ¾ÊÁö¸¸ ½© ÇÁ·Î±×·¡¹Ö Å×Å©´ÐÀÇ Àç¹Õ´Â ºÎºÐµéÀ» º¸¿©ÁÝ´Ï´Ù. ¶Ç, ¾ÆÁÖ ¾µ¸¸ÇÕ´Ï´Ù. ºÐ¼®ÇØ º¸°í ½ÇÇà½ÃÄÑ º¸¸é¼ Àç¹Ì¸¦ ´À²¸ º¸¼¼¿ä.
예 A-1. manview: Æ÷¸ËµÈ ¸Ç ÆäÀÌÁö¸¦ º¸´Â ½ºÅ©¸³Æ®
#!/bin/bash # »ç¿ëÀÚ µð·ºÅ丮¿¡ ÀÖ´Â ¸Ç ÆäÀÌÁö ¼Ò½º¸¦ Æ÷¸ËÈÇØ¼ º¸¿©ÁÝ´Ï´Ù. # ¸Ç ÆäÀÌÁö ¼Ò½º¸¦ ÀÛ¼ºÇÏ´Â µµÁß¿¡ Áï½Ã °á°ú¸¦ º¸°í ½ÍÀ» ¶§¿¡ ¾²¸é # ¾ÆÁÖ ÁÁ½À´Ï´Ù. if [ -z $1 ] then echo "»ç¿ë¹ý: `basename $0` [filename]" exit 1 fi groff -Tascii -man $1 | less # ¸Ç ÆäÀÌÁö¸¦ groff ·Î º¸±â exit 0 |
예 A-2. rn: °£´ÜÇÑ ÆÄÀÏ À̸§ ¹Ù²Ù´Â À¯Æ¿¸®Æ¼
ÀÌ ½ºÅ©¸³Æ®´Â 예 3-57ÀÇ º¯°æÆÇÀÔ´Ï´Ù.
#! /bin/bash # # ¾ÆÁÖ °£´ÜÇÑ ÆÄÀÏ À̸§À» "¹Ù²Ù´Â" À¯Æ¿¸®Æ¼ # "lowercase.sh"À» ±âÃÊ·Î ¸¸µé¾ú½À´Ï´Ù. if [ $# -ne 2 ] then echo "»ç¿ë¹ý: `basename $0` old-pattern new-pattern" # ¿¹¸¦ µé¾î "rn gif jpg" ó·³ Çϸé, ÇöÀç ÀÛ¾÷ µð·ºÅ丮ÀÇ ¸ðµç gif ÆÄÀÏÀ» jpg ÆÄÀÏ·Î À̸§À» ¹Ù²ãÁÝ´Ï´Ù. exit 1 fi number=0 # ½ÇÁ¦·Î ¾ó¸¶³ª ¸¹Àº ÆÄÀÏ À̸§ÀÌ ¹Ù²î¾ú´ÂÁö ÃßÀûÇϰí ÀÖÀ» º¯¼ö for filename in *$1* # µð·ºÅ丮¿¡¼ ÀÏÄ¡ÇÏ´Â ¸ðµç ÆÄÀÏÀ» ã¾Æ¼ do if [ -f $filename ] # ã¾Ò´Ù¸é... then fname=`basename $filename` # °æ·Î¸¦ ¶¼¾î³»°í n=`echo $fname | sed -e "s/$1/$2/"` # »õ À̸§À¸·Î ¹Ù²Û ´ÙÀ½ mv $fname $n # À̸§À» ¹Ù²ß´Ï´Ù. let "number += 1" fi done if [ $number -eq 1 ] # ¹®¹ý¿¡ ¸Â°Ô ÇÏ·Á°í then echo "$number °³ÀÇ ÆÄÀÏ À̸§ÀÌ ¹Ù²î¾ú½À´Ï´Ù." else echo "$number °³ÀÇ ÆÄÀÏ À̸§µéÀÌ ¹Ù²î¾ú½À´Ï´Ù." fi exit 0 # µ¶ÀÚµéÀ» À§ÇÑ ¿¬½À¹®Á¦: # ¾î¶² Á¾·ùÀÇ ÆÄÀÏ¿¡ ´ëÇØ¼ Á¦´ë·Î µ¿ÀÛÇÏÁö ¾ÊÀ»±î¿ä? # ¾î¶»°Ô °íÄ¡ÁÒ? |
예 A-3. encryptedpw: ÀڽŠ½Ã½ºÅÛ¿¡(locally) ¾ÏÈ£È µÇ¾î ÀÖ´Â ÆÐ½º¿öµå·Î ftp »çÀÌÆ®¿¡ ÆÄÀÏÀ» ¾÷·ÎµåÇÏ´Â ½ºÅ©¸³Æ®
#!/bin/bash # ¿¹ 3-71 À» ¾ÏÈ£ÈµÈ ÆÐ½º¿öµå¸¦ »ç¿ëÇϵµ·Ï °íÃÆ½À´Ï´Ù. if [ -z $1 ] then echo "»ç¿ë¹ý: `basename $0` filename" exit 1 fi Username=bozo # ¾Ë¸Â°Ô °íÄ¡¼¼¿ä. Filename=`basename $1` # ÆÄÀÏ À̸§¿¡¼ °æ·Î À̸§À» ¶¼¾î ³À´Ï´Ù. Server="XXX" Directory="YYY" # ½ÇÁ¦ ¼¹ö¿Í µð·ºÅ丮 À̸§À¸·Î ¹Ù²Ù¼¼¿ä. password=`cruft <pword` # "pword" ´Â ¾ÏÈ£ÈµÈ ÆÐ½º¿öµå°¡ ´ã±ä ÆÄÀÏÀÔ´Ï´Ù. # 1ȸ¿ë ¾Ïȣǥ¸¦ ¾²´Â ¾Ë°í¸®Áò¿¡ ±â¹ÝÇÑ ÀúÀÚÀÇ "cruft" ¶õ ÆÄÀÏ ¾ÏÈ£È # ÆÐŰÁö¸¦ ¾²´Âµ¥, ¿©±â¼ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. # ¸ÞÀÎ »çÀÌÆ®: ftp://metalab.unc.edu /pub/Linux/utils/file # cruft-0.2.tar.gz [16k] ftp -n $Server <<End-Of-Session # -n ¿É¼ÇÀº ÀÚµ¿ ·Î±×ÀÎÀ» ¸·¾ÆÁÝ´Ï´Ù. user $Username $Password binary bell # ÆÄÀÏ Àü¼ÛÀÌ ÀϾ ¶§¸¶´Ù 'bell'À» ¿ï¸®±â cd $Directory put $Filename bye End-Of-Session exit 0 |
+
´ÙÀ½ µÎ ½ºÅ©¸³Æ®´Â Åä·ÐÅä ´ëÇÐÀÇ Mark Moraes°¡ ¸¸µé¾ú½À´Ï´Ù. Çã°¡ »çÇ×°ú Á¦ÇÑ »çÇ׿¡ ´ëÇØ¼´Â ÀÌ ¹®¼¿Í °°ÀÌ ¹èÆ÷µÇ´Â "Moraes-COPYRIGHT" ÆÄÀÏÀ» Âü°íÇϱ⠹ٶø´Ï´Ù.
예 A-4. behead: ¸ÞÀϰú ´º½º ¸Þ¼¼Áö Çì´õ¸¦ Á¦°ÅÇØ ÁÖ´Â ½ºÅ©¸³Æ®
#! /bin/sh # ¸ÞÀÏÀ̳ª ´º½º ¸Þ¼¼Áö¿¡¼ Çì´õ¸¦ ¶¼¾î ³» ÁÖ´Â ½ºÅ©¸³Æ®. # Áï, ù¹øÂ° ºó ÁÙÀÌ ³ª¿Ã ¶§±îÁö # Åä·ÐÅä ´ëÇÐÀÇ Mark Moraes # --> ÀÌ ÁÖ¼®Àº HOWTO ÀúÀÚ°¡ ºÙÀÎ °ÍÀÔ´Ï´Ù. if [ $# -eq 0 ]; then # --> ¸í·É¾î ÁÙ ÀÎÀÚ°¡ ¾ø´Ù¸é Ç¥ÁØÀԷ¿¡¼ ÀçÁöÇâµÇ¾î µé¾î¿À´Â ÆÄÀÏ¿¡ ´ëÇØ¼ µ¿ÀÛÇÔ. sed -e '1,/^$/d' -e '/^[ ]*$/d' # --> °ø¹é ¹®ÀÚ·Î ½ÃÀÛÇϴ ù¹øÂ° ÁÙÀÌ ³ª¿Ã ¶§±îÁö # --> ºó ÁÙ°ú ¸ðµç ÁÙÀ» Áö¿ó´Ï´Ù. else # --> ¸í·É¾î ÁÙ ÀÎÀÚ°¡ ÀÖ´Ù¸é ±× ÁÖ¾îÁø ÆÄÀÏ¿¡ ´ëÇØ¼ µ¿ÀÛÇÔ for i do sed -e '1,/^$/d' -e '/^[ ]*$/d' $i # --> À§¿Í °°½À´Ï´Ù. done fi # --> µ¶ÀÚ¸¦ À§ÇÑ ¿¬½À¹®Á¦: ¿¡·¯ üũ¸¦ ÇÏ°í ´Ù¸¥ ¿É¼ÇÀ» ´õÇØ º¸¼¼¿ä. # --> # --> ÀÛÀº sed ½ºÅ©¸³Æ®°¡ ÀÎÀÚ¸¦ ³Ñ±â´Â °Í¸¸ »©°í ¹Ýº¹µÇ´Â°ÍÀ» À¯½ÉÈ÷ »ìÆì º¸¼¼¿ä. # --> ÀÌ ºÎºÐÀ» ÇÔ¼ö·Î »©´Â°Ô ÀÌÄ¡¿¡ ¸ÂÀ»±î¿ä? ±× ´ë´ä¿¡ ´ëÇØ¼ ¼³¸íÇØ º¸¼¼¿ä. |
예 A-5. ftpget: ftp¿¡¼ ÆÄÀÏÀ» ´Ù¿î·ÎµåÇØ ÁÖ´Â ½ºÅ©¸³Æ®
#! /bin/sh # $Id: ftpget,v 1.2 91/05/07 21:15:43 moraes Exp $ # À͸í ftp¿¡ ¹èÄ¡ ÀÛ¾÷À» ½ÇÇàÇÏ´Â ½ºÅ©¸³Æ®. ±âº»ÀûÀ¸·Î ¸í·É¾î ¶óÀÎ ÀÎÀÚµéÀ» # ftpÀÇ ÀÔ·ÂÀ¸·Î ¹Ù²ãÁÖ´Â ÀÏÀ» ÇÕ´Ï´Ù. # °£´ÜÇÏ°í ºü¸¨´Ï´Ù - ftplist¿Í ÇÑ ½ÖÀÌ µÇµµ·Ï ÀÛ¼ºµÆ½À´Ï´Ù. # -h ´Â Á¢¼ÓÇÒ È£½ºÆ®¸¦ ³ªÅ¸³À´Ï´Ù(±âº»°ªÀº prep.ai.mit.edu) # -d ´Â Á¢¼ÓÈÄ cd ·Î ¿Å°Ü°¥ µð·ºÅ丮¸¦ ³ªÅ¸³À´Ï´Ù. -d ¸¦ ¿©·¯¹ø ¾µ ¼öµµ # Àִµ¥, ÀÌ·¸°Ô Çϸé ÁÖ¾îÁø ¼ø¼´ë·Î µð·ºÅ丮¸¦ ¿Å°Ü°¥ °ÍÀÔ´Ï´Ù. # ¸¸¾à¿¡ ÇØ´ç µð·ºÅ丮°¡ »ó´ë °æ·Î¶ó¸é ¼ø¼¸¦ Àß ¸Å°Ü¾ß ÇÕ´Ï´Ù. # ¿äÁò¿£ ³Ê¹« ¸¹Àº ½Éº¼¸¯ ¸µÅ©°¡ Á¸ÀçÇϱ⠶§¹®¿¡ ¾ÆÁÖ Á¶½ÉÇØ¼ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. # (±âº»°ªÀº ftp ·Î±×ÀÎ µð·ºÅ丮) # -v ´Â ftpÀÇ verbose¸ðµå¸¦ ÄѼ, ftp ¼¹öÀÇ ¸ðµç ÀÀ´äÀ» º¸¿©ÁÝ´Ï´Ù. # -f remotefile[:localfile] Àº remote ÆÄÀÏÀ» local ÆÄÀÏ·Î À̸§À» ¹Ù²ã # °¡Á®¿É´Ï´Ù. # -m pattern Àº ÁÖ¾îÁø ÆÐÅÏ¿¡ ÇØ´çÇÏ´Â ÆÄÀϵéÀ» mgetÀ¸·Î °¡Á®¿É´Ï´Ù. # ½© ¹®ÀÚµéÀ» Àοë(quote)ÇØ¾ß ÇÏ´Â °ÍÀ» ±â¾ïÇϼ¼¿ä. # -c ´Â ÇöÀç ÀÚ½ÅÀÇ ½Ã½ºÅÛ¿¡¼ ÁÖ¾îÁø µð·ºÅ丮·Î cd ¸¦ ½ÇÇàÇÕ´Ï´Ù. # ¿¹¸¦ µé¸é, # ftpget -h expo.lcs.mit.edu -d contrib -f xplaces.shar:xplaces.sh \ # -d ../pub/R3/fixes -c ~/fixes -m 'fix*' # ´Â expo.lcs.mit.edu ÀÇ ~ftp/contrib ¿¡¼ xplaces.shar ¸¦ ÇöÀç µð·ºÅ丮¿¡ # xplaces.sh ·Î °¡Á®¿À°í, ~ftp/pub/R3/fixes ¿¡¼ ¸ðµç ¼öÁ¤ ÆÄÀÏ('fix*')µéÀ» # Àڱ⠽ýºÅÛÀÇ ~/fixes µð·ºÅ丮·Î °¡Á®¿É´Ï´Ù. # ftp ¿¡¼ ÇØ´ç ¸í·É¾î°¡ ÁÖ¾îÁø ¼ø¼´ë·Î ½ÇÇàµÇ±â ¶§¹®¿¡ ¿É¼Ç ¼ø¼°¡ # Áß¿äÇÏ´Ù´Â °ÍÀº ¾ÆÁÖ È®½ÇÇÕ´Ï´Ù. # # Mark Moraes (moraes@csri.toronto.edu), Feb 1, 1989 # --> Docbook¿¡¼ ó¸®ÇÒ ¼ö ÀÖµµ·Ï ºÎµîÈ£ °ýÈ£¸¦ ¼Ò°ýÈ£·Î ¹Ù²Ù¾ú½À´Ï´Ù. # # --> ÀÌ·± ÁÖ¼®Àº HOWTO ÀúÀÚ°¡ µ¡ºÙÀÎ ÁÖ¼®ÀÔ´Ï´Ù. # PATH=/local/bin:/usr/ucb:/usr/bin:/bin # export PATH # --> ¿ø·¡ ½ºÅ©¸³Æ®¿¡ ÀÖ´ø À§ÀÇ µÎ ÁÙÀº ¾µµ¥¾øÀÌ µé¾î°¡ ÀÖ´Â °Í °°½À´Ï´Ù. TMPFILE=/tmp/ftp.$$ # --> ½ºÅ©¸³Æ®ÀÇ ÇÁ·Î¼¼½º ID($$)¸¦ °¡Áö°í Àӽà ÆÄÀÏÀ» ¸¸µé¾î ³À´Ï´Ù. SITE=`domainname`.toronto.edu # --> 'domainname' Àº 'hostname' °ú ºñ½ÁÇÕ´Ï´Ù. # --> Á» ´õ ÀϹÝÀûÀ¸·Î ¾²·Á¸é ÀÌ ºÎºÐÀº ÀÎÀÚ·Î ¹Þ¾Æ µéÀϼö ÀÖµµ·Ï ´Ù½Ã ÀÛ¼ºµÇ¾î¾ß ÇÕ´Ï´Ù. usage="»ç¿ë¹ý: $0 [-h remotehost] [-d remotedirectory]... [-f remfile:localfile]... \ [-c localdirectory] [-m filepattern] [-v]" ftpflags="-i -n" verbflag= set -f # -m ¿É¼Ç¿¡¼ ÆÄÀϸí È®ÀåÀ» Çϱâ À§Çؼ set x `getopt vh:d:c:m:f: $*` if [ $? != 0 ]; then echo $usage exit 1 fi shift trap 'rm -f ${TMPFILE} ; exit' 0 1 2 3 15 echo "user anonymous ${USER-gnu}@${SITE} > ${TMPFILE}" # --> Àοë(quote)À» Ãß°¡(º¹ÀâÇÑ echo ¹®¿¡¼´Â ÀÌ·¸°Ô Çϱ⠹ٶø´Ï´Ù) echo binary >> ${TMPFILE} for i in $* # --> ¸í·É¾î ÁÙ ÀÎÀÚ¸¦ ÆÄ½Ì do case $i in -v) verbflag=-v; echo hash >> ${TMPFILE}; shift;; -h) remhost=$2; shift 2;; -d) echo cd $2 >> ${TMPFILE}; if [ x${verbflag} != x ]; then echo pwd >> ${TMPFILE}; fi; shift 2;; -c) echo lcd $2 >> ${TMPFILE}; shift 2;; -m) echo mget "$2" >> ${TMPFILE}; shift 2;; -f) f1=`expr "$2" : "\([^:]*\).*"`; f2=`expr "$2" : "[^:]*:\(.*\)"`; echo get ${f1} ${f2} >> ${TMPFILE}; shift 2;; --) shift; break;; esac done if [ $# -ne 0 ]; then echo $usage exit 2 fi if [ x${verbflag} != x ]; then ftpflags="${ftpflags} -v" fi if [ x${remhost} = x ]; then remhost=prep.ai.mit.edu # --> ¿©·¯ºÐÀÌ ÁÁ¾ÆÇÏ´Â ftp »çÀÌÆ®·Î ¹Ù²ã ³ÖÀ¸¼¼¿ä fi echo quit >> ${TMPFILE} # --> ¸ðµç ¸í·É¾î´Â Àӽà ÆÄÀÏ·Î ÀúÀåµË´Ï´Ù. ftp ${ftpflags} ${remhost} < ${TMPFILE} # --> ÀÌÁ¦ ÀÓ½ÃÆÄÀÏ¿¡ ÀúÀåµÇ¾ú´ø ¸í·É¾îµéÀÌ ftp¿¡ ÀÇÇØ¼ ÇÑ ¹ø¿¡ 󸮵˴ϴÙ. rm -f ${TMPFILE} # --> ³¡À¸·Î, Àӽà ÆÄÀÏÀ» Áö¿ó´Ï´Ù(·Î±×¸¦ À§ÇØ ÇÊ¿äÇÏ´Ù¸é ÀúÀåÇÒ ¼öµµ ÀÖ½À´Ï´Ù). # --> µ¶ÀÚ¸¦ À§ÇÑ ¿¬½À¹®Á¦: # --> 1) ¿¡·¯ üũ¸¦ Ãß°¡Çϼ¼¿ä. # --> 2) ´Ù¸¥ Ưº°ÇÑ ±â´ÉµéÀ» ³Ö¾îº¸¼¼¿ä. |
+
Antek Sawicki°¡ ´ÙÀ½ ½ºÅ©¸³Æ®¸¦ Á¦°øÇØ ÁÖ¾ú½À´Ï´Ù. ÀÌ ½ºÅ©¸³Æ®´Â 3.3.1절¿¡¼ ³íÀÇµÈ ÀÎÀÚ ¹Ù²Ù±â ¿¬»êÀÚÀÇ ±ò²ûÇÑ »ç¿ë¹ýÀ» º¸¿©ÁÝ´Ï´Ù.
예 A-6. password: ¹«ÀÛÀ§·Î 8±ÛÀÚÀÇ ÆÐ½º¿öµå¸¦ ¸¸µé¾î ³»´Â ½ºÅ©¸³Æ®
#!/bin/bash # ¸î¸î ½Ã½ºÅÛ¿¡¼´Â #!/bin/bash2 ·Î ¹Ù²ãÁà¾ß µÉÁöµµ ¸ð¸¨´Ï´Ù. # # ¹«ÀÛÀ§·Î ÆÐ½º¿öµå ¸¸µé¾î ³»±â´Â Antek Sawicki <tenox@tenox.tc> °¡ # ÀÌ HOWTO¿¡¼ ¾µ ¼ö ÀÖµµ·Ï ÀνÉÁÁ°Ô Çã¶ôÇØ ÁÖ¾ú½À´Ï´Ù. # # ==> HOWTO ÀúÀÚ¿¡ ÀÇÇÑ ÁÖ¼® ==> MATRIX="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" LENGTH="8" # ==> ´õ ±ä ÆÐ½º¿öµå¸¦ ¿øÇÑ´Ù¸é 'LENGTH'¸¦ ´Ã¸®¼¼¿ä. while [ ${n:=1} -le $LENGTH ] # ==> := °¡ "±âº» ¹Ù²Ù±â" ¿¬»êÀÚ¿´´ø°Å ±â¾ïÇϽÃÁÒ? # ==> ±×·¡¼, ¸¸¾à¿¡ 'n'ÀÌ ÃʱâÈ ¾È µÆ´Ù¸é 1·Î ¼¼Æ®µË´Ï´Ù. do PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}" # ==> ¾ÆÁÖ ÈǸ¢Çѵ¥ ¾à°£ Çò°¥¸®³×¿ä. # ==> Á¦ÀÏ ¾ÈÂʺÎÅÍ »ìÆì º¾½Ã´Ù... # ==> ${#MATRIX} ´Â MATRIX ¹è¿ÀÇ ±æÀ̸¦ ¸®ÅÏÇÕ´Ï´Ù. # ==> $RANDOM%${#MATRIX} ´Â 1ºÎÅÍ MATRIX ±æÀ̱îÁö ¼ýÀÚ Áß¿¡¼ ¹«ÀÛÀ§ ¼ýÀÚ¸¦ ¸®ÅÏÇÕ´Ï´Ù. # ==> ${MATRIX:$(($RANDOM%${#MATRIX})):1} # ==> ´Â MATRIX ÀÓÀÇÀÇ À§Ä¡¿¡¼ ±æÀ̰¡ 1ÀÎ ¹®ÀÚ¿À» ¸®ÅÏÇÕ´Ï´Ù. # ==> 3.3.1ÀýÀÇ {var:pos:len} À§Ä¡ ¹Ù²Ù±â¿Í ¿¹Á¦µéÀ» Âü°íÇϼ¼¿ä. # ==> PASS=... °á°ú¸¦ ¹Ù·Î Àü PASS¿¡ µ¡ºÙÀÔ´Ï´Ù. # ==> ÀÌ °úÁ¤À» Á» ´õ È®½ÇÇÏ°Ô º¸°í ½Í´Ù¸é ´ÙÀ½ ÁÙÀÇ ÁÖ¼®À» Ç®¾î º¸¼¼¿ä. # ==> echo "$PASS" # ==> ·çÇÁ¸¦ ÇÑ ¹ø µ¹¶§¸¶´Ù PASS°¡ ÇÑ ±ÛÀÚ¾¿ ¸¸µé¾îÁö´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. let n+=1 # ==> ´ÙÀ½À» À§Çؼ 'n'À» Áõ°¡ done echo "$PASS" #== ÇÊ¿äÇÏ´Ù¸é ÆÄÀÏ·Î ÀçÁöÇâ. |
+
James R. Van Zandt°¡ ÀÌ ½ºÅ©¸³Æ®¸¦ Á¦°øÇØ ÁÖ¾ú½À´Ï´Ù. ÀÌ ½ºÅ©¸³Æ®´Â ³×ÀÓµå ÆÄÀÌÇÁ¸¦ »ç¿ëÇϴµ¥ ±×ÀÇ ¸»¿¡ µû¸£¸é "Á¤¸»·Î Àοë(quoting)°ú À̽ºÄÉÀÌÇÎ(escaping) ¿¬½À¿ë"À̾ú´ä´Ï´Ù.
예 A-7. fifo: ³×ÀÓµå ÆÄÀÌÇÁ¸¦ ½á¼ ¸ÅÀÏ ¹é¾÷ÇØ ÁÖ´Â ½ºÅ©¸³Æ®
#!/bin/bash # ==> James R. Van Zandt °¡ ÀÛ¼ºÇÏ°í ±×ÀÇ Çã¶ôÀ» ¹Þ¾Æ ÀÌ °÷¿¡¼ ¾²ÀÓ # ==> HOWTO ÀúÀÚ°¡ µ¡ºÙÀÎ ÁÖ¼® HERE=`uname -n` # ==> È£½ºÆ® À̸§ THERE=bilbo echo "$THERE ·Î `date +%r`¿¡ ¹é¾÷À» ½ÃÀÛÇÕ´Ï´Ù." # ==> `date +%r` Àº 12½Ã°£ Æ÷¸Ë(08:08:34 PM)À¸·Î ½Ã°£À» ¸®ÅÏÇÕ´Ï´Ù. # /pipe °¡ ÀÏ¹Ý ÆÄÀÏÀÌ ¾Æ´Ñ ÁøÂ¥ ÆÄÀÌÇÁÀΰÍÀ» È®½ÇÈ÷ Çϱâ À§Çؼ rm -rf /pipe mkfifo /pipe # ==> "/pipe"¶õ "³×ÀÓµå ÆÄÀÌÇÁ" ¸¸µé±â # ==> 'su xyz' ´Â ¸í·É¾î¸¦ "xyz"¶õ »ç¿ëÀÚ·Î ½ÇÇà½Ãŵ´Ï´Ù. # ==> 'ssh' ´Â secure shellÀ» ¶ç¿ó´Ï´Ù(¿ø°ÝÁö ·Î±×ÀΠŬ¶óÀ̾ðÆ®). su xyz -c "ssh $THERE \"cat >/home/xyz/backup/${HERE}-daily.tar.gz\" < /pipe"& cd / tar -czf - bin boot dev etc home info lib man root sbin share usr var >/pipe # ==> ³×ÀÓµå ÆÄÀÌÇÁ(/pipe)¸¦ ½á¼ ÇÁ·Î¼¼½º³¢¸® Åë½ÅÀ» ÇÔ # ==> 'tar/gzip' Àº /pipe·Î ¾²°í, 'ssh'Àº /pipe¿¡¼ ÀÐÀ½ # ==> ÃÖÁ¾ °á°ú´Â / ÀÌÇÏÀÇ ¸ÞÀÎ µð·ºÅ丮µéÀÌ ¹é¾÷ µË´Ï´Ù. # ==> Áö±Ý °°Àº »óȲ¿¡¼ "À͸íÀÇ ÆÄÀÌÇÁ"ÀÎ | ´ë½Å "³×ÀÓµå ÆÄÀÌÇÁ"¸¦ ¾´ °ÍÀÌ # ==> ¾î¶² ÀÌÁ¡ÀÌ ÀÖÀ»±î¿ä? # ==> ÀÍ¸í ÆÄÀÌÇÁµµ Á¦´ë·Î µ¿ÀÛÇÒ±î¿ä? exit 0 |
+
Jordi Sanfeliu´Â ÀÌ ±Ù»çÇÑ tree ½ºÅ©¸³Æ®¸¦ ¾²µµ·Ï Çã¶ôÇØ ÁÖ¾ú½À´Ï´Ù.
예 A-8. tree: µð·ºÅ丮 ±¸Á¶¸¦ º¸¿©ÁÖ´Â ½ºÅ©¸³Æ®
#!/bin/sh # @(#) tree 1.1 30/11/95 by Jordi Sanfeliu # email: mikaku@arrakis.es # # Initial version: 1.0 30/11/95 # Next version : 1.1 24/02/97 ½Éº¼¸¯ ¸µÅ©µµ Áö¿ø # Patch by : Ian Kjos, ãÀ» ¼ö ¾ø´Â µð·ºÅ丮 Áö¿ø # email: beth13@mail.utexas.edu # # Tree ´Â µð·ºÅ丮 Æ®¸®¸¦ º¸¿©ÁÖ´Â ÅøÀÔ´Ï´Ù.(È®½ÇÈ÷ º¸¿©ÁÝ´Ï´Ù :-) ) # # ==> 'Tree' ´Â ¿øÀúÀÚ, Jordi SanfeliuÀÇ Çã¶ôÀ» ¹Þ¾Æ¼ ¿©±â¿¡ ¾²¿©Á³½À´Ï´Ù. # ==> HOWTO ÀúÀÚ°¡ µ¡ºÙÀÎ ÁÖ¼® search () { for dir in `echo *` # ==> `echo *` ´Â ÇöÀç µð·ºÅ丮ÀÇ ¸ðµç ÆÄÀϵéÀ» ÇÑ ÁÙ¿¡ Ç¥½ÃÇØ ÁÝ´Ï´Ù. # ==> for dir in * ¿Í °°½À´Ï´Ù. do if [ -d $dir ] ; then # ==> µð·ºÅ丮¶ó¸é(-d)... zz=0 # ==> µð·ºÅ丮 ±íÀ̸¦ °®°í ÀÖÀ» Àӽà º¯¼ö while [ $zz != $deep ] # ¾ÈÂÊ ·çÇÁÀÎÁö do echo -n "| " # ==> ¼öÁ÷ ¿¬°áÀÚ¸¦ Ç¥½Ã # ==> Á¤·Ä(indent)À» À§ÇÑ ¶óÀÎ ÇÇµå ¾ø´Â µÎ°³ÀÇ ºó Ä zz=`expr $zz + 1` # ==> zz ¸¦ Áõ°¡. done if [ -L $dir ] ; then # ==> µð·ºÅ丮°¡ ½Éº¼¸¯ ¸µÅ©¶ó¸é... echo "+---$dir" `ls -l $dir | sed 's/^.*'$dir' //'` # ==> ¼öÆò ¿¬°áÀÚ¿Í µð·ºÅ丮 À̸§À» Ç¥½ÃÇÏÁö¸¸ ±ä Ç¥½Ã(long listing) # ==> Çü½ÄÀÇ ³¯Â¥/½Ã°£ ºÎºÐÀ» Áö¿ò else echo "+---$dir" # ==> ¼öÆò ¿¬°áÀÚ¿Í µð·ºÅ丮 À̸§À» Ç¥½Ã if cd $dir ; then # ==> ÇÏÀ§ µð·ºÅ丮·Î µé¾î°¥ ¼ö ÀÖÀ¸¸é... deep=`expr $deep + 1` # ==> ±íÀ̸¦ Áõ°¡ search # Àç±Í ÇÔ¼ö ;-) # ==> ÀÚ±â ÀÚ½ÅÀ» ºÎ¸£´Â ÇÔ¼ö numdirs=`expr $numdirs + 1` # ==> µð·ºÅ丮 ¼ýÀÚ¸¦ Áõ°¡ fi fi fi done cd .. # ==> ºÎ¸ð µð·ºÅ丮·Î ¿Ã¶ó°¨ if [ $deep ] ; then # ==> depth = 0 À̸é (ÂüÀ» ¸®ÅÏ)... swfi=1 # ==> Ž»öÀÌ ³¡³µÀ½À» ¾Ë¸®´Â Ç÷¡±×¸¦ ¼¼Æ® fi deep=`expr $deep - 1` # ==> ±íÀ̸¦ °¨¼Ò } # - ¸ÞÀÎ - if [ $# = 0 ] ; then cd `pwd` # ==> ÀÎÀÚ¾øÀÌ ºÒ·È´Ù¸é ÇöÀç µð·ºÅ丮¿¡¼ ½ÃÀÛ else cd $1 # ==> ¾Æ´Ï¶ó¸é ÁÖ¾îÁø µð·ºÅ丮·Î À̵¿ fi echo "½ÃÀÛ µð·ºÅ丮 = `pwd`" swfi=0 # ==> Ž»ö Á¾·á Ç÷¡±× deep=0 # ==> º¸¿©ÁÙ ±íÀÌ numdirs=0 zz=0 while [ $swfi != 1 ] # Ç÷¡±×°¡ ¼¼Æ® ¾È µÈ µ¿¾È¿¡... do search # ==> º¯¼öµéÀ» ÃʱâÈÇϰí ÇÔ¼ö¸¦ ºÎ¸§ done echo "Àüü µð·ºÅ丮 ¼ö = $numdirs" # ==> µ¶Àڵ鿡°Ô µµÀü: ÀÌ ½ºÅ©¸³Æ®°¡ Á¤È®È÷ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö ¾Ë¾Æ³» º¸¼¼¿ä. |