Äõ¿ìÆÃÀ̶õ ¹®ÀÚ¿À» µû¿ÈÇ¥·Î ¹´Â °ÍÀ» ¸»ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ´Â ÀÌÀ¯´Â ¹®ÀÚ¿ ¾È¿¡ Ư¼ö ¹®ÀÚ°¡ µé¾î°¡ ÀÖÀ» °æ¿ì, ½©À̳ª ½© ½ºÅ©¸³Æ®¿¡ ÀÇÇØ ±× Ư¼ö ¹®ÀÚ°¡ ÀçÇؼ®À̳ª È®ÀåµÇ´Â °ÍÀ» ¹æÁöÇϱâ À§Çؼ ÀÔ´Ï´Ù.(¾î¶² ¹®ÀÚ°¡ °¡Áø ±ÛÀÚ ±×´ë·ÎÀÇ ¶æ°ú´Â ´Ù¸¥ Çؼ®ÀÌ °¡´ÉÇÑ ¹®ÀÚ¸¦ "Ư¼ö ¹®ÀÚ"¶ó°í ÇÕ´Ï´Ù. ¿¹¸¦ µé¸é, ¿ÍÀϵå Ä«µå ¹®ÀÚÀÎ *°¡ Ư¼ö ¹®ÀÚÀÔ´Ï´Ù.)
bash$ ls -l [Vv]* -rw-rw-r-- 1 bozo bozo 324 Apr 2 15:05 VIEWDATA.BAT -rw-rw-r-- 1 bozo bozo 507 May 4 14:25 vartrace.sh -rw-rw-r-- 1 bozo bozo 539 Apr 14 17:11 viewdata.sh bash$ ls -l '[Vv]*' ls: [Vv]*: No such file or directory |
Âü°í: ¸î¸î ÇÁ·Î±×·¥À̳ª À¯Æ¿¸®Æ¼µéÀº Äõ¿ìÆ®µÈ ¹®ÀÚ¿¿¡ µé¾î Àִ Ư¼ö ¹®ÀÚ¸¦ ÀçÇؼ®Çϰųª È®Àå ½Ãų ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº Äõ¿ìÆÃÀÇ Áß¿äÇÑ »ç¿ë¹ýÀ¸·Î½á ½©ÀÌ ¸í·É¾îÁÙ ¸Å°³º¯¼ö¸¦ Çؼ®ÇÏÁö ¾Ê°í ÇÁ·Î±×·¥ÀÌ Çؼ®Çؼ È®ÀåÇϵµ·Ï ÇØ ÁÝ´Ï´Ù.
bash$ grep '[Ff]irst' *.txt file1.txt:This is the first line of file1.txt. file2.txt:This is the First line of file2.txt.grep [Ff]irst *.txt ¶ó°í ÇÏ¸é ´ç¿¬È÷ µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù.
º¯¼ö¸¦ ÂüÁ¶ÇÒ ¶§´Â º¸Åë Å« µû¿ÈÇ¥(" ")·Î ¹¾î ÁÖ´Â°Ô ÁÁ½À´Ï´Ù. ÀÌ·¸°Ô Çϸé $, `(backquote), \(À̽ºÄÉÀÌÇÁ)¸¦ Á¦¿ÜÇÑ ¸ðµç Ư¼ö ¹®ÀÚµéÀ» º¸Á¸ÇØ ÁÝ´Ï´Ù. º¯¼ö¿¡ Äõ¿ìÆ®¸¦ °É¾î¼("$variable") $À» Ư¼ö ¹®ÀÚ·Î ÀνÄÇÏ°Ô µÇ¸é ±× º¯¼öÀÇ °ªÀ¸·Î ¹Ù²ã ÁÝ´Ï´Ù (À§ÀÇ ¿¹ 5-1 Âü°í).
³¹¸» Á¶°¢³²(word splitting) [1] À» ÇÇÇÏ·Á¸é Å« µû¿ÈÇ¥¸¦ ¾²±â ¹Ù¶ø´Ï´Ù. ÀÌ·¸°Ô Çϸé ÀÎÀÚ¿¡ °ø¹é¹®ÀÚ°¡ µé¾î À־ ÇϳªÀÇ ³¹¸»·Î ÀνÄÇÏ°Ô ÇØ ÁÝ´Ï´Ù.
variable1="4°³ÀÇ ³¹¸»·Î ÀÌ·ç¾îÁø º¯¼ö" COMMAND ÀÌ°ÍÀº $variable1 ÀÔ´Ï´Ù. # COMMAND´Â 6°³ÀÇ ÀÎÀÚ¸¦ °¡Áö°í ½ÇÇàµË´Ï´Ù. # "ÀÌ°ÍÀº" "4°³ÀÇ" "³¹¸»·Î" "ÀÌ·ç¾îÁø" "º¯¼ö" "ÀÔ´Ï´Ù." COMMAND "ÀÌ°ÍÀº $variable1 ÀÔ´Ï´Ù." # COMMAND´Â 1°³ÀÇ ÀÎÀÚ¸¦ °¡Áö°í ½ÇÇàµË´Ï´Ù. # "ÀÌ°ÍÀº 4°³ÀÇ ³¹¸»·Î ÀÌ·ç¾îÁø º¯¼ö ÀÔ´Ï´Ù." variable2="" # ºñ¾î ÀÖ½À´Ï´Ù. COMMAND $variable2 $variable2 $variable2 # COMMAND´Â ÀÎÀÚ ¾øÀÌ ½ÇÇàµË´Ï´Ù. COMMAND "$variable2" "$variable2" "$variable2" # COMMAND´Â 3°³ÀÇ ºó ÀÎÀÚ¸¦ °¡Áö°í ½ÇÇàµË´Ï´Ù. COMMAND "$variable2 $variable2 $variable2" # COMMAND´Â 2°³ÀÇ ºóÄÀ» °¡Áø ÇϳªÀÇ ÀÎÀÚ¸¦ °¡Áö°í ½ÇÇàµË´Ï´Ù. # Thanks, S.C. |
ÀÛÀº Á¤º¸: echo¹®ÀÇ ÀÎÀÚ¸¦ Å« µû¿ÈÇ¥·Î ¹¾îÁÖ´Â °ÍÀº ³¹¸» Á¶°¢³²ÀÌ ¹®Á¦°¡ µÉ ¶§¿¡¸¸ ÇÊ¿äÇÕ´Ï´Ù.
¿¹ 6-1. ÀÌ»óÇÑ º¯¼ö¸¦ ¿¡ÄÚÇϱâ
#!/bin/bash # weirdvars.sh: ÀÌ»óÇÑ º¯¼ö ¿¡ÄÚÇϱâ. var="'(]\\{}\$\"" echo $var # '(]\{}$" echo "$var" # '(]\{}$" Â÷ÀÌ°¡ ¾øÁÒ? echo IFS='\' echo $var # '(] {}$" \ °¡ ºó ÄÀ¸·Î ¹Ù²î¾ú³×¿ä. echo "$var" # '(]\{}$" # S.C. Á¦°ø exit 0 |
ÀÛÀº µû¿ÈÇ¥(' ')µµ Å« µû¿ÈÇ¥¿Í ºñ½ÁÇÏ°Ô µ¿ÀÛÇÏÁö¸¸ $ÀÇ Æ¯º°ÇÑ Àǹ̸¦ ²¨ ¹ö·Á¼ º¯¼ö ÂüÁ¶°¡ ÀϾÁö ¾Ê°Ô ÇÕ´Ï´Ù. ÀÛÀº µû¿ÈÇ¥¾ÈÀÇ 'À» Á¦¿ÜÇÑ ¸ðµç Ư¼ö ¹®ÀÚµéÀº ´Ü¼øÈ÷ ¹®ÀÚ ±×´ë·Î Çؼ®µË´Ï´Ù. ÀÛÀº µû¿ÈÇ¥("¿ÏÀüÇÑ Äõ¿ìÆÃ")¸¦ Å« µû¿ÈÇ¥("ºÎºÐ Àοë")º¸´Ù Á» ´õ ¾ö°ÝÇÑ ¹æ¹ýÀ̶ó°í »ý°¢ÇÏ¸é µË´Ï´Ù.
Âü°í: ÀÛÀº µû¿ÈÇ¥¾È¿¡¼´Â À̽ºÄÉÀÌÇÁ ¹®ÀÚ(\)µµ ±ÛÀÚ ±×´ë·Î ÀνĵDZ⠶§¹®¿¡ ÀÛÀº µû¿ÈÇ¥·Î ¹ÀÎ ¹®ÀÚ¿¿¡ \À» ½á¼ ÀÛÀº µû¿ÈÇ¥ ÀÚü¸¦ ³ÖÀ¸·Á°í ÇÑ´Ù¸é ¿øÇÏ´Â °á°ú°¡ ³ª¿ÀÁö ¾Ê½À´Ï´Ù.
echo "Why can't I write 's between single quotes" echo # °£Á¢ÀûÀÎ ¹æ¹ý echo 'Why can'\''t I write '"'"'s between single quotes' # |-------| |----------| |-----------------------| # À̽ºÄÉÀÌÇÁ¿Í Å« µû¿ÈÇ¥·Î Äõ¿ìÆ®µÈ ÀÛÀº µû¿ÈÇ¥¿¡ ÀÇÇØ 3°³ÀÇ ¹®ÀÚ¿·Î ³ª´µ¾îÁ® ÀÖ½À´Ï´Ù. # Stephane Chazelas Á¦°ø.
À̽ºÄÉÀÌÇÁ(Escaping)´Â ÇϳªÀÇ ¹®ÀÚ¸¦ Äõ¿ìÆÃÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. ¾î¶² ¹®ÀÚ ¾Õ¿¡ À̽ºÄÉÀÌÇÁ ¹®ÀÚ(\)°¡ ¿À¸é ½©¿¡°Ô ±× ¹®ÀÚ¸¦ ¹®ÀÚ ±×´ë·Î Çؼ®ÇÏ°Ô ÇØ ÁÝ´Ï´Ù.
°æ°í |
echo³ª sed°°Àº ¸î¸î ¸í·É¾îµé¿¡¼´Â À̽ºÄÉÀÌÇÎÀÌ Æ¯¼ö ¹®ÀÚÀÇ Æ¯¼öÇÑ Àǹ̸¦ Å°µµ·Ï ÇØ ÁÖ´Â ¹Ý´ëÀÇ È¿°ú¸¦ °¡Áú ¼öµµ ÀÖ½À´Ï´Ù. |
Ưº°ÇÑ Àǹ̸¦ °®´Â ¸î °³ÀÇ À̽ºÄÉÀÌÇÁ ¹®ÀÚµé
´º¶óÀÎ(newline)
¸®ÅÏ(return)
ÅÇ(tab)
¼öÁ÷ÅÇ(vertical tab)
¹é½ºÆäÀ̽º(backspace)
"°æ°í"(alert, ºñÇÁÀ½À̳ª ±ôºý°Å¸²)
0xx °°Àº 8Áø¼ö ¾Æ½ºÅ° Ç¥ÇöÀ¸·Î º¯È¯
¿¹ 6-2. À̽ºÄÉÀÌÇÁµÈ ¹®ÀÚµé
#!/bin/bash # escaped.sh: À̽ºÄÉÀÌÇÁµÈ ¹®ÀÚµé echo; echo echo "\v\v\v\v" # \v\v\v\v ¶ó°í Ãâ·Â # 'echo'°¡ À̽ºÄÉÀÌÇÁµÈ ¹®ÀÚµéÀ» Ãâ·ÂÇÏ°Ô ÇÏ·Á¸é -e ¿É¼ÇÀ» ½á¾ß µË´Ï´Ù. echo -e "\v\v\v\v" # 4 °³ÀÇ ¼öÁ÷ÅÇ Ãâ·Â echo -e "\042" # " Ãâ·Â(µû¿ÈÇ¥, 8Áø¼ö ¾Æ½ºÅ° ¹®ÀÚ 42). # Bash ¹öÀü 2 ÀÌÈÄ¿¡¼´Â $'\xxx' µµ Çã¿ëµË´Ï´Ù. echo $'\n' echo $'\a' echo $'\t \042 \t' # ÅÇÀ¸·Î µÑ·Á½×ÀÎ µû¿ÈÇ¥("). # º¯¼ö¿¡ ¾Æ½ºÅ° ¹®ÀÚ¸¦ ÇÒ´çÇϱâ. # ------------------------------ quote=$'\042' # " ¸¦ º¯¼ö·Î ÇÒ´ç. echo "$quote ¿©±â´Â Äõ¿ìÆ®µÈ ºÎºÐÀÌ°í, $quote ¿©±â´Â ¾È µÈ ºÎºÐÀÔ´Ï´Ù." echo # º¯¼ö¿¡ ¾Æ½ºÅ° ¹®ÀÚ¸¦ ¿©·¯°³ ¾²±â. triple_underline=$'\137\137\137' # 137 Àº "_"ÀÇ 8Áø¼ö ¾Æ½ºÅ° ÄÚµå. echo "$triple_underline ¹ØÁÙ $triple_underline" ABC=$'\101\102\103\010' # 101, 102, 103 Àº °¢°¢ 8Áø¼ö A, B, C. echo $ABC echo; echo escape=$'\033' # 033 Àº À̽ºÄÉÀÌÇÁÀÇ 8Áø¼ö. echo "\"escape\" echoes as $escape" echo; echo exit 0 |
$' ' ¹®ÀÚ¿ È®ÀåÀÇ ´Ù¸¥ ¿¹Á¦¸¦ º¸°í ½ÍÀ¸¸é ¿¹ 35-1 Âü°í.
Å« µû¿ÈÇ¥¸¦ ±×³É Å« µû¿ÈÇ¥·Î Çؼ®
echo "Hello" # Hello echo "\"Hello\", he said." # "Hello", he said. |
´Þ·¯ Ç¥½Ã¸¦ ±×³É ´Þ·¯ Ç¥½Ã·Î Çؼ®(\$ µÚ¿¡ ¿À´Â º¯¼ö´Â ÂüÁ¶µÇÁö ¾Ê½À´Ï´Ù)
echo "\$variable01" # $variable01 À̶ó°í ÂïÈû |
¹é½½·¡½¬¸¦ ±×³É ¹é½½·¡½¬·Î Çؼ®
echo "\\" # \ ¶ó°í ÂïÈû |
Âü°í: \ ÀÇ µ¿ÀÛÀº ÀÚ½ÅÀÌ À̽ºÄÉÀÌÇÁ µÆ´ÂÁö, Äõ¿ìÆ® µÆ´ÂÁö, here document¿¡¼ ¾²ÀÌ´ÂÁö¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù.
echo \z # z echo \\z # \z echo '\z' # \z echo '\\z' # \\z echo "\z" # \z echo "\\z" # \z echo `echo \z` # z echo `echo \\z` # z echo `echo \\\z` # \z echo `echo \\\\z` # \z echo `echo \\\\\\z` # \z echo `echo \\\\\\\z` # \\z echo `echo "\z"` # \z echo `echo "\\z"` # \z cat <<EOF \z EOF # \z cat <<EOF \\z EOF # \z # Stephane Chazelas Á¦°ø.
¸í·É¾îÀÇ ÀÎÀÚ ¸®½ºÆ® Áß°£¿¡ ³ª¿À´Â ºóÄÀ» À̽ºÄÉÀÌÇÁ ½ÃÅ°¸é ³¹¸» Á¶°¢³²À» ¸·À» ¼ö ÀÖ½À´Ï´Ù.
file_list="/bin/cat /bin/gzip /bin/more /usr/bin/less /usr/bin/emacs-20.7" # ¸í·É¾î¿¡ ³Ñ±æ ÀÎÀÚ(µé)ÀÇ ÆÄÀÏ ¸®½ºÆ®. # ¸®½ºÆ®¿¡ µÎ °³¸¦ ´õ Ãß°¡ÇÏ°í ¸®½ºÆ®¸¦ º¸¿©ÁÜ. ls -l /usr/X11R6/bin/xsetroot /sbin/dump $file_list echo "-------------------------------------------------------------------------" # ºóÄÀ» À̽ºÄÉÀÌÇÁ ½ÃÅ°¸é ¾î¶² ÀÏÀÌ ÀϾ±î¿ä? ls -l /usr/X11R6/bin/xsetroot\ /sbin/dump\ $file_list # ¿¡·¯: ÆÄÀϵéÀ» ±¸ºÐ Áö¾îÁÙ ºóÄÀ» À̽ºÄÉÀÌÇÁ ½ÃÄױ⠶§¹®¿¡ # Á¦ÀÏ ¾Õ ¼¼°³ÀÇ ÆÄÀÏÀÌ 'ls -l' ¿¡°Ô ÇϳªÀÇ ÀÎÀÚ·Î ³Ñ¾î°©´Ï´Ù. |
À̽ºÄÉÀÌÇÁ´Â ÇÑ ¸í·É¾î¸¦ ¿©·¯ÁÙ¿¡ °ÉÃÄ ¾µ ¼ö ÀÖ°Ôµµ ÇØ ÁÝ´Ï´Ù. º¸ÅëÀº, ÁÙÀÌ ´Ù¸£¸é ´Ù¸¥ ¸í·É¾î¸¦ ³ªÅ¸³»Áö¸¸ ÁÙ ³¡¿¡ À̽ºÄÉÀÌÇÁ¸¦ °É¸é ´º¶óÀÎ ¹®ÀÚ¸¦ À̽ºÄÉÀÌÇÁ½ÃÅ°±â ¶§¹®¿¡ ±× ´ÙÀ½ÁÙÀÌ ¿ø·¡ ÁÙ°ú ÇÑ ÁÙ·Î À̾îÁö°Ô µË´Ï´Ù.
(cd /source/directory && tar cf - . ) | \ (cd /dest/directory && tar xpvf -) # ´Ù½Ã º¸´Â ¾Ë¶õ ÄÛ½ºÀÇ µð·ºÅ丮 Æ®¸® º¹»ç ¸í·É¾î # ¿©±â¼´Â ´õ Àб⠽±µµ·Ï µÎ ÁÙ·Î ³ª´©¾ú½À´Ï´Ù. # ÀÌ·¸°Ôµµ °¡´ÉÇÏÁÒ: tar cf - -C /source/directory | tar xpvf - -C /dest/directory # ¹ØÀÇ Âü°í¸¦ º¸¼¼¿ä. # (Thanks, Stephane Chazelas.) |
Âü°í: ÁÙÀÌ ÆÄÀÌÇÁ ¹®ÀÚÀÎ |À¸·Î ³¡³´Ù¸é ±»ÀÌ À̽ºÄÉÀÌÇÁ ¹®ÀÚ(\)¸¦ Àû¾îÁÙ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ÇÏÁö¸¸, ¿©·¯ÁÙ¿¡ °ÉÄ£ ÇϳªÀÇ ¸í·É¾î¿¡¼ ÁÙ ³¡¿¡ Ç×»ó À̽ºÄÉÀÌÇÁ ¹®ÀÚ¸¦ Àû¾îÁÖ´Â °ÍÀº ¾ÆÁÖ ÁÁÀº ÇÁ·Î±×·¡¹Ö ½À°üÀÔ´Ï´Ù.
echo "foo bar" #foo #bar echo echo 'foo bar' # ¾ÆÁ÷Àº ´Ù¸¥Á¡ÀÌ ¾øÁÒ. #foo #bar echo echo foo\ bar # ´º¶óÀÎÀÌ À̽ºÄÉÀÌÇÁ µÆ½À´Ï´Ù. #foobar echo echo "foo\ bar" # ¾àÇÑ Äõ¿ìÆ® ¾È¿¡¼´Â \ °¡ À̽ºÄÉÀÌÇÁ ¹®ÀÚ·Î Çؼ®µÇ±â ¶§¹®¿¡ ¶È°°½À´Ï´Ù. #foobar echo echo 'foo\ bar' # °ÇÑ Äõ¿ìÆà ¾È¿¡¼ \ ´Â ¾Æ¹« ÀÇ¹Ì ¾øÀÌ ±×³É \ ÀÔ´Ï´Ù. #foor\ #bar # Stephane Chazelas Á¦°ø. |
[1] | ¿©±â¼ "³¹¸» Á¶°¢³²"Àº ¹®ÀÚ¿ÀÌ Á¶°¢³ª¼ ¿©·¯°³ÀÇ ÀÎÀÚ·Î ÀνĵǴ °ÍÀ» ¶æÇÕ´Ï´Ù. |