· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Bash Prog Intro Howto

Bash Programming Introduction Howto

Mike G mikkey at dyamo.com.ar

Thu Jul 27 09:36:18 ART 2000

ÀÌ ±ÛÀº ´ç½ÅÀÌ ÃÊÁß±Þ ¼Ð ½ºÅ©¸³Æ® ÇÁ·Î±×·¡¹ÖÀ» ½ÃÀÛÇÏ´Â °ÍÀ» µ½°íÀÚ ÇÑ´Ù. °íµµÀÇ ¹®¼­È­¸¦ ÇÏ·Á°í ÇÏ´Â °Ô ¾Æ´Ï´Ù(Á¦¸ñÀ» º¸¶ó). ³ª´Â Àü¹®°¡µµ °í±Þ ¼Ð ÇÁ·Î±×·¡¸Óµµ ¾Æ´Ï´Ù. ´Ù´Â ³»°¡ Á» ´õ ¹è¿ü°í ´Ù¸¥ »ç¶÷µé¿¡°Ô ¾µ¸ð°¡ ÀÖÀ» °ÍÀ̱⿡ ÀÌ ±ÛÀ» ¾²±â·Î °áÁ¤Çß´Ù. ¾î¶² Çǵå¹éµµ - ƯÈ÷ ÆÐÄ¡ ÇüÅ - ȯ¿µÇÑ´Ù.

Contents

1. ¼Ò°³
1.1. ÃÖ½ÅÆÇ ±¸Çϱâ
1.2. ¿ä±¸»çÇ×
1.3. ÀÌ ¹®¼­ÀÇ »ç¿ë
2. ¸Å¿ì °£´ÜÇÑ ½ºÅ©¸³Æ®
2.1. ÀüÅëÀûÀÎ hello world ½ºÆ®¸³Æ®
2.2. ¸Å¿ì °£´ÜÇÑ ¹é¾÷ ½ºÅ©¸³Æ®
3. ¸®µð·º¼ÇÀÇ ¸ðµç °Í
3.1. À̷аú ºü¸¥ ÂüÁ¶
3.2. ¿¹: stdout ¿¡¼­ file
3.3. ¿¹: stderr ¿¡¼­ file
3.4. ¿¹: stdout ¿¡¼­ stderr
3.5. ¿¹: stderr ¿¡¼­ stdout
3.6. ¿¹: stderr ¿Í stdout ¿¡¼­ file
4. ÆÄÀÌÇÁ
4.1. ±×°ÍÀº ¹«¾ùÀΰ¡ ¿Ö ´ç½ÅÀº ±×°ÍÀ» »ç¿ëÇϱ⸦ ¿øÇÒ °ÍÀΰ¡
4.2. ¿¹: sed¿Í °£´ÜÇÑ ÆÄÀÌÇÁ
4.3. ¿¹: ´Ù¸¥ ls -l *.txt
5. º¯¼ö
5.1. ¿¹: º¯¼ö¸¦ »ç¿ëÇÑ Hello World!
5.2. ¿¹: ¸Å¿ì °£´ÜÇÑ ¹é¾÷ ½ºÅ©¸³Æ®(Á¶±Ý ³ª¾ÆÁø °Í)
5.3. Áö¿ª º¯¼ö
6. Á¶°Ç¹®
6.1. ½Ã½ÃÇÑ ÀÌ·Ð
6.2. ¿¹: ±âº» Á¶°Ç¹® if ... then
6.3. ¿¹: ±âº» Á¶°Ç¹® if ... then ... else
6.4. º¯¼ö¸¦ °¡Áø Á¶°Ç¹®
7. for, while, until
7.1. for ¿¹
7.2. C ºñ½ÁÇÑ for
7.3. while ¿¹
7.4. until ¿¹
8. ÇÔ¼ö
8.1. ÇÔ¼ö ¿¹
8.2. ¸Å°³º¯¼ö¸¦ °¡Áø ÇÔ¼ö ¿¹
9. »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º
9.1. °£´ÜÇÑ ¸Þ´º¸¦ À§ÇÑ select »ç¿ë
9.2. ¸í·ÉÇà »ç¿ëÇϱâ
10. ±âŸ
10.1. read·Î »ç¿ëÀÚ ÀÔ·Â Àбâ
10.2. »ê¼ú Æò°¡
10.3. bash ã±â
10.4. ÇÁ·Î±×·¥ÀÇ ¹Ýȯ°ª ¾ò±â
10.5. ¸í·É Ãâ·Â Àâ±â
10.6. ¿©·¯ ¼Ò½ºÆÄÀÏ
11. Tables
11.1. ¹®ÀÚ¿­ ºñ±³ ¿¬»êÀÚ
11.2. ¹®ÀÚ¿­ ºñ±³ ¿¹
11.3. »ê¼ú ¿¬»êÀÚ
11.4. »ê¼ú °ü°è ¿¬»êÀÚ
11.5. ¾µ¸¸ÇÑ ¸í·É¾î

1. ¼Ò°³

1.2. ¿ä±¸»çÇ×

GNU/Linux ¸í·ÉÇà¿¡ Àͼ÷ÇÏ°í, ±âº» ÇÁ·Î±×·¥°³³äÀÌ ÀÖ´Ù¸é µµ¿òÀÌ µÉ °ÍÀÌ´Ù. ÀÌ ±ÛÀº ÇÁ·Î±×·¡¹ÖÀÇ ¼Ò°³°¡ ¾Æ´Ï¹Ç·Î, ¸¹Àº ±âº» °³³äÀ» ¼³¸íÇÑ´Ù(Àû¾îµµ ½ÃµµÇÑ´Ù)

1.3. ÀÌ ¹®¼­ÀÇ »ç¿ë

ÀÌ ¹®¼­´Â ´ÙÀ½ »óȲ¿¡ ¾µ¸ð ÀÖ°Ô ÇÏ·Á ÇÏ¿´´Ù.
  • ´ç½ÅÀÌ ÇÁ·Î±×·¥¿¡ °üÇØ °³³äÀÌ ÀÖ°í ´ç½ÅÀÌ ¾î¶² ¼Ð ½ºÅ©¸³Æ®¸¦ ½ÃÀÛÇϱ⸦ ¿øÇÑ´Ù.
  • ´ç½ÅÀº ¼Ð ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇØ ¸ðÈ£ÇÑ °³³äÀ» °¡Áö°í ÀÖ°í ¾î¶² Âü°íÀڷḦ ¿øÇÑ´Ù.
  • ´ç½ÅÀº ¼Ð ½ºÅ©¸³Æ®¿Í ´ç½Å ÀÚ½ÅÀÇ ¼Ð ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇϱ⠽ÃÀÛÇÏ´Â °Í¿¡ ´ëÇÑ ÀÇ°ßÀ» º¸±â¸¦ ¿øÇÑ´Ù.
  • ´ç½ÅÀº DOS / Windows ·Î ºÎÅÍ ÀÌÁÖÇÏ·Á°í Çϰųª ÀÌÁÖÇß°í, ÀÏ°ý󸮸¦ ¸¸µé±â¸¦ ¿øÇÑ´Ù.
  • ´ç½ÅÀº ¿ÏÀüÇÑ ÄĸÍÀÌ°í °¡´ÉÇÑÇÑ ¸ðµç ÇÏ¿ìÅõ¸¦ ÀÐÀ¸·Á°í ÇÑ´Ù.

