¿ø¹®: http://www.linuxnewbie.org/nhf/intel/programming/bash_cheat.html

ÀúÀÚ: ph34r

³¯Â¥:?

Á¦¸ñ: ÇÑ ´«¿¡ º¸´Â Bash ÇÁ·Î±×·¡¹Ö

½© ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÏ·Á´Â ÇÁ·Î±×·¡¸Ó¸¦ À§ÇÑ bash ÇÁ·Î±×·¡¹Ö ¿ä¾àÀÌ´Ù. ÀÌ ±ÛÀÇ ¸ñÀûÀº ÇÁ·Î±×·¡¹ÖÀ» °¡¸£Ä¡´Â µ¥¿¡ ÀÖÁö ¾Ê´Ù. ÀÌ¹Ì ÇϳªÀÇ ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ ¾Ë°í ÀÖÀ¸¸é¼­ bash ½ºÅ©¸³ÆÃÀ» ¹è¿ì·Á°í ÇÏ´Â »ç¶÷µéÀ» À§ÇÑ °ÍÀÌ´Ù.

ÇÁ·Î±×·¡¹ÖÀÇ ±âÃÊ

¸ðµç bash ½ºÅ©¸³Æ®´Â ¹Ýµå½Ã o/s¿¡°Ô ÀÎÅÍÇÁ¸®ÅÍ·Î ¹«¾ùÀ» ¾µ °ÍÀÌÁö ¾Ë·Á¾ß ÇÑ´Ù. ¸ðµç ½ºÅ©¸³Æ®ÀÇ Ã¹¹ø° ¶óÀÎÀº ´ÙÀ½°ú °°¾Æ¾ß ÇÑ´Ù:
#!/bin/bash

´ÙÀ½ ¸í·ÉÀ¸·Îbash ½ºÅ©¸³Æ®¸¦ ½ÇÇà °¡´ÉÇÏ°Ô ¸¸µé¾î¾ß ÇÑ´Ù.
chmod +x filename

º¯¼ö

º¯¼ö¸¦ ¸¸µé¾î °ªÀ» ´ëÀÔÇÑ´Ù. º¯¼ö¿¡´Â µ¥ÀÌÅÍ Å¸ÀÔÀÌ ¾ø´Ù(´Ù¸¥ ¾ð¾î¿¡¼­Ã³·³ º¯¼öÀÇ Å¸ÀÔÀ» Á¤ÀÇÇÏÁö ¾Ê°íµµ º¯¼öÀÇ °ªÀ¸·Î ¹®ÀÚ¿­, ¼ýÀÚ µîÀ» °¡Áø´Ù).
varname=value

º¯¼ö °ª¿¡ Á¢±ÙÇÒ ¶§´Â º¯¼ö À̸§ ¾Õ¿¡ $¸¦ ºÙÀδÙ
echo $varname

¸í·É ¶óÀο¡¼­ ÀÎÀڷμ­ ³Ñ°ÜÁø °ªÀº $#¸¦ ÅëÇØ Á¢±ÙÇÒ ¼ö ÀÖ´Ù. ¿©±â¼­ #´Â ³Ñ°ÜÁø °ªµéÀÇ ¹è¿­ Áß ±× °ªÀÇ À妽ºÀÌ´Ù. ÀÌ ¹è¿­Àº 1ºÎÅÍ ½ÃÀÛÇÑ´Ù.
command var1 var2 var3 .... varX
$1Àº var1ÀÌ ¹«¾ùÀ̵çÁö ±× °ªÀ» ³ªÅ¸³»¸ç, $2´Â var2ÀÇ °ªÀ» ³ªÅ¸³½´Ù. ³ª¸ÓÁöµµ ¸¶Âù°¡ÁöÀÌ´Ù.

³»ºÎ¿¡ Á¤ÀÇµÈ º¯¼öµé:

º¯¼ö

¿ëµµ

$1-$N

¸í·É ¶óÀÎÀ¸·ÎºÎÅÍ ½© ÇÁ·Î±×·¥¿¡ ³Ñ°ÜÁø ÀÎÀÚ(º¯¼ö)¸¦ ÀúÀåÇÑ´Ù.

$?

¸¶Áö¸· ¸í·ÉÀÌ ½ÇÇàµÇ¾úÀ» ¶§ÀÇ Å»Ãâ °ªÀ» ÀúÀåÇÑ´Ù.

$0

ÀÔ·ÂµÈ ¸í·ÉÀÇ Ã¹¹ø° ´Ü¾î(½© ÇÁ·Î±×·¥ÀÇ À̸§)¸¦ ÀúÀåÇÑ´Ù.

$*

