4Àå. Ư¼ö ¹®ÀÚ

½© ½ºÅ©¸³Æ®¿¡¼­ ¾²À̴ Ư¼ö ¹®ÀÚµé

#

ÁÖ¼®. #À¸·Î ½ÃÀÛÇÏ´Â ÁÙ(#!¸¸ »©°í)Àº ÁÖ¼®ÀÔ´Ï´Ù.

# ÀÌ ÁÙÀº ÁÖ¼®ÀÔ´Ï´Ù.

¸í·É¾î ³¡¿¡ ÁÖ¼®ÀÌ ³ª¿Ã ¼öµµ ÀÖ½À´Ï´Ù.

echo "µÚ¿¡ ÁÖ¼®ÀÌ ³ª¿É´Ï´Ù." # ÁÖ¼®ÀÌ ¿©±â¿¡.

Á٠ùºÎºÐ¿¡ ³ª¿À´Â °ø¹é¹®ÀÚµÚ¿¡µµ ÁÖ¼®À» ¾µ ¼ö ÀÖ½À´Ï´Ù.

	# ÀÌ ÁÖ¼® ¾Õ¿¡ ÅÇÀÌ ÀÖ½À´Ï´Ù.

°æ°í

ÇÑ ÁÙ¿¡¼­ ÁÖ¼®µÚ¿¡ ¸í·É¾î°¡ ¿Ã ¼ö´Â ¾ø½À´Ï´Ù. ÁÖ¼®°ú "½ÇÁ¦ ÄÚµå"¸¦ ±¸ºÐÇÒ ¹æ¹ýÀÌ ¾ø±â ¶§¹®¿¡ ´Ù¸¥ ¸í·É¾î´Â »õ·Î¿î ÁÙ¿¡ ¾²¼¼¿ä.

Âü°í: ´ç¿¬ÇÑ À̾߱âÁö¸¸, echo ¹®¿¡¼­ À̽ºÄÉÀÌÇÁµÈ #Àº ÁÖ¼®ÀÇ ½ÃÀÛÀ» ³ªÅ¸³»Áö ¾Ê½À´Ï´Ù. ºñ½ÁÇÏ°Ô ¸î¸î ¸Å°³º¯¼ö ġȯÀ̳ª »ê¼ú »ó¼ö È®Àå¿¡ ³ª¿À´Â #µµ ÁÖ¼®À» ³ªÅ¸³»Áö ¾Ê½À´Ï´Ù.
echo "ÀÌ # Àº ÁÖ¼®ÀÇ ½ÃÀÛÀÌ ¾Æ´Õ´Ï´Ù."
echo 'ÀÌ # Àº ÁÖ¼®ÀÇ ½ÃÀÛÀÌ ¾Æ´Õ´Ï´Ù.'
echo ÀÌ \# Àº ÁÖ¼®ÀÇ ½ÃÀÛÀÌ ¾Æ´Õ´Ï´Ù.
echo ÀÌ # Àº ÁÖ¼®ÀÇ ½ÃÀÛÀ» ³ªÅ¸³À´Ï´Ù.