2. ¸Å¿ì °£´ÜÇÑ ½ºÅ©¸³Æ®

2.1. ÀüÅëÀûÀÎ hello world ½ºÆ®¸³Æ®

#!/bin/bash
echo Hello World
ÀÌ ½ºÅ©¸³Æ®´Â µü µÎ ÁÙ·Î µÇ¾î ÀÖ´Ù. ù ÁÙÀº ÇÁ·Î±×·¥ÀÌ ÆÄÀÏÀ» ½ÇÇà½ÃÅ°±â À§ÇØ »ç¿ëÇÒ ½Ã½ºÅÛÀ» °¡¸®Å²´Ù.

µÑ° ÁÙÀº ÀÌ ½ºÅ©¸³Æ®¿¡ ÀÇÇØ ¼öÇàµÇ´Â ÇൿÀε¥, ±×°ÍÀº Å͹̳ο¡ 'Hello World'¸¦ Ãâ·ÂÇÑ´Ù.

¸¸¾à ´ç½ÅÀÌ ./hello.sh: Command not found. ¿Í °°Àº °ÍÀ» º¸°Ô µÈ´Ù¸é ¾Æ¸¶µµ ù ÁÙÀÌ À߸øµÇ¾úÀ» °ÍÀÏÅÙµ¥, bash°¡ ¾îµð ÀÖ´ÂÁö¿¡ ´ëÇØ ¶Ç´Â ¾î¶»°Ô ´ç½ÅÀÌ ÀÌ ÁÙÀ» ½á¾ß ÇÏ´ÂÁö º¸±â À§ÇØ 'bash¸¦ ã´Â °Í'À» ÇÏ°Ô µÉ °ÍÀÌ´Ù.

2.2. ¸Å¿ì °£´ÜÇÑ ¹é¾÷ ½ºÅ©¸³Æ®

#!/bin/bash          
tar -cZf /var/my-backup.tgz /home/me/
ÀÌ ½ºÅ©¸³Æ®¿¡¼­´Â Å͹̳ο¡ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ´Â ´ë½Å »ç¿ëÀÚ È¨µð·ºÅ丮ÀÇ Å¸¸£º¼À» ¸¸µç´Ù. ÀÌ°ÍÀº »ç¿ëÇÏ·Á°í ÇÏ´Â °Ô ¾Æ´Ï°í, Á»´õ ¾µ¸ð ÀÖ´Â ¹é¾÷ ½ºÅ©¸³Æ®°¡ ÀÌ ¹®¼­¿¡¼­ ³ªÁß¿¡ ³ª¿Â´Ù.

3. ¸®µð·º¼ÇÀÇ ¸ðµç °Í

3.1. À̷аú ºü¸¥ ÂüÁ¶

ÆÄÀÏ Áö½ÃÀÚ´Â stdin, stdout, stderr ¼¼ °³°¡ ÀÖ´Ù.

±âº»ÀûÀ¸·Î ´ç½ÅÀº

  1. stdout¿¡¼­ ÆÄÀÏ·Î
  2. stderr¿¡¼­ ÆÄÀÏ·Î
  3. stdout¿¡¼­ stderr·Î
  4. stderr¿¡¼­ stdout·Î
  5. stderr¿Í stdout ¿¡¼­ ÆÄÀÏ·Î
  6. stderr¿Í stdout ¿¡¼­ stdout·Î
  7. stderr¿Í stdout ¿¡¼­ stderr·Î
¸®µð·ºÆ®ÇÒ ¼ö ÀÖ´Ù.

1Àº stdoutÀ» 2´Â stderr¸¦ ³ªÅ¸³½´Ù.

ÀÌ°ÍÀ» º¸±â À§ÇÑ ÀÛÀº ÁÖ¼®: less ¸í·É¾î·Î ´ç½ÅÀºstdout (ÀÌ°ÍÀº ¹öÆÛ¿¡ ³²À½) °ú stderr°¡ È­¸é¿¡ Ãâ·ÂµÇ´Â °ÍÀ» º¼ °ÍÀÌÁö¸¸, ¹öÆÛ¸¦ °Ë»öÇÏ·Á°í ½ÃµµÇϸé Áö¿öÁø´Ù.

3.2. ¿¹: stdout ¿¡¼­ file

ÀÌ°ÍÀº ÇÁ·Î±×·¥ÀÇ Ãâ·ÂÀ» ÆÄÀÏ¿¡ ¾µ °ÍÀÌ´Ù.
ls -l > ls-l.txt
¿©±â¼­ ls-l.txt À̶ó´Â ÆÄÀÏÀÌ »ý¼ºµÉ °ÍÀÌ°í, ±× ÆÄÀÏÀº ´ç½ÅÀÌ ls -l¸¦ ½ÇÇàÇßÀ» ¶§ È­¸é¿¡ º¸°Ô µÇ´Â ³»¿ëÀ» Æ÷ÇÔÇÒ °ÍÀÌ´Ù.

3.3. ¿¹: stderr ¿¡¼­ file


ÀÌ°ÍÀº ÇÁ·Î±×·¥ÀÇ stderr Ãâ·ÂÀ» ÆÄÀÏ¿¡ ¾µ °ÍÀÌ´Ù.
grep da * 2> grep-errors.txt
¿©±â¼­ 'grep-errors.txt'À̶ó´Â ÆÄÀÏÀÌ »ý¼ºµÇ°í ´ç½ÅÀº 'grep da *'¸í·ÉÀÇ stderr Ãâ·Â ºÎºÐÀ» º¼ °ÍÀÌ´Ù.

3.4. ¿¹: stdout ¿¡¼­ stderr

ÀÌ°ÍÀº ÇÁ·Î±×·¥ÀÇ stderrÃâ·ÂÀ» stdout´ë½Å °°Àº ÆÄÀÏÁö½ÃÀÚ¿¡ ¾µ °ÍÀÌ´Ù.
grep da * 1>&2 
¿©±â¼­, ¸í·ÉÀÇ stdout ºÎºÐÀº stderr·Î º¸³»Áö°í, ´ç½ÅÀº ´Ù¸¥ ¹æ¹ýÀ» ¾Ë°Ô µÉ °ÍÀÌ´Ù.

3.5. ¿¹: stderr ¿¡¼­ stdout