¸í·É ¶óÀο¡¼­ ÀÔ·ÂµÈ ¸ðµç ÀÎÀÚµé(($1 $2 ¡¦)À» ÀúÀåÇÑ´Ù.

"$@"

¸í·É ¶óÀο¡¼­ ÀÔ·ÂµÈ ¸ðµç ÀÎÀÚµéÀ» °³º°ÀûÀ¸·Î µû¿ÈÇ¥¸¦ ¾º¿î ÇüÅÂ("$1" "$2" ...)·Î ÀúÀåÇÑ´Ù.

ÀÎ¿ë ºÎÈ£

º¸ÅëÀÇ µû¿ÈÇ¥("like these")´Â ½©ÀÌ °ø¹é ¹®ÀÚ¸¦ ¹«½ÃÇϵµ·Ï Çؼ­ ³Ñ°ÜÁø ÇϳªÀÇ ÀÎÀÚ ¶Ç´Â »ç¿ëÇÒ ¹®ÀÚ¿­·Î »ý°¢ÇÏ°Ô ÇÑ´Ù. ÇÏÁö¸¸ µû¿ÈÇ¥ ¾ÈÀÇ Æ¯¼ö ¹®ÀÚ´Â ÀνÄÇÑ´Ù.

ÀÛÀº µû¿ÈÇ¥('like this')´Â ¾î¶² ¹®ÀÚ¿­ÀÌ ³Ñ°ÜÁöµç °£¿¡ ½©ÀÌ ¸ðµç Ư¼ö ¹®ÀÚ¸¦ ¹«½ÃÇؼ­ Çؼ®Çϵµ·Ï ÇÑ´Ù.

¿ª µû¿ÈÇ¥(`command`)´Â ´Ù¸¥ ±â´ÉÀ» ÇÑ´Ù. ÇÑ ¸í·ÉÀÇ °á°ú¸¦ ´Ù¸¥ ¸í·É¿¡¼­ »ç¿ëÇÏ°í ½ÍÀ» ¶§ ¿ª µû¿ÈÇ¥¸¦ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î, º¯¼ö contents ÀÇ °ªÀ» ÇöÀç µð·ºÅ丮 ¾È¿¡ ÀÖ´Â ÆÄÀÏÀÇ ¸®½ºÆ®¿Í °°°Ô ÇÏ°í ½Í´Ù¸é ´ÙÀ½°ú °°Àº ¸í·ÉÀ» ÀÔ·ÂÇÏ¸é µÈ´Ù: contents=`ls`. ls ÇÁ·Î±×·¥ÀÇ °á°ú°¡ º¯¼ö contents¿¡ µé¾î °£´Ù.

³í¸®¿Í ºñ±³

·çÇÁ¿¡ÀÇ ÀÔÀå/Å»Ãâ Á¶°ÇÀ» üũÇÏ´Â if-then ¹®Àå°ú °°Àº Á¶°Ç ¿¬»ê½ÄÀÇ °è»ê¿¡´Â test¶ó ºÒ¸®´Â ¸í·ÉÀÌ »ç¿ëµÈ´Ù.

test expression
¶Ç´Â
[ expression ]

>

¼öÄ¡ ºñ±³

int1 -eq int2

int1ÀÌ int2¿Í °°´Ù¸é True¸¦ ¸®ÅÏÇÑ´Ù.

int1 -ge int2

int1ÀÌ int2º¸´Ù Å©°Å³ª °°À¸¸é True¸¦ ¸®ÅÏÇÑ´Ù.

int1 -gt int2

int1ÀÌ int2º¸´Ù Å©¸é True¸¦ ¸®ÅÏÇÑ´Ù.

int1 -le int2

int1ÀÌ int2º¸´Ù À۰ųª °°À¸¸é True¸¦ ¸®ÅÏÇÑ´Ù.

int1 -lt int2

int1ÀÌ int2º¸´Ù ÀÛÀ¸¸é True¸¦ ¸®ÅÏÇÑ´Ù.

int1 -ne int2

int1ÀÌ int2°ú ´Ù¸£¸é True¸¦ ¸®ÅÏÇÑ´Ù.

 

¹®ÀÚ¿­ ºñ±³

str1 = str2

str1°ú str2°¡ ÀÏÄ¡Çϸé True¸¦ ¸®ÅÏÇÑ´Ù.

str1 != str2

str1°ú str2°¡ ´Ù¸£¸é True¸¦ ¸®ÅÏÇÑ´Ù.

str

strÀÌ nullÀÌ ¾Æ´Ï¸é True¸¦ ¸®ÅÏÇÑ´Ù.

-n str

strÀÇ ±æÀÌ°¡ 0º¸´Ù Å©¸é True¸¦ ¸®ÅÏÇÑ´Ù.

-z str

strÀÇ ±æÀÌ°¡ 0°ú °°À¸¸é True¸¦ ¸®ÅÏÇÑ´Ù.(±æÀÌ°¡ 0ÀÎ °ÍÀº null°ú ´Ù¸£´Ù)

 

ÆÄÀÏ ºñ±³

-d filename

ÆÄÀÏ filenameÀÌ µð·ºÅ丮¸é True¸¦ ¸®ÅÏÇÑ´Ù.

-f filename

ÆÄÀÏ filenameÀÌ ÀϹÝÀûÀÎ ÆÄÀÏÀ̸é True¸¦ ¸®ÅÏÇÑ´Ù.

-r filename

ÆÄÀÏ filenameÀÌ ÇÁ·Î¼¼½º¿¡ ÀÇÇØ ÀÐÇôÁø´Ù¸é True¸¦ ¸®ÅÏÇÑ´Ù.

-s filename

ÆÄÀÏ filenameÀÇ ±æÀÌ°¡ 0ÀÌ ¾Æ´Ï¸é True¸¦ ¸®ÅÏÇÑ´Ù.

-w filename

ÆÄÀÏ filenameÀÌ ÇÁ·Î¼¼½º¿¡ ÀÇÇØ ¾²¿©Áú ¼ö ÀÖ´Ù¸é True¸¦ ¸®ÅÏÇÑ´Ù.

-x filename

ÆÄÀÏ filenameÀÌ ¼öÇà °¡´ÉÇÏ´Ù¸é True¸¦ ¸®ÅÏÇÑ´Ù.

 

Ç¥Çö½Ä ºñ±³

!expression

expressionÀÌ true°¡ ¾Æ´Ï¸é true¸¦ ¸®ÅÏÇÑ´Ù.

expr1 -a expr2

expr1°ú expr2°¡ trueÀ̸é true¸¦ ¸®ÅÏÇÑ´Ù. ( && , and )

expr1 -o expr2

expr1À̳ª expr2 Áß Àû¾îµµ Çϳª°¡ trueÀ̸é true¸¦ ¸®ÅÏÇÑ´Ù. ( ||, or )

 

³í¸®(À̾)

If...then

if [ expression ]
        then
                commands
fi
 

If..then...else

if [ expression ]
        then
                commands
        else
                commands
fi
 

If..then...else If...else

 
if [ expression ]
        then
                commands
elif [ expression2 ]
        then
                commands
else
                commands
fi

Case select

case string1 in
        str1)
                commands;;
        str2)
                commands;;
        *)
                commands;;