echo ${PATH#*:}       # ¸Å°³º¯¼ö ġȯÀ¸·Î, ÁÖ¼®ÀÌ ¾Æ´ÏÁÒ.
echo $(( 2#101011 ))  # Áø¹ý º¯È¯, ÁÖ¼®ÀÌ ¾Æ´Õ´Ï´Ù.

# Thanks, S.C.
Ç¥ÁØ Äõ¿ìÆÃ(quoting)°ú À̽ºÄÉÀÌÇÁ(escape) ¹®ÀÚµéÀÎ (" ' \) µéÀº # À» À̽ºÄÉÀÌÇÁ ½Ãų ¼ö ÀÖ½À´Ï´Ù.

¸î¸î ÆÐÅÏ ¸ÅĪ ¿¬»êÀÚµµ #À» »ç¿ëÇÕ´Ï´Ù.

;

¸í·É¾î ±¸ºÐÀÚ. [¼¼¹ÌÄÝ·Ð] µÎ °³ ÀÌ»óÀÇ ¸í·É¾î¸¦ ÇÑ ÁÙ¿¡¼­ °°ÀÌ ¾µ ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù.

echo hello; echo there

";"´Â °¡²û À̽ºÄÉÀÌÇÁ ½Ãų ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.

;;

case ¿É¼Ç Á¾·áÀÚ. [ÀÌÁß ¼¼¹ÌÄÝ·Ð]

case "$variable" in
abc)  echo "$variable = abc" ;;
xyz)  echo "$variable = xyz" ;;
esac

.

"Á¡"(dot) ¸í·É¾î. [¸¶Ä§Ç¥] source ¸í·É¾î¿Í µ¿ÀÏÇÕ´Ï´Ù(¿¹ 11-14 Âü°í). ÀÌ ¸í·É¾î´Â bash ³»Àå ¸í·É(builtin)ÀÔ´Ï´Ù.

"Á¡"(dot)ÀÌ Á¤±Ô Ç¥Çö½Ä(reqular expression)À¸·Î Çؼ®µÉ ¶§´Â, ÇÑ °³ÀÇ ¹®ÀÚ¿Í ÀÏÄ¡µË´Ï´Ù.

¶Ç´Ù¸¥ ¹®¸Æ¿¡¼­´Â ±×³É ls ¶ó°í ÃÆÀ» ¶§, º¸ÀÌÁö ¾Ê´Â "¼û±è" ÆÄÀÏÀ» ³ªÅ¸³»´Â ÆÄÀϸí Á¢µÎ¾î·Îµµ ¾²ÀÔ´Ï´Ù.
bash$ touch .hidden-file
bash$ ls -l	      
total 10
 -rw-r--r--    1 bozo      4034 Jul 18 22:04 data1.addressbook
 -rw-r--r--    1 bozo      4602 May 25 13:58 data1.addressbook.bak
 -rw-r--r--    1 bozo       877 Dec 17  2000 employment.addressbook

bash$ ls -al	      
total 14
 drwxrwxr-x    2 bozo  bozo      1024 Aug 29 20:54 ./
 drwx------   52 bozo  bozo      3072 Aug 29 20:51 ../
 -rw-r--r--    1 bozo  bozo      4034 Jul 18 22:04 data1.addressbook
 -rw-r--r--    1 bozo  bozo      4602 May 25 13:58 data1.addressbook.bak
 -rw-r--r--    1 bozo  bozo       877 Dec 17  2000 employment.addressbook
 -rw-rw-r--    1 bozo  bozo         0 Aug 29 20:54 .hidden-file
	      

"

ºÎºÐ Äõ¿ìÆÃ(partial quoting). [ÀÌÁß Äõ¿ìÆ®] "¹®ÀÚ¿­" À̶ó°í ÇÏ¸é ½©ÀÌ ¹®ÀÚ¿­¿¡ µé¾î ÀÖ´Â °ÅÀÇ ´ëºÎºÐÀÇ Æ¯¼ö ¹®ÀÚ¸¦ Çؼ®ÇÏÁö ¸øÇϵµ·Ï ¸·¾ÆÁÝ´Ï´Ù. 6ÀåÀ» Âü°íÇϼ¼¿ä.

'

¿ÏÀü Äõ¿ìÆÃ(full quoting). [´ÜÀÏ Äõ¿ìÆ®] '¹®ÀÚ¿­' À̶ó°í ÇÏ¸é ½©ÀÌ ¹®ÀÚ¿­¿¡ µé¾î ÀÖ´Â ¸ðµç Ư¼ö ¹®ÀÚ¸¦ Çؼ®ÇÏÁö ¸øÇϵµ·Ï ¸·¾ÆÁÝ´Ï´Ù. "º¸´Ù ´õ °­ÇÑ ÇüÅÂÀÇ Äõ¿ìÆÃÀÔ´Ï´Ù. 6ÀåÀ» Âü°íÇϼ¼¿ä.

,

ÄÞ¸¶ ¿¬»êÀÚ. ÄÞ¸¶ ¿¬»êÀÚ ´Â ¿¬¼ÓÀûÀÎ »ê¼ú ¿¬»êÀ» ÇÏ·Á°í ÇÒ ¶§ ¾²ÀÔ´Ï´Ù. ¸ðµç °è»êÀÌ ÀÌ·ç¾îÁøµÚ, ¸¶Áö¸·¿¡ °è»êµÈ °á°ú¸¸ ¸®Åϵ˴ϴÙ.
let "t2 = ((a = 9, 15 / 3))"  # "a"¸¦ ¼¼Æ®ÇÏ°í "t2"¸¦ °è»ê.

\

À̽ºÄÉÀÌÇÁ(escape). [¿ª½½·¡½¬] \X¶ó°í Çϸé X ¹®ÀÚ¸¦ "À̽ºÄÉÀÌÇÁ" ½ÃÅ°°í, 'X' ¶ó°í "Äõ¿ìÆÃ" ½ÃÅ°´Â °Í°ú µ¿ÀÏÇÑ È¿°ú¸¦ °®½À´Ï´Ù. \´Â "³ª 'ÀÌ ¹®ÀÚ ±×´ë·Î Çؼ®µÇµµ·Ï Äõ¿ìÆ® ÇÒ ¶§ ¾²ÀÏ ¼öµµ ÀÖ½À´Ï´Ù.

À̽ºÄÉÀÌÇÁµÈ ¹®Àڵ鿡 ´ëÇÑ ¼³¸íÀÌ 6Àå¿¡ ÀÚ¼¼ÇÏ°Ô µÇ¾î ÀÖ½À´Ï´Ù.

/

ÆÄÀÏ¸í °æ·Î ±¸ºÐÀÚ. [½½·¡½¬] ÆÄÀÏ¸í¿¡ µîÀåÇÏ´Â °¢ ¿ä¼ÒµéÀ» ±¸ºÐÇØ ÁÝ´Ï´Ù(/home/bozo/projects/Makefile ó·³).

³ª´©±â »ê¼ú ¿¬»êÀÚµµ µË´Ï´Ù.

`

¸í·É¾î ġȯ(command substitution). [¹éƽ(backticks)] `¸í·É¾î` ¶ó°í ÇÏ¸é ¸í·É¾îÀÇ °á°ú¸¦ º¯¼ö°ªÀ¸·Î ¼³Á¤ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ´Ù¸¥ ¸»·Î backticks³ª ¿ªÄõ¿ìÆ®(backquote)¶ó°íµµ ÇÕ´Ï´Ù.

:

³Î ¸í·É¾î(null command). ½©ÀÇ "NOP"(no op, ¾Æ¹« µ¿ÀÛµµ ¾ÊÇÔ)¿¡ ÇØ´çÇÕ´Ï´Ù. ½© ³»Àå ¸í·ÉÀÎ trueÀÇ µ¿ÀǾî¶ó°íµµ º¼ ¼ö ÀÖ½À´Ï´Ù. ÁÖÀÇÇÒ Á¡Àº :Àº bash ³»Àå ¸í·ÉÀ̱⠶§¹®¿¡ Á¾·á »óÅ´ 0À̶ó´Â °ÍÀÔ´Ï´Ù.

:
echo $?   # 0

¹«ÇÑ ·çÇÁ:

while :
do
   ù¹ø° ¿¬»ê 
   µÎ¹ø° ¿¬»ê
   ...
   n¹ø° ¿¬»ê
done

# ÀÌ´Â ´ÙÀ½°ú °°½À´Ï´Ù:
#    while true
#    do
#      ...
#    done

if/then Å×½ºÆ® ¹®ÀÇ Placeholder:

if condition
then :   # ¾Æ¹«°Íµµ ¾È ÇÏ°í °è¼Ó ÁøÇà
else
   ¾î¶² ÀÛ¾÷
fi

ÀÌÁø ¿¬»êÀÇ placeholder Á¦°ø, ¿¹ 8-1 ¿Í µðÆúÆ® ¸Å°³º¯¼ö Âü°í.

: ${username=`whoami`}
# "username"ÀÌ ¸í·É¾î³ª ³»Àå ¸í·É¾î°¡ ¾Æ´Ñ °æ¿ì¿¡
# ${username=`whoami`}   ¿¡ : ¾øÀÌ ¾²¸é ¿¡·¯°¡ ³³´Ï´Ù.

here document°¡ ³ª¿Ã °÷ÀÇ placeholder¸¦ Á¦°ø. ¿¹ 17-8 Âü°í.

¸Å°³º¯¼ö ġȯÀ» ½á¼­ º¯¼öÀÇ ¹®ÀÚ¿­ Æò°¡(¿¹ 9-10 Âü°í).
: ${HOSTNAME?} ${USER?} ${MAIL?}
# ÇʼöÀûÀΠȯ°æº¯¼öÁß Çϳª¶óµµ ¼¼Æ®°¡ ¾È µÅ ÀÖ´Ù¸é ¿¡·¯¸¦ Ãâ·Â.

º¯¼ö È®Àå/¹®ÀÚ¿­ Á¶°¢ ´ëÄ¡(Variable expansion / substring replacement).

ÀçÁöÇâ ¿¬»êÀÚÀÎ >°ú °°ÀÌ ½á¼­ ƯÁ¤ ÆÄÀÏÀÇ ÆÛ¹Ì¼Ç º¯°æ ¾øÀÌ Å©±â¸¦ 0À¸·Î ¸¸µé¾î ÁÝ´Ï´Ù. ÆÄÀÏÀÌ ¾ø¾ú´Ù¸é »õ·Î ¸¸µé¾î ³À´Ï´Ù.
: > data.xxx   # "data.xxx"Àº ÀÌÁ¦ ºó ÆÄÀÏÀÔ´Ï´Ù.	      

# cat /dev/null >data.xxx ¶ó°í ÇÑ °Í°ú µ¿ÀÏÇÏÁö¸¸
# ":"°¡ ³»Àå ¸í·É¾îÀ̱⠶§¹®¿¡ »õ ÇÁ·Î¼¼½º¸¦ Æ÷Å©(fork) ½ÃÅ°Áö ¾Ê½À´Ï´Ù.
¿¹ 12-11 Âü°í.

¿ª½Ã ÀçÁöÇâ ¿¬»êÀÚÀÎ >>°ú °°ÀÌ ¾²¸é ÆÄÀÏÀÇ ¾ï¼¼½º/º¯°æ ½Ã°£À» ¾÷µ¥ÀÌÆ® ÇØ ÁÝ´Ï´Ù(: >> new_file). ÆÄÀÏÀÌ ¾ø¾ú´Ù¸é »õ·Î ¸¸µé¾î ³À´Ï´Ù. touch¿Í °°½À´Ï´Ù.

Âü°í: º¸Åë ÆÄÀÏ¿¡¸¸ »ç¿ëÇÏ°í ÆÄÀÌÇÁ³ª ½Éº¼¸¯ ¸µÅ©, Ư¼ö ÆÄÀÏ¿¡´Â »ç¿ëÇÏÁö ¸¶¼¼¿ä.

±ÇÀåÇÏ´Â ¹æ¹ýÀº ¾Æ´Õ´Ï´Ù¸¸, ÁÖ¼®ÀÇ ½ÃÀÛÀ» ³ªÅ¸³¾ ¶§ ¾µ ¼öµµ ÀÖ½À´Ï´Ù. ÁÖ¼®¿¡ #À» ¾²°Ô µÇ¸é ±× ÁÙÀÇ ³ª¸ÓÁö ºÎºÐ¿¡ ´ëÇؼ­ ¿¡·¯ È®ÀÎÀ» ¾È Çϱ⠶§¹®¿¡ ¾î¶² ¹®Àåµµ ¿Ã ¼ö ÀÖÁö¸¸ :ÀÇ °æ¿ì´Â ´Ù¸¨´Ï´Ù.
: ÀÌ ÁÖ¼®Àº ¿¡·¯¸¦ ¹ß»ý½Ãŵ´Ï´Ù, ( if [ $x -eq 3] ).

":"´Â ¶ÇÇÑ /etc/passwd¿Í $PATH º¯¼ö¿¡¼­ ÇÊµå ±¸ºÐÀڷεµ ¾²ÀÔ´Ï´Ù.
bash$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/sbin:/usr/sbin:/usr/games

!

Å×½ºÆ®³ª Á¾·á »óÅÂÀÇ Àǹ̸¦ ¹Ý´ë³ª ºÎÁ¤ÇØ ÁÝ´Ï´Ù. ! ¿¬»êÀÚ´Â ÇØ´ç ¸í·É¾îÀÇ Á¾·á »óŸ¦ ¹Ý´ë·Î ÇØ ³õ½À´Ï´Ù(¿¹ 3-2 Âü°í). ¶ÇÇÑ, Å×½ºÆ® ¿¬»êÀÚÀÇ Àǹ̵µ °Å²Ù·Î ¹Ù²ã Áִµ¥ ¿¹¸¦ µé¾î, "equal"( = )À» "not-equal" ( != )·Î Çؼ®ÇÏ°Ô ÇØ ÁÝ´Ï´Ù. ! ¿¬»êÀÚ´Â bash Å°¿öµåÀÔ´Ï´Ù.

´Ù¸¥ »óȲ¿¡¼­´Â °£Á¢ º¯¼ö ÂüÁ¶ÀÇ Àǹ̷εµ ¾²ÀÔ´Ï´Ù.

*

¿ÍÀϵå Ä«µå. [º°Ç¥] * ¹®ÀÚ´Â Á¤±Ô Ç¥Çö½Ä¿¡¼­ 0°³ ÀÌ»óÀÇ ¹®ÀÚ¸¦ ³ªÅ¸³»´Â °Í°ú µ¿ÀÏÇÏ°Ô ÆÄÀϸí È®Àå(globbing)¿¡¼­ "¿ÍÀϵå Ä«µå"ó·³ ¾²ÀÔ´Ï´Ù.

ÀÌÁß º°Ç¥, **, ´Â ¼öÇÐÀÇ ´©½Â(Òéã«, exponentiation) ¿¬»êÀÚÀÔ´Ï´Ù.

?

¿ÍÀϵå Ä«µå(ÇϳªÀÇ ¹®ÀÚ). [¹°À½Ç¥] ? ¹®ÀÚ´Â È®Àå Á¤±Ô Ç¥Çö½Ä¿¡¼­ ÇÑ ¹®ÀÚ¸¦ ³ªÅ¸³»´Â °Í°ú ¸¶Âù°¡Áö·Î ±Û·Îºù(globbing)¿¡¼­ ÆÄÀϸí È®ÀåÀ» ³ªÅ¸³»´Â ÇÑ ¹®ÀÚÂ¥¸® "¿ÍÀϵå Ä«µå"ÀÇ ¿ªÇÒÀ» ÇÕ´Ï´Ù.

?Àº ÀÌÁß ¼Ò°ýÈ£¿¡¼­ C ½ºÅ¸ÀÏÀÇ »ïÁß ¿¬»êÀڷεµ ¾²ÀÔ´Ï´Ù. ¿¹ 9-22¸¦ Âü°íÇϼ¼¿ä.

$

º¯¼ö ġȯ.
var1=5
var2=23skidoo

echo $var1     # 5
echo $var2     # 23skidoo

$Àº Á¤±Ô Ç¥Çö½Ä¿¡¼­ ÁÙÀÇ ³¡À» ³ªÅ¸³À´Ï´Ù.

${}
$*, $@
()

¸í·É¾î ±×·ì.
(a=hello; echo $a)

Áß¿ä: ¼Ò°ýÈ£·Î ¹­ÀÎ ¸í·É¾îµéÀº ¼­ºê½©¿¡¼­ µ¿ÀÛÇÕ´Ï´Ù.

½ºÅ©¸³Æ®ÀÇ ´Ù¸¥ °÷¿¡¼­´Â ¼Ò°ýÈ£ ¾ÈÀÇ ¼­ºê½©¿¡ µé¾î ÀÖ´Â º¯¼öµéÀ» º¼ ¼ö°¡ ¾ø½À´Ï´Ù. ºÎ¸ð ÇÁ·Î¼¼½ºÀÎ ½ºÅ©¸³Æ®´Â ÀÚ½Ä ÇÁ·Î¼¼½º(¼­ºê½©)¿¡¼­ ¸¸µé¾îÁø º¯¼ö¸¦ ÀÐÀ» ¼ö°¡ ¾ø½À´Ï´Ù.
a=123
( a=321; )	      

echo "a = $a"   # a = 123
# ¼Ò°ýÈ£ ¾ÈÀÇ "a" ´Â Áö¿ªº¯¼öó·³ µ¿ÀÛÇÕ´Ï´Ù.

¹è¿­ ÃʱâÈ­.
Array=(element1 element2 element3)

{xxx,yyy,zzz,...}

Áß°ýÈ£ È®Àå.
grep Linux file*.{txt,htm*}

# "fileA.txt", "file2.txt", "fileR.html", "file-87.htm" µîµîÀÇ ÆÄÀÏ¿¡¼­
# "Linux"°¡ µé¾î ÀÖ´Â °ÍÀ» ¸ðµÎ ãÀ½

¸í·É¾î´Â Áß°ýÈ£¾ÈÀÇ ÄÞ¸¶·Î ºÐ¸® ÁöÁ¤µÈ ÆÄÀÏ ½ºÆå¿¡ ¸Â°Ô µ¿ÀÛÇÒ °ÍÀÔ´Ï´Ù. [1] ÆÄÀϸí È®Àå(globbing)Àº Áß°ýÈ£ ¾È¿¡¼­ ÁöÁ¤µÈ ÆÄÀÏ ½ºÆå¿¡ Àû¿ëµË´Ï´Ù.

°æ°í

ºó Ä­Àº Äõ¿ìÆ®(quote)³ª À̽ºÄÉÀÌÇÁ(escape)µÇÁö ¾Ê°í Áß°ýÈ£¿¡¼­ ¾²ÀÏ ¼ö ¾ø½À´Ï´Ù.

echo {file1,file2}\ :{\ A," B",' C'}

file1 : A file1 : B file1 : C file2 : A file2 : B file2 : C

{}

ÄÚµå ºí·°. [Áß°ýÈ£] "ÀζóÀÎ ±×·ì"À̶ó°íµµ ºÎ¸£´Â Áß°ýÈ£ ÇÑ ½ÖÀº ½ÇÁ¦·Î À͸íÀÇ ÇÔ¼ö¸¦ ¸¸µé¾î ³À´Ï´Ù¸¸ º¸ÅëÀÇ ÇÔ¼ö¿Í´Â ´Þ¸® ÄÚµå ºí·° ¾ÈÀÇ º¯¼öµéÀ» ½ºÅ©¸³Æ®ÀÇ ´Ù¸¥ °÷¿¡¼­ º¼ ¼ö°¡ ÀÖ½À´Ï´Ù.

bash$ { local a; a=123; }
bash: local: can only be used in a function
	      

a=123
{ a=321; }
echo "a = $a"   # a = 321   (ÄÚµå ºí·°¿¡¼­ ¼³Á¤µÈ °ª)

# Thanks, S.C.

Áß°ýÈ£·Î ¹­ÀÎ ÄÚµå ºí·°Àº I/O ÀçÁöÇâµÇ°Å³ª ÀçÁöÇâÀ» ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù.

¿¹ 4-1. ÄÚµå ºí·°°ú I/O ÀçÁöÇâ

#!/bin/bash
# /etc/fstab Àбâ

File=/etc/fstab

{
read line1
read line2
} < $File

echo "$File ÆÄÀÏÀÇ Ã¹¹ø° ÁÙ:"
echo "$line1"
echo
echo "$File ÆÄÀÏÀÇ µÎ¹ø° ÁÙ:"
echo "$line2"

exit 0

¿¹ 4-2. ÄÚµå ºí·°ÀÇ °á°ú¸¦ ÆÄÀÏ·Î ÀúÀåÇϱâ

#!/bin/bash
# rpm-check.sh

#  rpm ÆÄÀÏ¿¡ ´ëÇؼ­ ¼³Ä¡°¡´É¿©ºÎ, ¼³Ä¡Á¤º¸, ¼³Ä¡¸ñ·Ï¿¡ ´ëÇؼ­ Äõ¸®¸¦ ÇÏ°í,
#+ ±× °á°ú¸¦ ÆÄÀÏ·Î ÀúÀåÇÕ´Ï´Ù.
# 
# ÀÌ ½ºÅ©¸³Æ®´Â ÄÚµå ºí·°ÀÌ ¾î¶»°Ô ¾²ÀÌ´ÂÁö º¸¿©ÁÝ´Ï´Ù.

SUCCESS=0
E_NOARGS=65

if [ -z "$1" ]
then
  echo "»ç¿ë¹ý: `basename $0` rpm-file"
  exit $E_NOARGS
fi  

{ 
  echo
  echo "¾ÆÄ«À̺ê Á¤º¸:"
  rpm -qpi $1       # ¼³Ä¡Á¤º¸ Äõ¸®.
  echo
  echo "¾ÆÄ«ÀÌºê ¸ñ·Ï:"
  rpm -qpl $1       # ¼³Ä¡¸ñ·Ï Äõ¸®.
  echo
  rpm -i --test $1  # ¼³Ä¡°¡´É¿©ºÎ Äõ¸®.
  if [ "$?" -eq $SUCCESS ]
  then
    echo "$1 ´Â ¼³Ä¡µÉ ¼ö ÀÖ½À´Ï´Ù."
  else
    echo "$1 ´Â ¼³Ä¡µÉ ¼ö ¾ø½À´Ï´Ù."
  fi  
  echo
} > "$1.test"       # ºí·°ÀÇ ¸ðµç Ãâ·ÂÀ» ÆÄÀÏ·Î ÀçÁöÇâ.

echo "$1.test ÆÄÀÏ¿¡ rpm Å×½ºÆ®ÀÇ °á°ú°¡ ÀúÀåµÇ¾ú½À´Ï´Ù."

# ¿©±â¼­ ¾²ÀÎ ¿É¼Ç¿¡ ´ëÇÑ ¼³¸íÀº ¸Ç ÆäÀÌÁö¸¦ Âü°íÇϼ¼¿ä.

exit 0

Âü°í: À§¿¡¼­ ¼³¸íÇß´ø (¼Ò°ýÈ£)·Î ¹­ÀÎ ¸í·É¾î ±×·ì°ú´Â ´Þ¸® {Áß°ýÈ£}·Î ¹­ÀÎ ÄÚµå ºí·°Àº º¸ÅëÀº ¼­ºê½©À» ¶ç¿ìÁö ¾Ê½À´Ï´Ù.. [2]

{} \;

°æ·Î¸í. ÁÖ·Î find¿¡¼­ ¾²ÀÌ°í, ½© ³»Àå ¸í·ÉÀÌ ¾Æ´Õ´Ï´Ù.

Âü°í: ";" ´Â find ¸í·É¾îÀÇ -exec ¿É¼ÇÀÌ ¿©·¯°³ ³ª¿Ã ¶§ ³¡À» ³ªÅ¸³»±â ¶§¹®¿¡ ½©ÀÌ Çؼ®ÇÏ´Â °ÍÀ» ¸·±â À§Çؼ­ À̽ºÄÉÀÌÇÁ ½ÃÄÑÁà¾ß µË´Ï´Ù.

[ ]

Å×½ºÆ®.

[ ] »çÀÌÀÇ Å×½ºÆ®¹®. [´Â ½© ³»Àå ¸í·ÉÀÎ test¿Í µ¿ÀǾî·Î¼­, ¿ÜºÎ ¸í·É¾îÀÎ /usr/bin/testÀÇ ¸µÅ©°¡ ¾Æ´Õ´Ï´Ù.

[[ ]]

Å×½ºÆ®.

[[ ]] »çÀÌÀÇ Å×½ºÆ®¹®(½© Å°¿öµå).

´õ ÀÚ¼¼ÇÑ »çÇ×Àº [[ ... ]]À» Âü°íÇϼ¼¿ä.

(( ))

Á¤¼ö È®Àå.

(( ))¿¡ µé¾î ÀÖ´Â Á¤¼ö Ç¥Çö½ÄÀ» È®ÀåÇÏ°í Æò°¡ÇØ ÁÝ´Ï´Ù.

´õ ÀÚ¼¼ÇÑ ¼³¸íÀº (( ... ))¸¦ Âü°íÇϼ¼¿ä.

> >& >> <

scriptname >filename Àº scriptnameÀÇ °á°ú¸¦ filenameÀ¸·Î ÀçÁöÇâ½Ãŵ´Ï´Ù. ÀÌ ¶§, fielnameÀÌ ÀÌ¹Ì ÀÖ´Ù¸é µ¤¾î ½áÁý´Ï´Ù.

command >&2´Â commandÀÇ °á°ú¸¦ Ç¥ÁØ¿¡·¯·Î ÀçÁöÇâ ½Ãŵ´Ï´Ù.

scriptname >>filenameÀº scriptnameÀÇ °á°ú¸¦ filename À¸·Î µ¡ºÙÀÔ´Ï´Ù. ÀÌ ¶§, filenameÀÌ ¾ø´Ù¸é »õ·Î ¸¸µì´Ï´Ù.

ÇÁ·Î¼¼½º ġȯ(process substitution).

(command)>

<(command)

"<" ¿Í ">" ¹®ÀÚ´Â ´Ù¸¥ ¹®¸Æ¿¡¼­ ¹®ÀÚ¿­ ºñ±³ ¿¬»êÀÚ·Î µ¿ÀÛÇÕ´Ï´Ù.

¶Ç ´Ù¸¥ ¹®¸Æ¿¡¼­´Â Á¤¼ö ºñ±³ ¿¬»êÀÚ·Î µ¿ÀÛÇÕ´Ï´Ù. ¿¹ 12-6¸¦ Âü°íÇϼ¼¿ä.

<<

here document¿¡¼­ ¾²ÀÌ´Â ÀçÁöÇâ.

|

ÆÄÀÌÇÁ. ¿©·¯ ¸í·É¾îµéÀ» ¿¬°áÇÏ´Â ¹æ¹ýÀ¸·Î½á, ÇÑ ¸í·É¾îÀÇ Ãâ·ÂÀ» ´ÙÀ½ ¸í·É¾î³ª ½©¿¡°Ô Àü´Þ.

echo ls -l | sh
#  "echo ls -l" ÀÇ Ãâ·ÂÀ» ½©¿¡°Ô Àü´ÞÇϴµ¥,
#+ ±×³É "ls -l" ¶ó°í ÇÑ °Í°ú ¶È°°½À´Ï´Ù.


cat *.lst | sort | uniq
# ¸ðµç ".lst" ÆÄÀϵéÀ» ÇÕÄ£ ´ÙÀ½ Á¤·ÄÇÏ°í Áߺ¹µÈ ÁÙµéÀ» Áö¿ó´Ï´Ù.

¸í·É¾îÀÇ Ãâ·ÂÀ̳ª ¸í·É¾î ÀÚü¸¦ ½ºÅ©¸³Æ®·Î ÆÄÀÌÇÁ¸¦ °É ¼öµµ ÀÖ½À´Ï´Ù.
#!/bin/bash
# uppercase.sh : ÀÔ·ÂÀ» ´ë¹®ÀÚ·Î ¹Ù²ãÁÜ.

tr 'a-z' 'A-Z'
#  ÇÑ ±ÛÀÚÂ¥¸® ÆÄÀÏ À̸§ÀÌ »ý±â´Â °É ¸·±â À§Çؼ­
#+ ¹®ÀÚ ¹üÀ§´Â ²À Äõ¿ìÆ® ½ÃÄÑ¾ß ÇÕ´Ï´Ù.

exit 0
ÀÚ, ÀÌÁ¦ ls -lÀÇ Ãâ·Â¿¡ ÆÄÀÌÇÁ¸¦ °É¾î ÀÌ ½ºÅ©¸³Æ®·Î ³Ñ°Ü º¾½Ã´Ù.
bash$ ls -l | ./uppercase.sh
-RW-RW-R--    1 BOZO  BOZO       109 APR  7 19:49 1.TXT
 -RW-RW-R--    1 BOZO  BOZO       109 APR 14 16:48 2.TXT
 -RW-R--R--    1 BOZO  BOZO       725 APR 20 20:56 DATA-FILE
	      

Âü°í: ÆÄÀÌÇÁ·Î ¹­ÀÎ °¢ ÇÁ·Î¼¼½ºÀÇ Ç¥ÁØÃâ·ÂÀº ´ÙÀ½ ¸í·É¾îÀÇ Ç¥ÁØÀÔ·ÂÀ¸·Î ÀÐÇô¾ß ÇÕ´Ï´Ù. ÀÌ·±½ÄÀ¸·Î µ¿ÀÛÇÏÁö ¾Ê´Â´Ù¸é µ¥ÀÌŸÀÇ È帧Àº ºí·°µÉ °ÍÀÌ°í ÆÄÀÌÇÁ´Â »ý°¢Çß´ø´ë·Î µ¿ÀÛÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù.
cat file1 file2 | ls -l | sort
# "cat file1 file2" ÀÇ Ãâ·ÂÀº ³ªÅ¸³ªÁö ¾Ê½À´Ï´Ù.

ÆÄÀÌÇÁ´Â ÀÚ½Ä ÇÁ·Î¼¼½º·Î µ¹±â ¶§¹®¿¡ ½ºÅ©¸³Æ®ÀÇ º¯¼ö°ªÀ» ¹Ù²Ü ¼ö°¡ ¾ø½À´Ï´Ù.
variable="initial_value"
echo "new_value" | read variable
echo "variable = $variable"     # variable = initial_value

ÆÄÀÌÇÁ·Î ¿¬°áµÈ ¸í·É¾îÁß Çϳª°¡ Ãë¼ÒµÈ´Ù¸é Àüü ½ÇÇàÀÌ Ãë¼ÒµÇ´Âµ¥ À̸¦ broken pipe¶ó°í ÇÏ°í, ÀÌ ¶§ SIGPIPE ½Ã±×³ÎÀÌ ¹ß»ý µË´Ï´Ù.

>|

°­Á¦ ÀçÁöÇâ(noclobber ¿É¼ÇÀÌ ÄÑ ÀÖ´õ¶óµµ). ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÏ´õ¶óµµ °­Á¦·Î µ¤¾î ¾²°Ô ÇÕ´Ï´Ù.

&

ÀÛ¾÷À» ¹é±×¶ó¿îµå·Î µ¹¸®±â. ¸í·É¾î µÚ¿¡ &¸¦ ºÙ¿© ÁÖ¸é ¹é±×¶ó¿îµå·Î ½ÇÇàµË´Ï´Ù.

bash$ sleep 10 &
[1] 850
[1]+  Done                    sleep 10
	      

°æ°í

½ºÅ©¸³Æ®¿¡¼­ ¾î¶² ¸í·É¾î¸¦ ¹é±×¶ó¿îµå·Î µ¹¸®°Ô µÇ¸é Å°°¡ ´­¸®±æ ±â´Ù¸®¸é¼­ ½ºÅ©¸³Æ®°¡ ¸ØÃç¹ö¸³´Ï´Ù. ´ÙÇེ·´°Ôµµ ÀÌ·± »óȲÀ» ÇÇÇØ °¥ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù.

-

Ç¥ÁØÀÔ·Â(stdin)°ú Ç¥ÁØÃâ·Â(stdout) ¼­·Î°£ÀÇ ÀçÁöÇâ. [´ë½¬]

(cd /source/directory && tar cf
 - . ) | (cd /dest/directory && tar xpvf -)
# ÇÑ µð·ºÅ丮ÀÇ Àüü ÆÄÀÏ ±¸Á¶¸¦ ´Ù¸¥ µð·ºÅ丮·Î ¿Å±è
# [Alan Cox <a.cox@swansea.ac.uk> Á¦°ø, ¾à°£ÀÇ ¼öÁ¤]
# 1) cd /source/directory    ¿Å°ÜÁú ÆÄÀϵéÀÌ ÀÖ´Â ¼Ò½º µð·ºÅ丮
# 2) &&                     "And-list": 'cd' ¸í·ÉÀÌ ¼º°øÇÏ¸é ´ÙÀ½ ¸í·É¾î°¡ ½ÇÇàµÊ
# 3) tar cf - .              'c' ¿É¼ÇÀº »õ ¾ÆÄ«À̺긦 ¸¸µé¶ó´Â ¸í·É¾î
#                            'f'(file) ¿É¼ÇÀº ±× µÚ¿¡ ³ª¿À´Â '-'¿¡ ÀÇÇØ Å¸ÄÏ ÆÄÀÏÀ» Ç¥ÁØ Ãâ·ÂÀ¸·Î ÁöÁ¤ÇØ ÁÖ°í,
#                            ÇöÀç µð·ºÅ丮 Æ®¸®(.)¸¦ ´ë»óÀ¸·Î ÇÏ°Ô ÇÕ´Ï´Ù.
# 4) |                       ÆÄÀÌÇÁ¸¦ °É°í
# 5) ( ... )                 ¼­ºê½©
# 6) cd /dest/directory      ¿Å±æ µð·ºÅ丮·Î À̵¿
# 7) &&                      À§¿¡¼­ ¼³¸íÇß´ø "And-list"
# 8) tar xpvf -              ¾ÆÄ«À̺긦 Ç®°í('x'), ¼ÒÀ¯±Ç°ú ÆÄÀÏ Æ۹̼ÇÀ» À¯Áö('
p')ÇÏ°í
#                            Ç¥ÁØÃâ·ÂÀ¸·Î ¸Þ¼¼Áö¸¦ ¸¹ÀÌ(verbose) Âï°Ô ÇÏ°í('v')
#                            Ç¥ÁØÀԷ¿¡¼­ µ¥ÀÌÅ͸¦ ÀÐ¾î µéÀÓ('f' ´ÙÀ½ÀÇ '-')
#
#                            'x'´Â ¸í·É¾î°í, 'p', 'v', 'f'´Â ¿É¼ÇÀÔ´Ï´Ù. ÁÖÀÇÇϼ¼¿ä.
# ÇíÇí~~~~



# ¶È°°Áö¸¸ ´õ ¿ì¾ÆÇÑ ¹æ¹ý:
#   cd source-directory
#   tar cf - . | (cd ../target-directory; tar xzf -)
#
# cp -a /source/directory /dest     µµ °°Àº °á°ú°¡ ³ª¿É´Ï´Ù.

bunzip2 linux-2.4.3.tar.bz2 | tar xvf -
# --tar ÆÄÀÏÀ» Ç®¾î¼­  --    | --"tar" ¿¡°Ô ³Ñ±è  --
# "tar"¿¡ "bunzip2"¸¦ ó¸®ÇÏ´Â ÆÐÄ¡°¡ ¾È µÅ ÀÖ´Ù¸é
# ÆÄÀÌÇÁ¸¦ ½á¼­ µÎ ´Ü°è·Î ³ª´©¾î 󸮸¦ ÇØ Áà¾ß ÇÕ´Ï´Ù.
# ¿©±â¼­´Â "bzip"À¸·Î ¾ÐÃàµÈ Ä¿³Î ¼Ò½º¸¦ Ǫ´Â °ÍÀ» º¸¿©ÁÝ´Ï´Ù.

¿©±â¼­ ¾²ÀÎ "-"´Â Bash ¿¬»êÀÚ°¡ ¾Æ´Ï°í, tar³ª cat °°Àº ¸î¸î À¯´Ð½º À¯Æ¿¸®Æ¼µéÀÌ ÀνÄÇؼ­ Ç¥ÁØÃâ·ÂÀ¸·Î ¾²µµ·Ï ÇØÁÖ´Â ¿É¼ÇÀÓ¿¡ ÁÖÀÇÇϼ¼¿ä.

ÆÄÀϸíÀÌ ³ª¿Í¾ß ÇÒ °÷¿¡ -ÀÌ ³ª¿À¸é Ç¥ÁØÃâ·ÂÀ¸·Î °á°ú¸¦ ÀçÁöÇâÇϵçÁö(tar cf¿¡¼­ °¡²û ¾²ÁÒ), ½ÇÁ¦ ÆÄÀÏ¿¡¼­ ÀÔ·ÂÀ» ¹ÞÁö ¾Ê°í Ç¥ÁØÀԷ¿¡¼­ ¹Þµµ·Ï ÀçÁöÇâ ÇÏ°Ô ÇØ ÁÝ´Ï´Ù. ÁÖ·Î ÆÄÀÏÀ» ´Ù·ç´Â À¯Æ¿¸®Æ¼µéÀ» ÆÄÀÌÇÁ¿¡¼­ ÇÊÅÍ·Î ¾µ ¶§ ÀÌ ¹æ¹ýÀ» ¾¹´Ï´Ù.

bash$ file
»ç¿ë¹ý: file [-bciknvzL] [-f namefile] [-m magicfiles] file...
	      
fileÀÌ ¸í·É¾îÁÙ¿¡¼­ ¿É¼Ç¾øÀÌ ºÒ¸®¸é ¿¡·¯ ¸Þ¼¼Áö¸¦ ³»¸é¼­ ½ÇÆÐÇÕ´Ï´Ù.

bash$ file -
#!/bin/bash
standard input:              Bourne-Again shell script text executable
	      
À̹ø¿¡´Â ÀÚ½ÅÀÇ ÀÔ·ÂÀ» Ç¥ÁØÀԷ¿¡¼­ ¹Þ°í ±× °á°ú¸¦ ÇÊÅ͸µ ÇÕ´Ï´Ù.

- ´Â Ç¥ÁØÃâ·ÂÀ» ´Ù¸¥ ¸í·É¾î·Î ÆÄÀÌÇÁ ½ÃÅ°´Âµ¥ ¾²ÀÏ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô Çϸé ÆÄÀÏÀÇ ¾ÕÂÊ¿¡ ÁÙÀ» »ðÀÔÇϱⰰÀº ¹¦±âµµ ºÎ¸± ¼ö ÀÖ½À´Ï´Ù.

diff¸¦ ½á¼­ ¼½¼ÇÀ» °¡Áø µÎ ÆÄÀÏÀ» ºñ±³ÇØ º¸±â ¹Ù¶ø´Ï´Ù.

grep bash file1 | diff file2 -

¸¶Áö¸·À¸·Î, tar¿¡ -¸¦ ¾´ Çö½ÇÀûÀÎ ¿¹Á¦ÀÔ´Ï´Ù.

¿¹ 4-3. ÃÖ±Ù ÇϷ絿¾È º¯°æµÈ ÆÄÀϵéÀ» ¹é¾÷Çϱâ

#!/bin/bash

#  ÇöÀç µð·ºÅ丮ÀÇ ¸ðµç ÆÄÀÏÁß ÃÖ±Ù 24½Ã°£ ¾È¿¡ º¯°æµÈ ÆÄÀϵéÀ»
#+ Ÿ¸£·Î ¹­°í gzipÀ¸·Î ¾ÐÃàÇÑ "Ÿ¸£º¼"·Î ¹é¾÷

NOARGS=0
E_BADARGS=65

if [ $# = $NOARGS ]
then
  echo "»ç¿ë¹ý: `basename $0` filename"
  exit $E_BADARGS
fi  

tar cvf - `find . -mtime -1 -type f -print` > $1.tar
gzip $1.tar


#  ³Ê¹« ¸¹Àº ÆÄÀÏÀÌ ¹ß°ßµÇ°Å³ª ÆÄÀÏ¸í¿¡ ºó Ä­ÀÌ µé¾îÀÖ´Ù¸é À§ÀÇ ÄÚµå´Â 
#+ ½ÇÆÐÇÒ ¼öµµ ÀÖ´Ù°í Stephane Chazelas °¡ ÁöÀûÇØ ÁÖ¾ú½À´Ï´Ù.

# ±×°¡ Á¦¾ÈÇÑ ´Ù¸¥ ¹æ¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù:
# -------------------------------------------------------------
#   find . -mtime -1 -type f -print0 | xargs -0 tar rvf "$1.tar"
#      "find"ÀÇ GNU ¹öÀüÀ» ¾´ ¹æ¹ý.

#   find . -mtime -1 -type f -exec tar rvf "$1.tar" '{}' \;
#      ´Ù¸¥ À¯´Ð½º¿¡¼­µµ ¾µ ¼ö ÀÖÁö¸¸ ´õ ´À¸° ¹æ¹ý.


exit 0

°æ°í

ÆÄÀϸíÀÌ -·Î ½ÃÀÛÇÏ´Â ÆÄÀÏÀÌ - ÀçÁöÇâ ¿¬»êÀÚ¿Í °°ÀÌ ¾²ÀÌ¸é ¹®Á¦°¡ »ý±æ ¼öµµ ÀÖ½À´Ï´Ù. ½ºÅ©¸³Æ® ³»¿¡¼­ ÀÌ·± »çÇ×À» È®ÀÎÇÑ ´ÙÀ½¿¡ ./-FILENAMEÀ̳ª $PWD/-FILENAMEµîÀ¸·Î ¹Ù²ã¼­ ó¸®ÇØ Áà¾ß ÇÕ´Ï´Ù.

¶ÇÇÑ, º¯¼öÀÇ °ªÀÌ -·Î ½ÃÀÛÇÒ °æ¿ì¿¡µµ ºñ½ÁÇÑ ¹®Á¦°¡ »ý±æ ¼ö ÀÖ½À´Ï´Ù.
var="-n"
echo $var
# "echo -n" ó·³ Çؼ®ÀÌ µÇ¾î °á°ú°¡ ¾È ³ªÅ¸³³´Ï´Ù.

-

¹Ù·Î Àü ÀÛ¾÷ µð·ºÅ丮. [´ë½¬] cd - ¶ó°í Çϸé $OLDPWD ȯ°æ º¯¼ö¸¦ ÀÌ¿ëÇؼ­ ¹Ù·Î Àü ÀÛ¾÷ µð·ºÅ丮·Î ¿Å°Ü°©´Ï´Ù.

°æ°í

¹æ±Ý À§¿¡¼­ ¼³¸íÇÑ ÀçÁöÇâ ¿¬»êÀÚÀÎ "-"¿Í Çò°¥¸®¸é ¾È µË´Ï´Ù. "-"´Â ¹®¸Æ¿¡ µû¶ó ¾Ë¸Â°Ô Çؼ®µË´Ï´Ù.

-

»©±â. »ê¼ú ¿¬»ê¿¡¼­ ¾²ÀÌ´Â »©±â ºÎÈ£.

=

Equals. ÇÒ´ç ¿¬»êÀÚ
a=28
echo $a   # 28

"="°¡ ´Ù¸¥ ¹®¸Æ¿¡¼­ ¾²ÀÌ¸é ¹®ÀÚ¿­ ºñ±³ ¿¬»êÀÚÀÔ´Ï´Ù.

+

´õÇϱâ. µ¡¼À »ê¼ú ¿¬»êÀÚ.

+°¡ ´Ù¸¥ ¹®¸Æ¿¡¼­ ¾²À̸é Á¤±Ô Ç¥Çö½Ä ¿¬»êÀÚÀÔ´Ï´Ù.

%

³ª¸ÓÁö(modulo). ³ª´°¼ÀÀÇ ³ª¸ÓÁö »ê¼ú ¿¬»êÀÚ.

%°¡ ´Ù¸¥ ¹®¸Æ¿¡¼­ ¾²À̸é ÆÐÅÏ ¸ÅĪ ¿¬»êÀÚÀÔ´Ï´Ù.

~

Ȩ µð·ºÅ丮. [Æ¿µå] ÀÌ ¹®ÀÚ´Â $HOME ³»ºÎ º¯¼ö¿¡ ÇØ´çÇÕ´Ï´Ù. ~bozo ´Â bozoÀÇ È¨ µð·ºÅ丮¸¦ ³ªÅ¸³»°í ls ~bozo ´Â ±× Ȩ µð·ºÅ丮ÀÇ ³»¿ëÀ» º¸¿©ÁÝ´Ï´Ù. ~/ Àº ÇöÀç »ç¿ëÀÚÀÇ È¨ µð·ºÅ丮¸¦ ³ªÅ¸³»°í, ls ~/ ´Â ±× Ȩ µð·ºÅ丮ÀÇ ³»¿ëÀ» º¸¿©ÁÝ´Ï´Ù.
bash$ echo ~bozo
/home/bozo

bash$ echo ~
/home/bozo

bash$ echo ~/
/home/bozo/

bash$ echo ~:
/home/bozo:

bash$ echo ~nonexistent-user
~nonexistent-user
	      

~+

ÇöÀç ÀÛ¾÷ µð·ºÅ丮. ÀÌ ¹®ÀÚ´Â $PWD ³»ºÎ º¯¼ö¿¡ ÇØ´çÇÕ´Ï´Ù.

~-

¹Ù·Î Àü ÀÛ¾÷ µð·ºÅ丮. ÀÌ ¹®ÀÚ´Â $OLDPWD ³»ºÎ º¯¼ö¿¡ ÇØ´çÇÕ´Ï´Ù.

Á¦¾î ¹®ÀÚ

Å͹̳ÎÀ̳ª ÅؽºÆ® µð½ºÇ÷¹ÀÌÀÇ µ¿ÀÛÀ» º¯°æ. Á¦¾î ¹®ÀÚ´Â CONTROL + key Á¶ÇÕÀ¸·Î ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù.

  • Ctl-C

    Æ÷±×¶ó¿îµå ÀÛ¾÷À» ³¡³¿.

  • Ctl-D

    ½©¿¡¼­ ·Î±× ¾Æ¿ô(exit¿Í ºñ½ÁÇÔ).

    "EOF" (ÆÄÀϳ¡, end of file). Ç¥ÁØÀԷ¿¡¼­ µé¾î¿À´Â ÀÔ·ÂÀ» ³¡³¿.

  • Ctl-G

    "º§(BEL)"(»à ¼Ò¸®).

  • Ctl-H

    ¹é½ºÆäÀ̽º(backspace).

  • Ctl-J

    ij¸®Áö ¸®ÅÏ(carriage return).

  • Ctl-L

    ÆûÇǵå(formfeed, Å͹̳Πȭ¸éÀ» û¼Ò). clear ¸í·É¾î¿Í ¶È°°Àº È¿°ú.

  • Ctl-M

    ´º¶óÀÎ(Newline).

  • Ctl-U

    ÀÔ·ÂÁÙÀ» Áö¿ò.

  • Ctl-Z

    Æ÷±×¶ó¿îµå ÀÛ¾÷À» Àá½Ã ¸ØÃã.

°ø¹é¹®ÀÚ(whitespace)

¸í·É¾î³ª º¯¼öÀÇ ±¸ºÐÀÚ ¿ªÇÒ. °ø¹é¹®ÀÚ´Â ºóÄ­, ÅÇ, ºóÁÙµéÀÇ ¾î¶°ÇÑ Á¶ÇÕµé·Î ÀÌ·ç¾îÁ® ÀÖ½À´Ï´Ù. º¯¼ö ÇÒ´ç°°Àº »óȲ¿¡¼­ °ø¹é¹®ÀÚ¸¦ ¾²¸é ¹®¹ý ¿¡·¯°¡ ³³´Ï´Ù.

ºóÁÙÀº ½ºÅ©¸³Æ® µ¿ÀÛ¿¡ ¾Æ¹« ¿µÇâµµ ÁÖÁö ¾Ê±â ¶§¹®¿¡ ±â´Éº°·Î ±¸ºÐ½ÃÄѼ­ º¸±â ÁÁ°Ô Çϴµ¥ ¾µ ¼ö ÀÖ½À´Ï´Ù.

Ư¼ö º¯¼öÀÎ $IFS´Â ¾î¶² ¸í·É¾îÀÇ ÀÔ·Â Çʵ带 ±¸ºÐÇØ Áִµ¥ ÀÌ º¯¼öÀÇ µðÆúÆ®°ªÀº °ø¹é¹®ÀÚÀÔ´Ï´Ù.

ÁÖ¼®

[1]

½©Àº Áß°ýÈ£ È®ÀåÀ» ½ÃµµÇÒ °ÍÀÌ°í, ¸í·É¾î´Â È®ÀåµÈ °á°ú¿¡ µû¶ó µ¿ÀÛÇÕ´Ï´Ù.

[2]

¿¹¿Ü: Áß°ýÈ£·Î ¹­ÀÎ ÄÚµå ºí·°ÀÌ ÆÄÀÌÇÁÀÇ ÀϺκÐÀ¸·Î µ·´Ù¸é ¼­ºê½©·Î µ¹ ¼öµµ ÀÖ½À´Ï´Ù.
ls | { read firstline; read secondline; }
# ¿¡·¯. Áß°ýÈ£ ¾ÈÀÇ ÄÚµå ºí·°Àº ¼­ºê½©·Î µ¹±â ¶§¹®¿¡ "ls"ÀÇ °á°ú°¡ 
# ºí·° ¾ÈÀÇ º¯¼ö·Î Àü´ÞµÉ ¼ö ¾ø½À´Ï´Ù.
echo "ù¹ø° ÁÙÀº $firstline; µÎ¹ø° ÁÙÀº $secondline"  # µ¿ÀÛÇÏÁö ¾ÊÀ» °Ì´Ï´Ù.

# Thanks, S.C.