ÀÌ°ÍÀº ÇÁ·Î±×·¥ÀÇ stderrÃâ·Â±Û stdout ´ë½Å °°Àº ÆÄÀÏÁö½ÃÀÚ¿¡ ¾µ °ÍÀÌ´Ù.
grep * 2>&1
¿©±â¼­ ÀÌ ¸í·ÉÀÇ stderr ºÎºÐÀº stdout ·Î º¸³»Áö°í, ´ç½ÅÀÌ less·Î ÆÄÀÌÇÁÇϸé, ´ç½ÅÀº º¸Åë '»ç¶óÁö´Â'(±×°ÍµéÀÌ stderr¿¡ ½áÁø °Í ó·³) ÁÙÀÌ ÇöÀç´Â À¯ÁöµÇ´Â °ÍÀ» º¼ °ÍÀÌ´Ù.(¿Ö³Ä¸é ±×°ÍÀº stdout¿¡ ÀÖÀ¸¹Ç·Î)

3.6. ¿¹: stderr ¿Í stdout ¿¡¼­ file

ÀÌ°ÍÀº ÇÁ·Î±×·¥ÀÇ ¸ðµç Ãâ·ÂÀ» ÆÄÀÏ¿¡ ÀúÀåÇÒ °ÍÀÌ´Ù. ÀÌ°ÍÀº ´ç½ÅÀÌ Àý´ë·Î Á¶¿ëÈ÷ ¸í·ÉÀÌ ÁøÇàµÇ±â¸¦ ¿øÇÏ¸é ¶§¶§·Î cron ¿ä¼Ò¿¡ ÀûÇÕÇÏ´Ù.
rm -f $(find / -name core) &> /dev/null 
ÀÌ°ÍÀº(cron ¿ä¼Ò¿¡¼­ »ý°¢Çϸé) ¸ðµç µð·ºÅ丮ÀÇ core ¶ó´Â ¸ð¸¥ ÆÄÀÏÀ» Áö¿ï °ÍÀÌ´Ù.

´ç½ÅÀº ´ç½ÅÀÌ ±× Ãâ·ÂÀ» Áö¿î´Ù¸é ¾î¶² ¸í·ÉÀÌ ½ÇÇàµÇ´ÂÁö ºÐ¸íÈ÷ ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù.

4. ÆÄÀÌÇÁ

ÀÌ ÀýÀº ÆÄÀÌÇÁ¸¦ ¾î¶»°Ô ¾²´ÂÁö ¸Å¿ì °£´ÜÇÏ°í ½Ç¿ëÀûÀÎ ¹æ¹ýÀ» ¼³¸íÇÏ°í, ¿Ö ´ç½ÅÀÌ ±×°ÍÀ» ¿øÇÒ °ÍÀÎÁö ¼³¸íÇÒ °ÍÀÌ´Ù.

4.1. ±×°ÍÀº ¹«¾ùÀΰ¡ ¿Ö ´ç½ÅÀº ±×°ÍÀ» »ç¿ëÇϱ⸦ ¿øÇÒ °ÍÀΰ¡

ÆÄÀÌÇÁ´Â ´ç½ÅÀÌ ÇÁ·Î±×·¥ÀÇ Ãâ·ÂÀ» ´Ù¸¥ ÇÁ·Î±×·¥ÀÇ ÀÔ·ÂÀ¸·Î »ç¿ëÇÏ°Ô ÇÑ´Ù.

4.2. ¿¹: sed¿Í °£´ÜÇÑ ÆÄÀÌÇÁ

ÀÌ°ÍÀº ÆÄÀÌÇÁ¸¦ »ç¿ëÇÏ´Â °£´ÜÇÑ ¹æ¹ýÀÌ´Ù.
ls -l | sed -e "s/[aeio]/u/g"   
¿©±â¼­, ¾Æ·¡ÀÇ »óȲÀÌ ¹ß»ýÇÑ´Ù. óÀ½¿¡ ls -l ¸í·ÉÀÌ ½ÇÇàµÇ°í, ±×°ÍÀÇ Ãâ·ÂÀÌ ÀμâµÇ´Â ´ë½Å ÇÁ·Î±×·¥¿¡ º¸³»Áø´Ù(ÆÄÀÌÇÁµÈ´Ù). °á±¹, ±×°ÍÀÌ ÇØ¾ß ÇÏ´Â °ÍÀ» ÀμâµÈ´Ù.

4.3. ¿¹: ´Ù¸¥ ls -l *.txt

¾Æ¸¶, ÀÌ°ÍÀº ls -l *.txt À» ½ÇÇàÇÏ´Â Á»´õ ´Ù¸¥ ¹æ¹ýÀÏ °ÍÀÌÁö¸¸, ÆÄÀÌÇÁ¸¦ ¹¦»çÇÏ·Á´Â °ÍÀÌÁö ÀÌ·± ¸®½ºÆà ¹®Á¦¸¦ Ç®·Á´Â °ÍÀÌ ¾Æ´Ï´Ù.
ls -l | grep "\.txt$"
¿©±â¼­, ls -l ÇÁ·Î±×·¥ÀÇ Ãâ·ÂÀÌ grep ÇÁ·Î±×·¥¿¡ º¸³»Á® °á±¹ Á¤±ÔÇ¥Çö½Ä "\.txt$" ¿¡ ¸Â´Â ÇàÀ» Ãâ·ÂÇÒ °ÍÀÌ´Ù.

5. º¯¼ö

´ç½ÅÀº ´Ù¸¥ ÇÁ·Î±×·¥ ¾ð¾îó·³ º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÚ·áÇüÀº ¾ø´Ù. bashÀÇ º¯¼ö´Â ¼ýÀÚ, ¹®ÀÚ, ¹®ÀÚ¿­À» Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù.

º¯¼ö¸¦ ¼±¾ðÇÒ ÇÊ¿ä´Â ¾øÀ¸¸ç, °ªÀ» ÂüÁ¶¿¡ ÇÒ´çÇϱ⸸ ÇÏ¸é º¯¼ö¸¦ »ý¼ºÇÑ´Ù.

5.1. ¿¹: º¯¼ö¸¦ »ç¿ëÇÑ Hello World!

#!/bin/bash
STR="Hello World!"
echo $STR

µÑ ° ÁÙÀº STRÀ̶ó´Â º¯¼ö¸¦ »ý¼ºÇÏ°í "Hello World!"À» ÇÒ´çÇÑ´Ù. ±×·¯¸é ÀÌ º¯¼öÀÇ °ªÀº ¾Õ¿¡ $¸¦ ºÙ¿©¼­ µÇãÀ» ¼ö ÀÖ´Ù. ¸¸¾à $ ±âÈ£¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é, ±× ÇÁ·Î±×·¥ÀÇ Ãâ·ÂÀº ´Ù¸¦ °ÍÀÌ°í, °ÅÀÇ ´ç½ÅÀÌ ¿øÇÏ´Â ¹Ù°¡ ¾Æ´Ò °ÍÀÌ´Ù.

5.2. ¿¹: ¸Å¿ì °£´ÜÇÑ ¹é¾÷ ½ºÅ©¸³Æ®(Á¶±Ý ³ª¾ÆÁø °Í)

