Subject : UNIX C-SHELL PROGRAMMING ±â¹ý(2)
Description :
CONTENTS:
1. C-SHEELÀ̶õ
2. UNIX SHEELÀÇ ÁÖ¿ä Æ¯¼º
3. C-SHEELÀÇ ¿ëµµ
4. SHELLÀÇ Á¾·ù
5. SHELL ¸í·É¾î¿Í ¸í·É¾î FILE
6. SHELL SCRIPTÀÛ¼º½Ã ÁÖÀÇ »çÇ×
7. SHELL SCRIPTÀÇ ¼öÇà
8. shell script º¯¼ö
9. temporary fileÀÇ »ç¿ë
10. shell script Á¦¾î¹®
11. ¹Ýº¹ Á¦¾î¹®ÀÇ Á¾·ù
12. Àμö list ó¸®
13. ȯ°æ º¯¼öÀÇ »ç¿ë(º¯¼ö¸íÀº ´ë¹®ÀÚ)
14. ±âÁ¤ º¯¼öÀÇ »ç¿ë (setÀ¸·Î ³»¿ë °Ë»ö)
15. shell º¯¼öÀÇ Æ¯¼º
16. ¹®ÀÚ single(') ¿Í double(") ¿Í backword apostroples(') »çÀÌÀÇ Â÷ÀÌÁ¡
17. shell º¯¼ö¸¦ »ç¿ëÇÑ »ê¼ú ¿¬»ê
18. shell scriptÀÇ debugging
19. ¸í·É¾îÀÇ ´ëü
20. ¸í·É¾î Áý´ÜÈ¿¡ À¯¿ëÇÑ ¹®ÀÚ¹× ¸í·É
21. BACKGROUND »óÅ¿¡¼ PROCESS¼öÇà
22. »ç¿ëÀÚ processÀÇ ½ÇÇà ¼øÀ§ÀÇ Á¶Á¤
23. ¼öÇàÁßÀÎ processÀÇ Á¤Áö¿Í Àç ¼öÇà
24. C-SHELL¸¦ ÀÌ¿ëÇÑ PROGRAM ¿¹
25.ÀϹÝÀûÀÎ UNIX ¸í·Éµé
DESCRIPTION:
9. temporary fileÀÇ »ç¿ë
ÇöÀç »ç¿ë directory¿¡ Àӽà fileÀ» ÀÛ¼º Çϴ°ÍÀº ¸Å¿ì ¾ÈÀüÇÏÁö¸¸ ´ÙÀ½°ú °°Àº ÀÌÀ¯·Î ÇÇÇϴ°Í
ÀÌ ÁÁ´Ù.
(1) ÇöÀçÀÇ directory ¿¡ TEMP¶ó´Â fileÀÌ ÀÌ¹Ì Á¸ÀçÇÒ °æ¿ì shell script¸¦ ¼öÇà ½Ã۸é
temp fileÀÌ »õ·Î¿î file·Î ´ëüµÇ¾î ¿øÇÏÁö ¾Ê´Â ºÎÀÛ¿ëÀÌ »ý±æ¼ö ÀÖ´Ù.
(2) ÇÑ »ç¿ëÀÚ°¡ ÀÛ¼ºÇÑ ¸í·É shell fileÀ» ´Ù¸¥ »ç¿ëÀÚ°¡ °øÀ¯ÇÏ·Á´Â °æ¿ì ¸í·ÉÀ» ¼öÇàÇÑ °á°ú
»ý¼ºµÇ´Â Àӽà fileÀÌ ´Ù¸¥ »ç¿ëÀÚ¿¡°Ô »ç¿ëµÉ¼ö ÀÖ´ÂÁö´Â È®½Ç ÇÏÁö ¾Ê´Ù.
¤·´ëü ¹æ¾È
(1) Àӽà file¸¸À» ÀúÀåÇÏ´Â directory¿¡ shell script file°ú ¼öÇàµÇ´Â PID¹øÈ£¸¦ ¿¬°áÇÑ
À̸§À¸·Î ÀúÀåÇÏ°Ô ÇÑ´Ù.
10. shell script Á¦¾î¹®
(1) Á¶°Ç¹®ÀÇ »ç¿ë
¸í·ÉÀ» ¿¬¼ÓÀ¸·Î ¼öÇàÇÏÁö ¾Ê°í Á¶°ÇÀ» ºÎ¿© ¼öÇà ¼ø¼¸¦ º¯°æÇϰíÀÚ ÇÒ¶§ »ç¿ë
korn shellÀÇ °æ¿ì
if <Á¶°ÇÀ̳ª ¸í·É Ç¥Çö½Ä> ;
then
ÂüÀÎ °æ¿ì - ¸í·É ¼öÇà
:
:
else
°ÅÁþÀÎ °æ¿ì - ¸í·É ¼öÇà
:
:
fi
c-shellÀÇ °æ¿ì
if {<Á¶°Ç½Ä/¸í·É Ç¥Çö½Ä>} then
ÂüÀÎ °æ¿ì - ¸í·É ¼öÇà
:
:
else
°ÅÁþÀÎ °æ¿ì - ¸í·É ¼öÇà
:
:
endif
¤·ÁÖÀÇ »çÇ×
¨ç thenÀÇ À§Ä¡
korn shell : if ¸í·É°ú ´Ù¸¥ line, Áï ´ÙÀ½ line
c-shell : if¿Í °°Àº line»ó¿¡ ¸í·É
¨è c-shell¿¡¼´Â <Á¶°Ç½Ä/¸í·É Ç¥Çö½Ä>Àº { }¿¡ Ç¥Çö
¨é <Á¶°Ç½Ä/¸í·É Ç¥Çö½Ä>ÀÇ °ÅÁþ¿¡ ´ëÇÑ Ã³¸®°¡ ÇÊ¿äÄ¡ ¾ÊÀº elseÀÌÇÏ´Â »ý·«
¨ê ¸í·É Ç¥Çö½ÄÀÇ Âü/°ÅÁþÀÇ ¸í·É¾î Á¾·á »óÅ º¯¼ö¿¡ °ªÀ» ÇÒ´çÇÑ´Ù.
Á¤»óÀûÀÎ °æ¿ì º¯¼ö °ªÀº 0(zero)°¡ ÀúÀåµÇ¸ç ½ÇÆÐÀÎ °æ¿ì ´Ù¸¥ °ªÀÌ ÀúÀåµÇ¸ç ¾Æ·¡ÀÇ
°ª¿¡ ÀÇÇØ °áÁ¤µÈ´Ù.
korn shellÀÇ °æ¿ì : $status
c-shellÀÇ °æ¿ì : $?
¤·Á¶°Ç ´ë»ó
¨ç ¸í·É¾î°¡ Á¶°Ç ºñ±³ ÆÇ´Ü
¨è º¯¼ö¿¡ ÀúÀåµÈ °ª°ú ¼ýÀÚÀÇ ºñ±³ ÆÇ´Ü - »ê¼ú ¿¬»êÀÚ »ç¿ë
¨é º¯¼ö¿¡ ÀúÀåµÈ ¹®ÀÚ¿°úÀÇ ºñ±³ ÆÇ´Ü
¨ê fileÀÇ Á¾·ù ºñ±³ ÆÇ´Ü
¨ë fileÀ̳ª º¯¼öÀÇ ÇüŸ¦ ºñ±³ ÆÇ´Ü
¤· ¹®ÀÚ¿ ºñ±³ ¿¬»êÀÚ
Ç¥Çö½Ä ¼³ ¸í
<¹®ÀÚ¿1> == <¹®ÀÚ¿2> µÎ¹®ÀÚ¿ÀÌ °°À¸¸é Âü
<¹®ÀÚ¿1> != <¹®ÀÚ¿2> µÎ¹®ÀÚ¿ÀÌ ´Ù¸£¸é Âü
<¹®ÀÚ¿1> =~ <¹®ÀÚ¿2> <¹®ÀÚ¿1>°ú<¹®ÀÚ¿2>¿¡ ÁöÁ¤ÇÑ ÆÐÅÏÀÌ ÀÏÄ¡ Çϸé Âü
<¹®ÀÚ¿1> !~ <¹®ÀÚ¿2> <¹®ÀÚ¿1>°ú<¹®ÀÚ¿2>¿¡ ÁöÁ¤ÇÑ ÆÐÅÏÀÌ ÀÏÄ¡ ÇÏÁö ¾ÊÀ¸¸é Âü
¤·fileÀÇ Á¢±Ù±ÇÇÑ, Á¸ÀçÀ¯¹«, Á¾·ù ºñ±³ Á¶°Ç
Á¶ °Ç ¼³ ¸í
-r Á¢±Ù±ÇÇÑ Àбâ(r)·Î ¼³Á¤ µÇ¸é Âü
-w Á¢±Ù±ÇÇÑ ¾²±â(w)·Î ¼³Á¤ µÇ¸é Âü
-x Á¢±Ù±ÇÇÑ ½ÇÇà(x)·Î ¼³Á¤ µÇ¸é Âü
-e Á¸ÀçÇϸé Âü
-o ¼ÒÀ¯ÀÚ°¡ ¸í·É ½ÇÇàÀÚ¸é Âü
-O ¼ÒÀ¯ÀÚ°¡ ¸í·É ½ÇÇàÀÚ¸é Âü
-z ÁöÁ¤ÇÑ fileÀÇ ³»¿ëÀÌ ¾øÀ¸¸é Âü, Áï file size 0(zero)¸é Âü
-f directory °¡ ¾Æ´Ï¸é Âü
-d directory À̸é Âü
¤·»ê¼ú ¿¬»êÀÚ
¿¬»êÀÚ ¼³ ¸í
+ µ¡¼À
- »¬¼À
* °ö¼À
/ ³ª´¼À
% ³ª´¼ÀÀÇ Á¤¼ö ³ª¸ÓÁö
^ ½Â¼ö
¤·³í¸® ¿¬»êÀÚ
¿¬»êÀÚ Ç¥ Çö ÀÚ ¼³ ¸í
NOT ! <Ç¥Çö½Ä> <Ç¥Çö½Ä>ÀÌ ÂüÀÌ¸é °ÅÁþ
OR <Ç¥Çö½Ä1>||<Ç¥Çö½Ä2> Ç¥Çö½Ä 1,2Áß Çϳª°¡ ÂüÀ̸é Âü
AND <Ç¥Çö½Ä1>&&<Ç¥Çö½Ä2> Ç¥Çö½Ä 1,2°¡ ¸ðµÎ ÂüÀ϶§ Âü
(2)Áßø if¹®
if ~ else ~ endif¹® ³»¿¡ if ~ else ~ endif¹®ÀÌ ÀÖ´Â °æ¿ì
(3) ¹Ýº¹ (LOOPING)
11. ¹Ýº¹ Á¦¾î¹®ÀÇ Á¾·ù
(1) interative ¹Ýº¹¹®
ÁöÁ¤µÈ ¼ýÀÚ¸¸Å ¹Ýº¹ÇÏ¿© ¼öÇà
korn shellÀÇ °æ¿ì
for <Á¦¾îº¯¼ö> in (<Ç׸ñÀÇ list>)
do <¸í·É¹®>
done
c-shellÀÇ °æ¿ì
foreach<Á¦¾îº¯¼ö> (<Ç׸ñ list>)
<¸í·É¹®>
end
* ¹®Àå³»¿¡ Ç׸ñ list¸¦ ±â¼úÇϱ⠺¸´Ù´Â ¸í·É¾î Àμö list·Î ´ëüÇϴ°ÍÀÌ ÀϹÝÀûÀÌ´Ù.
¤·Ç׸ñ list¸¦ ¸í·É¾îÀÇ list·Î ´ëü °æ¿ì
korn shellÀÇ °æ¿ì c-shellÀÇ °æ¿ì
for <¹Ýº¹ Ƚ¼ö> in $@ foreach <¹Ýº¹È½¼ö> in ($argv[*])
(2) conditional ¹Ýº¹¹®
Á¶°ÇÀÌ ¸¸Á·ÇÏ¸é °è¼Ó ¼öÇà ¸¸Á·ÇÏÁö ¾ÊÀ¸¸é Á¤Áö
korn shellÀÇ °æ¿ì
while<Á¶°Ç>
do
<¸í·É¾îµé>
done
c-shellÀÇ °æ¿ì
while (<Á¶°Ç>)
do
<¸í·É¾îµé>
end
* <Á¶°Ç>Àº if ~ else ~ endif¹®¿¡¼ »ç¿ëÇß´ø Á¶°Ç Ç¥Çö½Ä°ú °°´Ù.
¤·ÁÖÀÇ »çÇ×
¨ç <Á¶°Ç>ÀÌ ÂüÀ̸é ÀÏ·ÃÀÇ ¸í·ÉÀ» ¼öÇàÇÑÈÄ ´Ù½Ã <Á¶°Ç> Á¶»ç
¨è <Á¶°Ç>ÀÌ ÂüÀÌ¸é ¸í·É ¼öÇà, °ÅÁþÀÌ¸é ¹Ýº¹¹®À» ³¡³½´Ù.
¨é <Á¶°Ç>ÀÌ Âü¸¸ ÀÖÀ¸¸é ¹«ÇÑ loop󸮷Πprogram ¿À·ù ¹ß»ý
¨ê ¹«ÇÑ loop·Î ÆÇ´ÜµÇ¸é Ctrl+C·Î Á¤Áö
¨ë ¹«ÇÑ loopÀÇ ¹Ýº¹ ¿øÀÎÀ» ã¾Æ ¼öÁ¤
set noglob : ÀԷµǴ ¹®ÀÚ ?°¡ if¹®¿¡¼ÀÇ ÆÐÅÏ »ç¿ë ¹®ÀÚ·Î »ç¿ëµÇ´Â°ÍÀ» ¹æÁöÇÑ´Ù.
12. Àμö list ó¸®
$# - positional parameter ¶ó°í ºÎ¸£¸ç, ÀμöÀÇ °¹¼ö¸¦ ÀúÀåÇϸç, °ø¹é¿¡ ÀÇÇØ ºÐ¸®µÇ¾î À§Ä¡¸¦
³ª´«´Ù. º¸Åë $1 ~ $9±îÁöÀÇ º¯¼ö¸¦ »ç¿ëÇÏ¸ç ±×ÀÌ»óÀ϶§´Â { }¸¦ »ç¿ëÇÏ¿© Ç¥½ÃÇÑ´Ù.
13. ȯ°æ º¯¼öÀÇ »ç¿ë(º¯¼ö¸íÀº ´ë¹®ÀÚ)
¨ç ÀÌ¹Ì Á¤ÀÇµÇ¾î »ç¿ëÀÚ°¡ À̸§À» ¸¸µéÁö ¾Ê¾Æµµ system¿¡¼ ÀÚµ¿ÀûÀ¸·Î º¯¼ö¿¡ °ªÀ» ÀúÀåÇϰųª
»ç¿ëÀÚ°¡ ÇÊ¿ä·Î ÇÒ¶§ ÀÌ¿ë ÇÒ ¼ö ÀÖ´Ù.
¨è »ç¿ëÀÚ È¯°æ¿¡¼ Á¦¾î µÈ´Ù.
¤·È¯°æ º¯¼ö¿¡ ´ëÇÑ ¼³¸í (env¸í·ÉÀ¸·Î ³»¿ë °Ë»ö)
º¯¼ö¸í ¼³ ¸í
TERM TERMINAL À¯ÇüÀ» Á¤ÀÇÇÏ´Â CODE·Î ¼³Á¤
HOME »ç¿ëÀÚÀÇ HOME DIRECTORYÁ¤ÀÇ, Àý´ë °æ·Î¸íÀ» °¡Áø´Ù.
PATH ¸í·É¾î °Ë»ö °æ·Î
USER ¸ðµç »ç¿ëÀÚÀÇ LOGIN¸íÀ» °¡Áø´Ù.
SHELL »ç¿ëÀÚÀÇ LOGIN SHELL, Àý´ë °æ·Î¸íÀ» °¡Áø´Ù.
MAIL »ç¿ëÀÚÀÇ ¿ìÆí¹°À» ÀúÀåÇÏ´Â DIRECTORY·Î °æ·Î¸íÀ» °¡Áø´Ù.
EXINT ex, viÆíÁý±â¿¡ »ç¿ëÇÏ´Â OPTIONµéÀ» ÃʱâÈÇÑ´Ù.(40°³)
TERMCAP °³ÀÎ DATA BASE¸¦ »ç¿ëÇϵµ·Ï ÇÑ´Ù. (DEFAULT´Â etc/termcap)
TTYLINE TERMONAL DEVICE PROGRAMÀ» »ç¿ëÇÒ¼ö ÀÖµµ·Ï ÇϱâÀ§Çؼ ¼±¾ð
14. ±âÁ¤ º¯¼öÀÇ »ç¿ë (setÀ¸·Î ³»¿ë °Ë»ö)
set º¯¼ö = ¹®ÀÚ¿
±âÁ¤ º¯¼ö¸í ¼³ ¸í
path ¸í·É¾î °Ë»ö °æ·Î directory¸íÀÇ list¸¦ °¡Áø´Ù.
cdpath unix °èÃþÀû file systemÀÇ Æ¯¼ºÀ» »ì·Á ÀÛ¾÷¿µ¿ªÀ» µ¶¸³µÈ
directory·Î ±¸ºÐ ÇÒ¶§ »ç¿ë, Àý´ë °æ·Î¸íÀÇ ´Ü¾îlist
home HOME DIR.ÀÇ Àý´ë °æ·Î¸íÀ» Æ÷ÇÔÇϰí ÀÖ´Ù.
LOGIN PROGRAMÀ¸·Î ºÎÅÍ ¹ÞÀº °ªÀ¸·Î ÃʱâÈ ÇÑ´Ù.
shell default c-shellÀº shellÀ» /bin/csh·Î ÃʱâÈ
´ë°³ÀÇ °æ¿ì´Â ¹Ù²ÙÁö ¾Ê´Â°ÍÀÌ ÁÁ´Ù.
mail MAIL BOX°¡ Àִ°÷ ¼³Á¤, set mail = (60 /usr/sara)
history history¿¡ ÀúÀåµÈ ¸í·ÉÀÇ °¹¼ö Á¤ÀÇ
histchars history¸í·ÉÀ» ¼öÇà½Ã۴µ¥ »ç¿ëÇϱ⸦ ¿øÇÏ´Â ¼ö°³ÀÇ ¹®ÀÚ
·Î ¼³Á¤, .cshrc file³»¿¡¼ Á¤ÀÇ ÇÒ¼ö ÀÖ´Ù.
savehist login session°£ÀÇ history list¸¦ ¿¬°áÇÏ°í ½ÍÀ»¶§ »ç¿ë
prompt prompt Á¤ÀÇ, »ç°Ç¹øÈ£¸¦ º¸À̱â À§ÇØ history ¹®ÀÚ ! ¸¦
Æ÷ÇÔ ½Ãų¼ö ÀÖ´Ù.
ignoreeof ½Ç¼ö·Î Ctrl+D¸¦ typingÇßÀ»¶§ logout¹æÁö
noclobber Ãâ·Â ¹æÁö Àüȯ½Ã ÀÌ¿¡ Á¸ÀçÇÏ´Â file¿¡ °ãÃÄ ¾²´Â°ÍÀ» ¹æÁö
time ÁÖ¾îÁø ½Ã°£ ÀÌ»óÀÇ CPU½Ã°£À» ¼Ò¿äÇÏ´Â ¸ðµç ¸í·É¿¡ ´ëÇØ
Áö¿ø »ç¿ë Åë°èÄ¡¸¦ º¸¿© ÁØ´Ù.
cwd »ç¿ëÀÚÀÇ ÇöÀç »ç¿ë directory
15. shell º¯¼öÀÇ Æ¯¼º
¨ç shell script¿¡¼ Á¤ÀÇµÇ¾î »ý¼ºµÈ º¯¼ö´Â shell script°¡ ¼öÇàµÇ´Â µ¿¾È¸¸ Á¸ÀçÇϹǷΠ¸í·É¾î
ÀÔ·Â line¿¡¼ ´ëȽÄÀ¸·Î ÂüÁ¶Çϰųª ´Ù¸¥ shell script¿¡¼ »ç¿ëÇÒ ¼ö ¾ø´Ù.
¨è terminal¿¡¼ keyboard ÀÔ·ÂÀ¸·Î º¯¼ö¸¦ ¼³Á¤ÇÑ °æ¿ì shell script³»¿¡¼ ´ëȽÄÀ¸·Î »ç¿ëÇÑ
º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ¾ø°Ô µÈ´Ù.
¨é Áö¿ª º¯¼ö´Ù.
1)º¯¼ö°ª °øÀ¯
korn shellÀÇ °æ¿ì c-shell ÀÇ °æ¿ì
typeset <º¯¼ö¸í> = <ÇÒ´çÇÒ °ª> setenv <º¯¼ö¸í> <ÇÒ´ç°ª>
export <º¯¼ö¸í>
export <º¯¼ö¸í> = <ÇÒ´ç°ª>
export ¸í·É : shell script¿Í ¸í·É ÀÔ·Â line¿¡¼ °øÀ¯ÇÏ¿© »ç¿ë
* »óÀ§ shell¿¡¼ °øÀ¯ÇÑ º¯¼ö´Â ÇÏÀ§ shell¿¡¼ ÂüÁ¶ °¡´É ÇÏÁö¸¸ ÇÏÀ§ shell¿¡¼ °øÀ¯ÇÑ º¯¼ö´Â
»óÀ§ shell¿¡¼ ÂüÁ¶ ÇÒ¼ö ¾ø´Ù.
16. ¹®ÀÚ single(') ¿Í double(") ¿Í backword apostroples(') »çÀÌÀÇ Â÷ÀÌÁ¡
Ç¥½Ä ¹®ÀÚ ¼³ ¸í
' ¹«Á¶°Ç ¹®ÀÚ¿ ÇØ¼®ÇÏ¿© Ãâ·Â
º¯¼ö,¸í·É¾î,¹®ÀÚ ÆÐÅÏ ¸ðµÎ ÀÎ½Ä ÇÏÁö ¸øÇÔ
" ¸í·É¾î¿Í º¯¼ö¸¦ ÇØ¼®ÇÏ¿© ¹®ÀÚ¿°ú Ãâ·Â
¸í·É¾î '<¼öÇà ¸í·É¾î>'
º¯¼ö´Â $<º¯¼ö¸í> Çü½ÄÀ¸·Î »ç¿ë
` ¸í·É¾î³ª º¯¼ö·Î ÇØ¼®
17. shell º¯¼ö¸¦ »ç¿ëÇÑ »ê¼ú ¿¬»ê
korn shellÀÇ °æ¿ì
((<º¯¼ö> = <º¯¼ö³ª°ª> <»ê¼ú¿¬»êÀÚ><º¯¼ö³ª°ª>
let <º¯¼ö> = <º¯¼ö³ª°ª><»ê¼ú¿¬»êÀÚ><º¯¼ö³ª°ª>
c-shellÀÇ °æ¿ì
@º¯¼ö=<º¯¼ö³ª°ª><»ê¼ú¿¬»êÀÚ><º¯¼ö³ª°ª>
18. shell scriptÀÇ debugging
1) shell tracing
set verbose - shell script program¿¡ set verboseÀÇ ¸í·ÉÀ» Ãß°¡ÇÏ¿© ¸í·ÉÀ» ÃßÀû
Á¶»ç ÇÒ¼öÀÖ´Ù.
korn shellÀÇ °æ¿ì c-shellÀÇ °æ¿ì
ksh -v <½ÇÇà shell script¸í> csh -v <½ÇÇà shell script¸í>
ksh -x <½ÇÇà shell script¸í> csh -x <½ÇÇà shell script¸í>
Revision History
ÀÛ¼ºÀÏÀÚ : 96.06.14
ÀÛ¼ºÀÚ : ±èµµ°æ
¼öÁ¤ÀÏÀÚ :
¼öÁ¤ÀÚ