esac
 

string1Àºstr1, str2¿Í ºñ±³µÈ´Ù. ¸¸ÀÏ ÀÌ Áß Çϳª°¡ string1°ú ÀÏÄ¡ÇÑ´Ù¸é, ÀÌÁß ¼¼¹ÌÄÝ·ÐÀÌ ³ª¿Ã ¶§±îÁö commands°¡ ½ÇÇàµÈ´Ù. ¸¸ÀÏ ¾î´À °Íµµ string1°ú ÀÏÄ¡ÇÏÁö ¾Ê´Â´Ù¸é, *¿¡ ÇØ´çÇÏ´Â commands°¡ ½ÇÇàµÈ´Ù. ÀÌ°ÍÀº µðÆúÆ® °æ¿ì·Î, *°¡ ¸ðµç ¹®ÀÚ¿­¿¡ ÇØ´çÇϱ⠶§¹®ÀÌ´Ù.

¹Ýº¹(·çÇÁ, loop)

 
for var1 in list
do
        commands
done

ÀÌ°ÍÀº list ¾ÈÀÇ °¢ Ç׸ñ¿¡ ´ëÇØ Çѹø¾¿ ½ÇÇàµÈ´Ù. ÀÌ list´Â °ø¹é ¹®ÀÚ·Î ±¸ºÐµÈ ¿©·¯ °³ÀÇ ´Ü¾î¸¦ ´ã°í ÀÖ´Â º¯¼ö(ls³ª cat ¸í·ÉÀÇ Ãâ·Â°ú °°Àº)ÀÏ ¼ö ÀÖ´Ù. ¶Ç´Â ¹®Àå¿¡ Á÷Á¢ ÀÔ·ÂµÈ °ªµéÀÇ ¸®½ºÆ®ÀÏ ¼öµµ ÀÖ´Ù. ·çÇÁ¸¦ µ¹ ¶§¸¶´Ù, º¯¼ö var1¿¡´Â ¸®½ºÆ®ÀÇ Ç׸ñ Áß ÇöÀç Ç׸ñÀÌ ´ëÀԵǴµ¥ ¸¶Áö¸· Ç׸ñ¿¡ À̸¦ ¶§±îÁö °è¼Ó ¹Ýº¹µÈ´Ù.

 
while [ expression ]
do
        commands
done
 
until [ expression ]
do
        commands
done
 

ÇÔ¼ö

ÇÔ¼ö ¸¸µå´Â ¹ý:

fname(){
        commands
}
 

ÇÔ¼ö¸¦ ºÎ¸¦ ¶© ´ÙÀ½ÀÇ ¹®¹ýÀ» »ç¿ëÇÑ´Ù: fname

ÀÎÀÚ¸¦ ¹Þ¾ÆµéÀÌ´Â ÇÔ¼ö ¸¸µé±â:

fname2 (arg1,arg2...argN){
        commands
}

ÀÎÀÚ ÀÖ´Â ÇÔ¼ö ºÎ¸£´Â ¹ý: fname2 arg1 arg2 ... argN