#!/bin/bash          
OF=/var/my-backup-$(date +%Y%m%d).tgz
tar -cZf $OF /home/me/
ÀÌ ½ºÅ©¸³Æ®´Â ´Ù¸¥ °ÍÀ» µµÀÔÇÑ´Ù. ¿ì¼±, µÑ° ÁÙÀÇ º¯¼ö »ý¼º°ú ÇÒ´ç¿¡ Àͼ÷ÇØÁ®¾ß ÇÑ´Ù. ½Ä '$(date +%Y%m%d)'À» ÁÖ¸ñÇ϶ó. ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ¸é °ýÈ£ ¾È¿¡ ÀÖ´Â ¸í·ÉÀ» ½ÇÇàÇÏ°í Ãâ·ÂÀ» ÀâÀ» °ÍÀÌ´Ù.

ÀÌ ½ºÅ©¸³Æ® ¾È¿¡¼­, Ãâ·Â ÆÄÀÏ À̸§Àº ¸ÅÀÏ ´Þ¶óÁú °ÍÀÌ°í, date ¸í·ÉÀÇ Çü½Ä º¯È¯(+%Y%m%d) ¶§¹®ÀÌ´Ù.

¿¹°¡ ´õ ÀÖ´Ù.

echo ls

echo $(ls)

5.3. Áö¿ª º¯¼ö

Áö¿ª º¯¼ö´Â local Å°¿öµå¸¦ »ç¿ëÇÏ¿© »ý¼ºÇÒ ¼ö ÀÖ´Ù.
#!/bin/bash
HELLO=Hello 
function hello {
  local HELLO=World
  echo $HELLO
}
echo $HELLO
hello
echo $HELLO

ÀÌ ¿¹´Â ¾î¶»°Ô Áö¿ª º¯¼ö¸¦ »ç¿ëÇÏ´ÂÁö º¸¿©ÁØ´Ù.

6. Á¶°Ç¹®

Á¶°Ç¹®Àº ¾î¶² ÇൿÀ» ¼öÇàÇÒÁö ÇÏÁö ¾ÊÀ»Áö °áÁ¤ÇÏ°Ô ÇÏ°í, ÀÌ °áÁ¤Àº ½Ä¿¡ ÀÇÇØ ÀÌ·ç¾îÁø´Ù.

6.1. ½Ã½ÃÇÑ ÀÌ·Ð

Á¶°Ç¹®Àº ¿©·¯ Çü½ÄÀÌ ÀÖ´Ù. °¡Àå ±âº»ÀûÀÎ Çü½ÄÀº if ½Ä then ¹®ÀåÀε¥ ¿©±â¼­ ¹®ÀåÀº ½ÄÀÌ ÂüÀÏ ¶§¸¸ ½ÇÇàµÈ´Ù. '2<1'Àº °ÅÁþÀ¸·Î Æò°¡ µÇ°í '2>1'Àº ÂüÀ¸·Î Æò°¡µÈ´Ù.

Á¶°Ç¹®Àº ´ÙÀ½°ú °°ÀÌ ´Ù¸¥ Çü½ÄÀÌ µÉ ¼öµµ ÀÖ´Ù. if ½Ä then ¹®Àå1 else ¹®Àå2. ¿©±â¼­ ½ÄÀÌ ÂüÀÌ¸é ¹®Àå1ÀÌ ½ÇÇàµÇ°í, ±×·¸Áö ¾ÊÀ¸¸é ¹®Àå2°¡ ½ÇÇàµÈ´Ù.

¶Ç ´Ù¸¥ Çü½ÄÀÇ Á¶°Ç¹®Àº if ½Ä1 then ¹®Àå1 else if ½Ä2 then ¹®Àå2 else ¹®Àå3 ÀÌ´Ù. ÀÌ Çü½Ä¿¡¼­´Â else if ½Ä2 then ¹®Àå2 °¡ Ãß°¡µÈ °Í »ÓÀε¥, ±×°ÍÀº ½Ä2°¡ ÂüÀÏ ¶§ ¹®Àå2¸¦ ½ÇÇàÇÏ°Ô ÇÑ´Ù. ³ª¸ÓÁö´Â ´ç½ÅÀÌ »ý°¢ÇÏ´Â °Í°ú °°´Ù.

±¸¹®¿¡ ´ëÇÑ ¸»:

bash¿¡¼­ if ±¸¹®ÀÇ ±âº»Àº ¾Æ·¡¿Í °°´Ù.
if [ ½Ä ]; 
then 
½ÄÀÌ ÂüÀÏ ¶§ÀÇ ÄÚµå
fi

6.2. ¿¹: ±âº» Á¶°Ç¹® if ... then

#!/bin/bash
if [ "foo" = "foo" ]; then
  echo expression evaluated as true
fi
ÀÌ ÄÚµå´Â °ýÈ£ ¾ÈÀÇ ½ÄÀÌ ÂüÀ̸é then ´ÙÀ½¿¡¼­ fi Àü±îÁöÀÇ Äڵ带 ½ÇÇàÇÑ´Ù.

6.3. ¿¹: ±âº» Á¶°Ç¹® if ... then ... else

#!/bin/bash
if [ "foo" = "foo" ]; then
  echo expression evaluated as true
else
  echo expression evaluated as false
fi

6.4. º¯¼ö¸¦ °¡Áø Á¶°Ç¹®

#!/bin/bash
T1="foo"
T2="bar"
if [ "$T1" = "$T2" ]; then
  echo expression evaluated as true
else
  echo expression evaluated as false
fi

7. for, while, until

ÀÌ Àý¿¡¼­´Â for, while, until ¿¡ ´ëÇØ Ã£À» ¼ö ÀÖ´Ù.

for´Â ´Ù¸¥ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í ´Ù¸£´Ù. ±âº»ÀûÀ¸·Î, ÇÑ ¹®ÀÚ¿­ ¾È¿¡ ÀÖ´Â ´Ü¾îÀÇ ¿­À» ¹Ýº¹ÇÏ°Ô ÇÑ´Ù.

whileÀº ¸¸¾à Á¦¾î ½ÄÀÌ ÂüÀÏ ¶§ Äڵ带 ½ÇÇàÇÏ°í, °ÅÁþÀÏ ¶§(¶Ç´Â ½ÇÇàµÇ´Â Äڵ忡¼­ ¸í½ÃÀûÀÎ break¸¦ ã¾ÒÀ» ¶§)´Â ³¡³­´Ù.

untilÀº Á¦¾îÄڵ尡 °ÅÁþÀ¸·Î Æò°¡ µÇ´Â µ¿¾È ½ÇÇàµÂ´Â °Í¸¸ Á¦¿ÜÇÏ°í while°ú °ÅÀÇ °°´Ù.

