· 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
Executive ability is prominent in your make-up.


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.0183 sec