ÀÌ ½ºÅ©¸³Æ®µéÀº ÀÌ ¹®¼ÀÇ ÁÖÁ¦¿¡ µü µé¾î ¸ÂÁö´Â ¾ÊÁö¸¸ ½© ÇÁ·Î±×·¡¹Ö Å×Å©´ÐÀÇ Àç¹Õ´Â ºÎºÐµéÀ» º¸¿©ÁÝ´Ï´Ù. ¶Ç, ¾ÆÁÖ ¾µ¸¸ÇÕ´Ï´Ù. ºÐ¼®ÇØ º¸°í ½ÇÇà½ÃÄÑ º¸¸é¼ Àç¹Ì¸¦ ´À²¸ º¸¼¼¿ä.
예 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"
# ==> µ¶Àڵ鿡°Ô µµÀü: ÀÌ ½ºÅ©¸³Æ®°¡ Á¤È®È÷ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö ¾Ë¾Æ³» º¸¼¼¿ä. |