¸¸¾à ´ç½ÅÀÌ while°ú untilÀÌ ¸Å¿ì ºñ½ÁÇÏ´Ù´Â °É ´«Ä¡Ã«´Ù¸é ´ç½ÅÀº Á¦´ë·Î º» °ÍÀÌ´Ù.

7.1. for ¿¹

#!/bin/bash
for i in $( ls ); do
  echo item: $i
done
µÑ° ÁÙ¿¡¼­ i¸¦ º¯¼ö·Î ¼±¾ðÇÏ°í $(ls)¾È¿¡ Æ÷ÇÔµÈ ´Ù¸¥ °ªÀ» ¾ò´Â´Ù.

¼¼Â° ÁÙÀº ÇÊ¿äÇÏ¸é ´õ ±æ¾îÁú ¼öµµ ÀÖ´Ù. Áï done ÀÌÀü¿¡ ´õ ¸¹Àº ÁÙÀÌ ÀÖÀ» ¼ö ÀÖ´Ù.

done Àº $iÀÇ °ªÀÌ »ç¿ëµÇ´Â °ÍÀÌ ³¡³µ°í $i°¡ »õ·Î¿î °ªÀ» ¾òÀ» ¼ö ÀÖÀ½À» °¡¸®Å²´Ù.

7.2. C ºñ½ÁÇÑ for

fiesh°¡ ÀÌ Çü½ÄÀ» ´õÇÏ´Â °ÍÀ» Á¦¾ÈÇß´Ù. C/Perl °ú ºñ½ÁÇÑ for ÀÌ´Ù.
#!/bin/bash
for i in `seq 1 10`;
do
  echo $i
done

7.3. while ¿¹

#!/bin/bash 
COUNTER=0
while [  $COUNTER -lt 10 ]; do
  echo The counter is $COUNTER
  let COUNTER=COUNTER+1 
done
ÀÌ ½ºÅ©¸³Æ®´Â Àß ¾Ë·ÁÁø(C, Pascal, perl, µî) for ±¸Á¶¸¦ Èä³»³½´Ù.

7.4. until ¿¹

#!/bin/bash 
COUNTER=20
until [  $COUNTER -lt 10 ]; do
  echo COUNTER $COUNTER
  let COUNTER-=1
done

8. ÇÔ¼ö


°ÅÀÇ ¸ðµç ÇÁ·Î±×·¥ ¾ð¾î¿¡¼­ ó·³, ´ç½ÅÀº Á»´õ ³í¸®ÀûÀÎ ¹æ¹ýÀ¸·Î ÄÚµåÀÇ Á¶°¢µéÀ» ¹­°Å³ª Àç±ÍÀÇ ±â¼úÀ» ½ÇÇàÇϱâ À§ÇØ ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

ÇÔ¼ö¸¦ ¼±¾ðÇÏ´Â °ÍÀº ´ë·« ³»_ÇÔ¼ö {³»_ÄÚµå} À¸·Î ¾²´Â °ÍÀÌ´Ù.

ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °ÍÀº ´Ù¸¥ ÇÁ·Î±×·¥Ã³·³ ´ç½ÅÀÌ ±× À̸§À» ¾²´Â °ÍÀÌ´Ù.

8.1. ÇÔ¼ö ¿¹

#!/bin/bash 
function quit {
  exit
}
function hello {
  echo Hello!
}
hello
quit
echo foo 
µÑ° - ³×° ÁÙÀº quit ÇÔ¼ö¸¦ Æ÷ÇÔÇÑ´Ù. ´Ù¼¸Â° - ÀÏ°ö°ÁÙÀº hello ÇÔ¼ö¸¦ Æ÷ÇÔÇÑ´Ù. ¸¸¾à ÀÌ ½ºÅ©¸³Æ®°¡ ¹«¾ùÀ» ÇÏ´ÂÁö Àß ¸ð¸£°ÚÀ¸¸é ²À ÇØ º¸½Ã¿À.

ÇÔ¼ö´Â ƯÁ¤ÇÑ ¼ø¼­·Î ¼±¾ðµÉ ÇÊ¿ä´Â ¾ø´Ù.

½ºÅ©¸³Æ®¸¦ ½ÇÇà½ÃÅ°¸é ¿ì¼± ´ÙÀ½À» ÁÖ¸ñÇ϶ó. ÇÔ¼ö hello°¡ È£ÃâµÇ¸é quit ÇÔ¼ö°¡ È£ÃâµÇ°í, ÇÁ·Î±×·¥Àº ¿­Â° ÁÙ¿¡ µµ´ÞÇÏÁö ¸øÇÑ´Ù.

8.2. ¸Å°³º¯¼ö¸¦ °¡Áø ÇÔ¼ö ¿¹

#!/bin/bash 
function quit {
  exit
}  
function e {
  echo $1 
}  
e Hello
e World
quit
echo foo 
ÀÌ ½ºÅ©¸³Æ®´Â ù¹ø° °Í°ú °ÅÀÇ °°´Ù. ÁÖµÈ Â÷ÀÌ´Â ÇÔ¼ö eÀÌ´Ù. ÀÌ ÇÔ¼ö´Â ¹ÞÀº ¸Å°³º¯¼ö¸¦ Ãâ·ÂÇÑ´Ù. ÇÔ¼ö¿¡¼­´Â ¸Å°³º¯¼ö´Â ½ºÅ©¸³Æ®¿¡ ÁÖ¾îÁø ¸Å°³º¯¼ö¿Í °°Àº ¹æ¹ýÀ¸·Î ´Ù·ç¾îÁø´Ù.

9. »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º

9.1. °£´ÜÇÑ ¸Þ´º¸¦ À§ÇÑ select »ç¿ë

#!/bin/bash
OPTIONS="Hello Quit"
select opt in $OPTIONS; do
  if [ "$opt" = "Quit" ]; then
    echo done
    exit
  elif [ "$opt" = "Hello" ]; then
    echo Hello World
  else
    clear
    echo bad option
  fi
done
´ç½ÅÀÌ ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇϸé ÀÌ°ÍÀÌ Å×½ºÆ®±â¹Ý¸Þ´º¿¡ ´ëÇÑ ÇÁ·Î±×·¡¸çÀÇ ²ÞÀ̶ó´Â °ÍÀ» º¼ °ÍÀÌ´Ù. ´ç½ÅÀº ÀÌ°ÍÀÌ ´Ü¼øÈ÷ $OPTIONS ¾ÈÀÇ °¢°¢ÀÇ ´Ü¾î¸¦ µµ´Â °Í¸¸ÀÌ ¾Æ´Ï¶ó´Â °Í ¸»°í´Â for±¸Á¶¿Í ºñ½ÁÇÏ´Ù. ÀÌ°ÍÀº »ç¿ëÀÚ ÀÀ´äÀ» ±â´Ù¸°´Ù.

9.2. ¸í·ÉÇà »ç¿ëÇϱâ

#!/bin/bash        
if [ -z "$1" ]; then 
  echo usage: $0 directory
  exit
fi
SRCD=$1
TGTD="/var/backups/"
OF=home-$(date +%Y%m%d).tgz
tar -cZf $TGTD$OF $SRCD
ÀÌ ½ºÅ©¸³Æ®°¡ ÇÏ´Â °ÍÀº ´ç½Å¿¡°Ô ¸íÈ®ÇÒ °ÍÀÌ´Ù. ù¹ø° Á¶°Ç¹®ÀÇ ½ÄÀº ÇÁ·Î±×·¥ÀÌ ¸Å°³º¯¼ö($1)À» ¹Þ¾Ò´ÂÁö üũÇÏ°í ¹ÞÁö ¾Ê¾ÒÀ¸¸é ³¡³»°í, »ç¿ëÀÚ¿¡°Ô °£´ÜÇÑ »ç¿ë¹ý ¸Þ½ÃÁö¸¦ º¸¿©ÁØ´Ù. ³ª¸ÓÁö ºÎºÐÀº ¸íÈ®ÇÏ´Ù.

10. ±âŸ

10.1. read·Î »ç¿ëÀÚ ÀÔ·Â Àбâ

¿©·¯ °æ¿ì¿¡ ´ç½ÅÀº »ç¿ëÀÚ°¡ ¾î¶² ÀԷ¿¡ ÀÀ´äÇϱ⸦ ¿øÇÒ°ÍÀÌ°í, ÀÌ°ÍÀ» ¼öÇàÇÏ´Â ¹æ¹ýÀº ¿©·¯°¡Áö°¡ ÀÖ´Ù. ±× Áß ÇÑ ¹æ¹ýÀÌ ÀÌ°ÍÀÌ´Ù.
#!/bin/bash
echo Please, enter your name
read NAME
echo "Hi $NAME!"

º¯È­¸¦ ÁÖ¾î ¿©·¯°³ÀÇ °ªÀº ¾òÀ» ¼ö ÀÖ°í ÀÌ ¿¹Á¦°¡ ±×°ÍÀ» ¸íÈ®È÷ ÇÒ °ÍÀÌ´Ù.
#!/bin/bash
echo Please, enter your firstname and lastname
read FN LN 
echo "Hi! $LN, $FN !"

10.2. »ê¼ú Æò°¡

¸í·ÉÇà(¶Ç´Â ¼Ð)¿¡¼­ ÀÌ°ÍÀ» ½ÃµµÇØ º¸¶ó.
echo 1 + 1 

´ç½ÅÀÌ 2¸¦ ±â´ëÇß´Ù¸é ±â´ë°¡ ¾î±ß³¯ °ÍÀÌ´Ù. ´ç½ÅÀº BASH°¡ ¾î¶² ¼ö¸¦ °è»êÇϱ⸦ ¿øÇÑ´Ù¸é ¾î¶»°Ô ÇØ¾ß ÇÒ±î? ´äÀÌ ÀÌ°ÍÀÌ´Ù.
echo $((1+1)) 

ÀÌ°ÍÀº Á» ´õ ³í¸®ÀûÀÎ Ãâ·ÂÀ» ¸¸µé °ÍÀÌ´Ù. ÀÌ°ÍÀº »ê¼ú½ÄÀ» °è»êÇÑ °ÍÀÌ´Ù. ´ç½ÅÀº ÀÌ°ÍÀ» ÀÌ·¸°Ô ÇÒ ¼ö ÀÖ´Ù.
echo $[1+1] 

´ç½ÅÀÌ ºÐ¼ö¸¦ »ç¿ëÇϱ⠿øÇÑ´Ù¸é, ¶Ç´Â ¼öÇÐ ¶Ç´Â ´ç½ÅÀÌ ±×°ÍÀ» ¿øÇϱ⸸ ÇÑ´Ù¸é, ´ç½ÅÀº »ê¼ú½ÄÀ» °è»êÇϱâ À§ÇØ bc¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

¸¸¾à echo $[3/4]À» ½ÇÇàÇÑ´Ù¸é, 0À» ¹ÝȯÇÒ °ÍÀÌ´Ù. ¿Ö³ÄÇϸé, bash´Â ´äÇÒ¶§ Á¤¼ö¸¸À» »ç¿ëÇϱ⠶§¹®ÀÌ´Ù. echo 3/4|bc -lÀ» ½ÇÇàÇϸé 0.75¸¦ ¹ÝȯÇÒ °ÍÀÌ´Ù.

10.3. bash ã±â

mike·ÎºÎÅÍÀÇ ¸Þ½ÃÁö¿¡¼­ (Thanks to ¸¦ º¸¶ó)

´ç½ÅÀº Ç×»ó #!/bin/bash .. ¸¦ »ç¿ëÇß´Ù.¾îµð¿¡ bash°¡ ÀÖ´ÂÁö ã´Â ¹æ¹ýÀ» º¸¿©ÁÖ¾úÀ¸¸é ÇÑ´Ù.

'locate bash'¸¦ ±ÇÀåÇÏÁö¸¸, ¸ðµç ±â°è°¡ locate¸¦ °¡Áö°í ÀÖ´Â °Ç ¾Æ´Ï´Ù.

/ µð·ºÅ丮¿¡¼­ 'find ./ -name bash' ¸¦ ÇÏ¸é ´ë°³ÀÇ °æ¿ì µÉ °ÍÀÌ´Ù.

Á¡°ËÇغ¼ À§Ä¡ Ãßõ

ls -l /bin/bash

ls -l /sbin/bash

ls -l /usr/local/bin/bash

ls -l /usr/bin/bash

ls -l /usr/sbin/bash

ls -l /usr/local/sbin/bash

'which bash'¸¦ ½ÃµµÇØ º¼ ¼öµµ ÀÖ´Ù.

10.4. ÇÁ·Î±×·¥ÀÇ ¹Ýȯ°ª ¾ò±â

bash¿¡¼­, ÇÁ·Î±×·¥ÀÇ ¹Ýȯ°ªÀº ƯÁ¤ÇÑ º¯¼ö $? ¿¡ ÀúÀåµÈ´Ù.

ÀÌ°ÍÀº ¾î¶»°Ô ÇÁ·Î±×·¥ÀÇ ¹Ýȯ°ªÀ» ¾î¶»°Ô Àâ´ÂÁö ¹¦»çÇÑ´Ù. ³ª´Â µð·ºÅ丮 µ¥ÀÌÅÍ°¡ Á¸ÀçÇÏÁö ¾Ê´Â´Ù°í °¡Á¤Çß´Ù.(ÀÌ ¶ÇÇÑ mike°¡ Á¦¾ÈÇß´Ù)
#!/bin/bash
cd /dada &> /dev/null
echo rv: $?
cd $(pwd) &> /dev/null
echo rv: $?

10.5. ¸í·É Ãâ·Â Àâ±â


ÀÌ ÀÛÀº ½ºÅ©¸³Æ®´Â ¸ðµç µ¥ÀÌÅͺ£À̽ºÀÇ Å×À̺íÀº º¸¿©ÁØ´Ù.(MySQLÀÌ ¼³Ä¡µÇ¾ú´Ù°í °¡Á¤ÇÑ´Ù). ¶ÇÇÑ, ¿Ã¹Ù¸¥ »ç¿ëÀÚ¿Í Æнº¿öµå¸¦ »ç¿ëÇÏ¿©'mysql'À» »ç¿ëÇÑ´Ù°í °¡Á¤ÇÑ´Ù.
#!/bin/bash
DBS=`mysql -uroot  -e"show databases"`
for b in $DBS ;
do
  mysql -uroot -e"show tables from $b"
done

10.6. ¿©·¯ ¼Ò½ºÆÄÀÏ

´ç½ÅÀº ¿©·¯°³ÀÇ ¸í·É¼Ò½º·Î ¿©·¯°³ÀÇ ÆÄÀÏÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

11. Tables

11.1. ¹®ÀÚ¿­ ºñ±³ ¿¬»êÀÚ

(1) s1 = s2

(2) s1 != s2

(3) s1 < s2

(4) s1 > s2

(5) -n s1

(6) -z s1


(1) s1 matches s2

(2) s1 does not match s2

(3) TO-DO

(4) TO-DO

(5) s1 (Çϳª ÀÌ»óÀÇ ¹®ÀÚ Æ÷ÇÔ)

(6) s1 is null

11.2. ¹®ÀÚ¿­ ºñ±³ ¿¹

µÎ ¹®ÀÚ¿­ ºñ±³
#!/bin/bash
S1='string'
S2='String'
if [ $S1=$S2 ];
then
  echo "S1('$S1') is not equal to S2('$S2')"
fi
if [ $S1=$S1 ];
then
  echo "S1('$S1') is equal to S1('$S1')"
fi

³ª´Â if $1 = $2 ¸¦ »ç¿ëÇÏ´Â °ÍÀ» ÂüÁ¶Çϱâ À§ÇØ Andreas BeckÀÌ º¸³½ ¸ÞÀÏÀ» ¿©±â¼­ ÀοëÇß´Ù.

ÀÌ°ÍÀº $S1 ¶Ç´Â $S2 °¡ ºñ¾úÀ» ¶§´Â ±×´ÙÁö ÁÁÀº »ý°¢Àº ¾Æ´Ñµ¥ ±×·² °æ¿ì parse ¿¡·¯°¡ ³¯ °ÍÀÌ´Ù. x$1=x$2 ¶Ç´Â "$1"="$2" °¡ ³´´Ù.

11.3. »ê¼ú ¿¬»êÀÚ


+

-

*

/

% (³ª¸ÓÁö)

11.4. »ê¼ú °ü°è ¿¬»êÀÚ

-lt (<)

-gt (>)

-le (<=)

-ge (>=)

-eq (==)

-ne (!=)

C ÇÁ·Î±×·¡¸Ó´Â ÀÌ ¿¬»êÀÚ¸¦ ÇØ´çÇÏ´Â °ýÈ£¿¡ ÀÖ´Â °Í¿¡ ´ëÀÀ½Ãų ¼ö ÀÖ°Ú´Ù.

11.5. ¾µ¸¸ÇÑ ¸í·É¾î


ÀÌ ÀýÀº Kees°¡ ´Ù½Ã ½è´Ù. ÀÌ ¸í·É¾îµéÀº ´ë°³ ¿ÏÀüÇÑ ÇÁ·Î±×·¥ ¾ð¾î¸¦ Æ÷ÇÔÇÑ´Ù. ÀÌ ¸í·É¾îµéÀº ´ÜÁö ±âº»¸¸ ¼³¸íÇÑ´Ù. Á» ´õ ÀÚ¼¼ÇÑ ¼³¸íÀ» À§Çؼ­´Â °¢ ¸í·É¾îÀÇ man ÆäÀÌÁö¸¦ º¸¶ó.

sed (stream editor)

sed ´Â ºñ´ëÈ­Çü ÆíÁý±â´Ù. È­¸é¿¡¼­ Ä¿¼­¸¦ ¿Å°Ü ÆÄÀÏÀ» º¯°æÇÏ´Â ´ë½Å ¸í·É ÆíÁý ½ºÅ©¸³Æ®·Î sed¸¦ »ç¿ëÇÏ¿© ÆíÁýÇÒ ÆÄÀÏÀÇ À̸§À» Ãß°¡ÇÒ ¼ö ÀÖ´Ù. sed¸¦ ÇÊÅÍ·Î ¼³¸íÇÒ ¼öµµ ÀÖ´Ù. ¸î °³ÀÇ ¿¹¸¦ º¸ÀÚ
  $sed 's/to_be_replaced/replaced/g' /tmp/dummy
sed´Â /tmp/dummy ÆÄÀÏÀ» Àо 'to_be_replaced'¸¦ 'replaced'·Î ¹Ù²Û´Ù. °á°ú´Â stdout(´ë°³ ÄܼÖ)·Î º¸³»ÁöÁö¸¸ À§ÀÇ ÁÙ ³¡¿¡ '> capture'¸¦ µ¡ºÙ¿©¼­ sed°¡ Ãâ·ÂÀ» ÆÄÀÏ capture·Î º¸³»°Ô ÇÒ ¼öµµ ÀÖ´Ù.

        $sed 12, 18d /tmp/dummy
sed´Â 12°¿¡¼­ 18°±îÁö¸¦ Á¦¿ÜÇÑ ÇàÀ» º¸¿©ÁØ´Ù. ¿øº» ÆÄÀÏÀÌ ÀÌ ¸í·É¾î¿¡ ÀÇÇØ ¹Ù²îÁö´Â ¾Ê´Â´Ù.

awk (µ¥ÀÌÅÍÆÄÀÏ ´Ù·ç±â, ÅؽºÆ® ÃßÃâ ¹× Ã³¸®)

AWKÀÇ ¿©·¯°¡Áö ±¸ÇöÀÌ Á¸ÀçÇÑ´Ù(°¡Àå ¸¹ÀÌ ¾Ë·ÁÁø ÀÎÅÍÇÁ¸®ÅÍ´Â GNUÀÇ gawk ¿Í 'new awk' mawk.) ¿øÄ¢Àº °£´ÜÇÏ´Ù. awk´Â ÆÐÅÏÀ» ÈÈ°í ÇØ´çµÇ´Â ¸ðµç ÆÐÅÏ¿¡ ¾î¶² ÇൿÀÌ ¼öÇàµÈ´Ù.

´Ù½Ã, ¾Æ·¡ ÇàÀ» Æ÷ÇÔÇÏ´Â ÆÄÀÏÀ» ¸¸µé¾ú´Ù.
test123 
test 
tteesstt

$ awk '/test/ {print}' /tmp/dummy

awk°¡ ã´Â ÆÐÅÏÀº 'test'ÀÌ°í /tmp/dummy ¾È¿¡¼­ ¹®ÀÚ¿­ 'test'¸¦ °¡Áö°í ÀÖ´Â ÇàÀ» ã¾ÒÀ» ¶§ ¼öÇàÇÏ´Â °ÍÀº ±× ÇàÀ» Ãâ·ÂÇÏ´Â °ÍÀÌ´Ù.

test123 
test 

$ awk '/test/ {i=i+1} END {print i}' /tmp/dummy

3

´ç½ÅÀÌ ¿©·¯ ÆÐÅÏÀ» ãÀ» ¶§´Â, ´ç½ÅÀº '-f file.awk'¸¦ °¡Áö°í µû¿ÈÇ¥»çÀÌÀÇ ÅؽºÆ®¸¦ ġȯÇØ¾ß ÇÏ¸ç ±×·¯¸é ¸ðµç ÆÐÅÏ°ú 'file.awk'ÀÇ ÇൿÀ» ³ÖÀ» ¼ö ÀÖ´Ù.

grep (°Ë»ö ÆÐÅÏ¿¡ ÇØ´çÇÏ´Â ÇàÀ» Ãâ·Â)

¿ì¸®´Â ÀÌÀüÀÇ Àå¿¡¼­ ÀÌ¹Ì ²Ï ¸¹Àº ±×·ì ¸í·ÉÀ» ºÃ°í, ±×°ÍÀº ÆÐÅÏ¿¡ ÇØ´çÇÏ´Â ÇàÀ» º¸¿©ÁØ´Ù. ±×·¯³ª grep Àº ´õ ¸¹Àº °ÍÀ» ÇÒ ¼ö ÀÖ´Ù.
$ grep "look for this" /var/log/messages -c

12

¹®ÀÚ¿­ "look for this"´Â ÆÄÀÏ /var/log/messages¿¡¼­ 12¹ø ¹ß°ßµÇ¾ú´Ù.


±×·¸´Ù ÀÌ ¿¹´Â ¼ÓÀÓ¼ö´Ù /var/log/messages´Â ²¿Áý¾îÁ³´Ù :)

wc (Çà, ´Ü¾î, ¹ÙÀÌÆ® ¼¼±â)

´ÙÀ½ÀÇ ¿¹¿¡¼­ ¿ì¸®´Â Ãâ·ÂÀÌ ¿ì¸®°¡ ±â´ëÇÏ´Â °ÍÀÌ ¾Æ´ÔÀ» º¸°Ô µÈ´Ù. ´õ¹Ì ÆÄÀÏ, ÀÌ ¿¹¿¡¼­ »ç¿ëµÈ °Íó·³ ´ÙÀ½ÀÇ ÅؽºÆ®¸¦ Æ÷ÇÔÇÑ´Ù. "bash introduction howto test file"
$ wc --words --lines --bytes /tmp/dummy

2 5 34 /tmp/dummy

Wc doesn't care about the parameter order. Wc always prints them in a standard order, which is, as you can see: . ¿ì¸®´Â ÆĶó¸ÞÅÍÀÇ ¼ø¼­¿¡ ´ëÇØ´Â ½Å°æ¾²Áö ¾Ê´Â´Ù. ¿ì¸®´Â ¾ðÁ¦³ª ±×°ÍÀ» Ç¥ÁØ ¼ø¼­·Î Ãâ·ÂÇÑ´Ù. ±×°Ç, ´ç½ÅÀÌ º¸´Â ¹Ù¿Í °°´Ù.

sort (ÅؽºÆ® ÆÄÀÏÀÇ Á¤·Ä)

À̹ø¿£ ´õ¹Ì ÆÄÀÏÀÌ ´ÙÀ½ÀÇ ¹®ÀÚ¿­À» Æ÷ÇÔÇÏ°í ÀÖ´Ù.
b 
c 
a

$ sort /tmp/dummy


Ãâ·ÂÀº ÀÌ·¸°Ô ³ª¿Â´Ù.
a 
b 
c 


¸í·ÉÀº ±×·¸°Ô ½±Áö¸¸Àº ¾Ê´Ù :) bc (°è»ê±â ÇÁ·Î±×·¥ ¾ð¾î)


bc´Â ¸í·ÉÇà¿¡¼­ÀÇ (ÆÄÀϷκÎÅÍ ÀԷ¹ÞÀº, ¸®µð·ºÅͳª ÆÄÀÌÇÁ°¡ ¾Æ´Ï¶ó) »Ó ¾Æ´Ï¶ó »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¿¡¼­µµ °è»êÀ» ¼öÇàÇÑ´Ù. ¾Æ·¡ÀÇ ¿¹´Â ÀÌ·± ¸í·É ¸î °³¸¦ º¸¿©ÁØ´Ù.

I start bc using the -q parameter to avoid a welcome message. ³ª´Â ȯ¿µ ¸Þ½ÃÁö¸¦ ÇÇÇϱâ À§ÇØ -q ÆĶó¸ÞÅ͸¦ ½è´Ù.
$ bc -q

1 == 5

0

0.05 == 0.05

1

5 != 5

0

2 ^ 8

256

sqrt(9)

3

while (i != 9) {

i = i + 1;

print i

}

123456789

quit

tput (Å͹̳Π¶Ç´Â terminfo µ¥ÀÌÅͺ£À̽ºÁúÀÇ ÃʱâÈ­)


A little demonstration of tput's capabilities: tputÀÇ ´É·ÂÀÇ ¿¹
$ tput cup 10 4

The prompt appears at (y10,x4). ÇÁ·ÒÇÁÆ®°¡ (y10,x4)¿¡ ³ªÅ¸³­´Ù.
$ tput reset


È­¸éÀ» ±ú²ýÀÌ ÇÏ°í ÇÁ·ÒÇÁÆ®°¡ (y1,x1)¿¡ ³ªÅ¸³­´Ù. (y0,x0)ÀÌ ¿ÞÂÊ À§ ±¸¼®ÀÓÀ» ÁÖ¸ñÇ϶ó.
$ tput cols

80

x¹æÇâ¿¡ °¡´ÉÇÑ ¹®ÀÚ¼ö¸¦ º¸¿©ÁØ´Ù.

(Àû¾îµµ) À̵é ÇÁ·Î±×·¥¿¡ Àͼ÷ÇØÁö±æ ±ÇÇÑ´Ù. ¸í·ÉÇà¿¡¼­ ´ç½ÅÀÌ ÁøÂ¥ ¸¶¼úÀ» ÇÏ°Ô ÇÒ ÀÛÀº ÇÁ·Î±×·¥µéÀÌ ¾î¸Ó¾î¸¶ÇÏ°Ô ¸¹´Ù.

¸î ¿¹Á¦´Â man ÆäÀÌÁö³ª fag¿¡¼­ °¡Á®¿Ô´Ù.

ID
Password
Join
You will be singled out for promotion in your work.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2005-07-26 11:58:59
Processing time 0.0175 sec