8. È¿À²ÀûÀÎ ÀÛ¾÷À» À§Çؼ­

´Ù¸¥ ¿©·¯°¡Áö ÈǸ¢ÇÑ ¾ð¾î(C, Perl, Python)°¡ ÀÖÀ½¿¡µµ ºÒ±¸ÇÏ°í ¿©ÀüÈ÷ ½©À» »ç¿ëÇÏ´Â ÀÌÀ¯´Â È¿À²ÀûÀÎ ÀÛ¾÷À» À§Çؼ­ ÀϰÍÀÌ´Ù. bash ´Â »ç¿ëÀÚ°¡ Áߺ¹½Ã°£À» ÁÙÀ̰í, ÀÛ¾÷À» ºü¸£°í È¿À²ÀûÀ¸·Î ÇÒ¼ö ÀÖµµ·Ï Çϱâ À§Çؼ­ history, ¸í·É¾îġȯ °ú °°Àº ¿©·¯°¡Áö ±â´ÉµéÀ» Á¦°øÇÑ´Ù.

8.1. ȯ°æº¯¼ö

bash(´Ù¸¥ ½©µµ ¸¶Âù°¡Áö)Àº ȯ°æº¯¼ö¶ó´Â°É »ç¿ëÇÑ´Ù. ȯ°æº¯¼ö´Â ½©ÀÌ ¿î¿ëµÇ´Âµ¥ ÇÊ¿äÇÑ ¿©·¯°¡Áö °ªµéÀ» °¡Áö°í ÀÖ´Ù. ´ëÇ¥ÀûÀÎ ¿¹·Î SHELL º¯¼ö°¡ ÀÖ´Ù. À̺¯¼ö¿¡´Â ÇöÀç ·Î±×ÀÎ À¯Àú°¡ »ç¿ëÇϰí ÀÖ´Â ½©ÀÌ ¾î¶²°ÇÁö¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù. ¿©·¯ºÐÀÌ ÇöÀç »ç¿ëÇÏ´Â ½©ÀÌ ¾î¶²°ÇÁö ¾Ë°í ½Í´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇϸéµÈ´Ù.
	[yundream@localhost yundream]$ echo $SHELL
	/bin/bash
		
À̹ۿ¡µµ PATH, USER, TERM, PWD µî°ú °°Àº ¸¹Àº ȯ°æº¯¼ö¸¦ °¡Áö°í ÀÖ´Ù.

ȯ°æº¯¼ö¸¦ ¼¼ÆÃÇϱâ À§Çؼ­´Â export ¶ó´Â ½© ¸í·É¾î¸¦ »ç¿ëÇÑ´Ù.
	[yundream@localhost yundream]$ export MY_NAME="yundream"
	[yundream@localhost yundream]$ echo $MY_NAME
	yundream
		
ÇöÀç ¼³Á¤µÇ¾î ÀÖ´Â ¸ðµç ȯ°æº¯¼ö¸¦ º¸±â À§Çؼ­´Â set ¸í·ÉÀ» ÀÌ¿ëÇÏ¸é µÈ´Ù. ÀÌ·¸°Ô ÇØ¼­ ¼³Á¤µÈ ȯ°æº¯¼ö´Â ÇöÀç ½©¿¡¼­ ½ÇÇàµÇ´Â ¸ðµç ÀÚ½Ä ÇÁ·Î¼¼½º¿¡ »ó¼Ó µÇ°Ô µÈ´Ù.

8.2. history

history ´Â ÀÌÀü¿¡ ³»·È´ø ¸í·ÉÀ» ±â¾ïÇØ¼­ ´Ù½Ã ½á¸ÔÀ¸·Á°í ÇÒ¶§ À¯¿ëÇÏ´Ù. Å͹̳ο¡¼­ history ¸í·ÉÀ» ³»¸²À¸·Î½á ÀÌÀü¿¡ ½ÇÇàÇß´ø ¸í·É¾îÀÇ ¸ñ·ÏÀ» È®ÀÎÇÒ¼ö ÀÖ´Ù.
	[yundream@localhost yundream]$ history
	    1   micq 
		2   exit
		3   make clean
		...
		454 vi /home/httpd/cont/httpd.conf
		455 history
			
È÷½ºÅ丮°¡ ÀúÀåµÇ´Â Å©±â´Â ȯ°æº¯¼öÀÎ HISTSIZE ¿¡ ÀúÀåµÈ´Ù. º¸ÅëÀº 1000 ¶óÀÎÁ¤µµ·Î ¼¼ÆÃµÇ¾î ÀÖ´Ù. È÷½ºÅ丮¿¡¼­ ¿øÇÏ´Â ¸í·ÉÀ» »ç¿ëÇÏ°í ½ÍÀ»¶§´Â "!n" À» »ç¿ëÇÏ¸é µÈ´Ù. "n" Àº È÷½ºÅ丮 ¹øÈ£ÀÌ´Ù. Áï make clean À» ´Ù½Ã ½ÇÇàÇÏ°í ½Í´Ù¸é "!3" ÇÏ¸é µÈ´Ù.

"!" ´Â È÷½ºÅ丮 ±â´ÉÀ» »ç¿ëÇϱâ À§ÇÑ ½© ¿¹¾à¾îÀÌ´Ù. ÀÌ°É »ç¿ëÇϸé ÀÛ¾÷À» ÆíÇÏ°Ô ÇÒ¼ö ÀÖ´Ù. "!(¹®ÀÚ¿­)" ÇÏ°Ô µÇ¸é, È÷½ºÅ丮 ¸ñ·ÏÁß¿¡¼­ (¹®ÀÚ¿­)·Î ½ÃÀ۵Ǵ °¡Àå ÃÖ±Ù¿¡ ½ÇÇàµÈ È÷½ºÅ丮ÀÇ ¸í·É¾î¸¦ ºÒ·¯¿Í¼­ ½ÇÇàÇÏ°Ô µÈ´Ù. À§¿¡¼­ 454 ¹øÀÇ ¸í·ÉÀ» ´Ù½Ã ½ÇÇàÇÏ°í ½Í´Ù¸é, !vi ÇÏ¸é µÈ´Ù. ¹°·Ð !v ÇØµµ °ü°è¾ø´Ù.

È÷½ºÅ丮´Â grep °ú Á¶ÇյǾ ÀÚÁÖ »ç¿ëÇÑ´Ù.
	[root@localhost /root]# history | grep configure
	    8  ./configure --with-apache=../apache-1.3.22 
	   13  ./configure 
	   14  ./configure i686-linux
	   15  ./configure --help
	[root@localhost /root]# !8
	./configure --with-apache=../apache-1.3.22
			

8.3. ÃÖ±Ù¸í·É¾î ġȯ

¾Æ·¡¿Í °°Àº »óȲÀ» °¡Á¤Çغ¸ÀÚ
	[root@localhost /]# vp file1 file2
	bash: vp: command not found
			
»ç½ÇÀº file1 À» file2 ·Î º¹»çÇÏ´Â ÀÛ¾÷À» ÇÏ±æ ¿øÇßÀ¸³ª, cp ¸¦ vp ·Î Ä¡´Â ¿À·ù¸¦ ¹üÇß´Ù. À̸¦ Á¤Á¤Çϱâ À§Çؼ­´Â óÀ½ºÎÅÍ ´Ù½ÃÄ¡°Å³ª, ÀÚÆÇÀ» "v" ±îÁö ¿òÁ÷ ¿©¼­ À̸¦ "c"·Î ±³Ã¼ ÇØ¾ß ÇÒ°ÍÀÌ´Ù. ÀÌ·²°æ¿ì "^"¸¦ »ç¿ëÇϸé ÀÛ¾÷À» Á»´õ »¡¸® ÇÒ¼ö ÀÖ´Ù.
	[root@localhost /]# ^v^c
	cp file1 file2
			
"^[¿øº»¹®ÀÚ¿­]^[¹Ù²ð¹®ÀÚ¿­]" ÀÇ Çü½ÄÀ¸·Î »ç¿ëÇϸé, °¡Àå ÃÖ±ÙÀÇ ¸í·É¿¡¼­ ¿øº»¹®ÀÚ¿­À» ¹Ù²ð¹®ÀÚ¿­·Î ġȯÇÏ¿© ¸í·ÉÀ» ´Ù½Ã ½ÇÇàÇÏ°Ô µÈ´Ù.

8.4. Prompt

Prompt ¶õ ½©ÀÌ »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ±â´Ù¸®°í ÀÖÀ½À» À¯Àú¿¡°Ô ¾Ë·ÁÁÖ±â À§Çؼ­ »ç¿ëÇÑ´Ù. Prompt ¸¦ Àß »ç¿ëÇÏ°Ô µÇ¸é ¿©·¯ºÐÀÌ ¾î¶² È£½ºÆ® ¿¡¼­ ÀÛ¾÷À» ÇÏ´ÂÁö, ȤÀº ¸î½ÃÀÎÁö, ¾î¶² µð·ºÅ丮¿¡¼­ ÀÛ¾÷Çϰí ÀÖ´ÂÁö µîÀÇ ÀÛ¾÷Á¤º¸µîÀ» ¾òÀ»¼ö ÀÖ´Ù.

ÇÁ·ÒÇÁÆ® Á¤º¸´Â ȯ°æº¯¼ö PS1 ¿¡ ÀúÀåµÈ´Ù. echo $PS1 ÇØ º¸¸é ÇöÀç ¼³Á¤µÈ ÇÁ·ÒÇÁÆ® Á¤º¸¸¦ º¼¼ö ÀÖ´Ù. bash ´Â È¿À²ÀûÀÎ ÇÁ·ÒÇÁÆ® Á¤º¸¸¦ º¸¿©ÁÖ±â À§Çؼ­ ¸î°³ÀÇ Æ¯¼ö ¹®ÀÚ µéÀ» Á¦°øÇϰí ÀÖ´Ù.

Ç¥ 2. Prompt ¿¹¾à¾î

\tÇöÀç ½Ã°£À» HH:MM:SS Çü½ÄÀ¸·Î º¸¿©ÁØ´Ù.
\d³¯ÀÚ¸¦ "¿äÀÏ ¿ù ÀÏ" Çü½ÄÀ¸·Î º¸¿©ÁØ´Ù.
\s½©ÀÇ À̸§À» º¸¿©ÁØ´Ù.
\wÇöÀç ÀÛ¾÷µð·ºÅ丮¸¦ ¿ÏÀü°æ·Î·Î º¸¿©ÁØ´Ù.
\WÇöÀç ÀÛ¾÷µð·ºÅ丮ÀÇ À̸§À» º¸¿©ÁØ´Ù.
\uÇöÀç »ç¿ëÀÚÀÇ »ç¿ëÀÚ¸í
\hÈ£½ºÆ®À̸§
\!ÀÌ ¸í·ÉÀÇ È÷½ºÅ丮 ¹øÈ£
\nnn8Áø¼ö nnn¿¡ ÇØ´çÇÏ´Â ¹®ÀÚ
\[ºñÃâ·Â¹®ÀÚÀÇ ½ÃÄö½º¸¦ ½ÃÀÛÇÑ´Ù.
\]ºñÃâ·Â¹®ÀÚÀÇ ½ÃÄö½º¸¦ ¸¶Ä£´Ù.
°£´ÜÇÑ ¿¹¸¦ µé¾îº¸ÀÚ. ¿ì¸®´Â Prompt »ó¿¡ ÇöÀç ½Ã°£°ú, ÀÛ¾÷µð·ºÅ丮 Á¤º¸¸¦ º¸¿©ÁÖ±æ ¿øÇÑ´Ù. ÀÌ·²¶§´Â ¾Æ·¡¿Í °°ÀÌ ÇÏ¸é µÈ´Ù.
	[root@localhost httpd]# export PS1="[\t \W]# "
	[17:40:37 html]# echo "¼º°øÀûÀ¸·Î ¹Ù²¼±º¿ä" 
			

8.5. Prompt Àü¿¡ ¸í·É ½ÇÇà½Ã۱â

ÀÌ·¸°Ô ÇØ¼­ ÇÁ·ÒÇÁÆ®¸¦ º¯°æ½ÃŰ´Â¹æ¹ýÀ» ¾Ë¾Ò´Ù. ±×·±µ¥, ¾î¶² ÇÑÅÒ ÀÇ °æ¿ì ÇÑÅÒÀÇ Å¸ÀÌÆ²¹Ù Á¦¸ñÀÌ ½Ã½Ã°¢°¢ ¹Ù²î´Â°ÍÀ» º»ÀûÀÌ ÀÖÀ» °ÍÀÌ´Ù. ÀÌ°Ç ¾î¶»°Ô Çϴ°ÍÀϱî. ?

ÀÌ°Ç bash ½©ÀÇ È¯°æº¯¼öÀÎ PROMPT_COMMAND ¸¦ »ç¿ëÇÏ¿© °¡´ÉÇÏ´Ù. PROMPT_COMMAND ¿¡´Â ƯÁ¤ ¸í·É¾î(½ºÆ®¸³Æ® ȤÀº ½ÇÇàÆÄÀÏ)°¡ °ªÀ¸·Î µé¾î°¡ Àִµ¥, »ç¿ëÀÚ¿¡°Ô ÇÁ·ÒÇÁÆ®°¡ ¶³¾îÁö±â Àü¿¡ º¯¼ö¿¡ ÀÖ´Â ¸í·ÉÀÌ ½ÇÇàµÈ´Ù.
	[root@localhost /root]# export PROMPT_COMMAND="date"
	¿ù 11¿ù 19 17:51:03 KST 2001
	[root@localhost /root]# echo "hello world"
	hello world
	¿ù 11¿ù 19 17:51:19 KST 2001
	[root@localhost /root]# 
			
À§ÀÇ ¿¹¿¡¼­ º¸´Ù½ÃÇÇ »ç¿ëÀÚ ÇÁ·ÒÇÁÆ®°¡ ¶³¾îÁú¶§ ¸¶´Ù, ±×Àü¿¡ "date" ¸í·ÉÀÌ ½ÇÇàµÊÀ» ¾Ë¼ö ÀÖ´Ù. ÀÌ ¸í·ÉÀ» ¾à°£ º¯°æÇϸé ŸÀÌÆ²¹Ù°¡ ±×¶§±×¶§ ¹Ù²îµµ·Ï ¼³Á¤ ÇÒ¼ö ÀÖ´Ù.
	[root@localhost /home]# export PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
			
À§ÀÇ °æ¿ì µð·ºÅ丮°¡ º¯°æµÉ¶§ ¸¶´Ù ÀÛ¾÷µð·ºÅ丮°¡ ŸÀÌÆ²¹Ù¿¡ Ç¥½Ã °¡µÈ´Ù. À§ÀÇ ³»¿ëÀ» /etc/bashrc Á¤µµ¿¡ ÀÔ·ÂÇØ ³õÀ¸¸é âÀ» ¶ç¿ï¶§ ¸¶´Ù ȯ°æº¯¼öÀÇ ³»¿ëÀÌ Àû¿ëµÉ°ÍÀÌ´Ù.

ÇÏÁö¸¸ ´Ü¼øÈ÷ »ç¿ëÀÚ¿¡°Ô ½Ã°¢ÀûÀ¸·Î ±×·²µíÇÏ°Ô º¸¿©ÁÖ´Â°Í ¿Ü¿¡µµ PROMPT_COMMAND ¸¦ ÀÀ¿ëÇϸé Á»´õ ´Ù¾çÇÑ ÀϵéÀ» ÇÒ¼ö ÀÖ´Ù. ´ÙÀ½Àå¿¡¼­ ÀÌ¿¡ ´ëÇØ¼­ °£´ÜÇÏÁö¸¸ À¯¿ëÇÑ ÇѰ¡Áö ¿¹¸¦ µé¾î º¸µµ·Ï ÇϰڴÙ.

8.6. PROMPT_COMMAND ¸¦ ÀÌ¿ëÇÑ »ç¿ëÀÚ ¸í·É¾î ÃßÀû

¿äÁò ÄÄÅ;÷°è ÃÖ´ëÀÇ È­µÎ´Â "º¸¾È"ÀÌ´Ù. ÀÌ·± ´ë¼¼¿¡ ¸ÂÃ߾ »ç¿ëÀÚ°¡ ÇöÀç ¹«½¼ ¸í·ÉÀ» »ç¿ëÁß¿¡ ÀÖ´ÂÁö ½Ç½Ã°£À¸·Î È®ÀÎÇÒ¼ö ÀÖ´Â °£´ÜÇÑ º¸¾È ÇÁ·Î±×·¥? À» ÀÛ¼ºÇغ¸µµ·Ï ÇϰڴÙ.

º¸Åë ÀÌ·¯ÇÑ »ç¿ëÀÚ ¸í·ÉÀ» ½Ç½Ã°£À¸·Î ÃßÀûÇÏ´Â ÇÁ·Î±×·¥À» º¸¾È½© À̶ó°í ÇÑ´Ù. - ¹°·Ð ½ÇÁö º¸¾È½©¿¡´Â À̿ܿ¡µµ, ÆÄÀϺ¸¾È, µð·ºÅ丮 º¸¾È, ÇÁ·Î¼¼½ºº¸¾È µî°ú °°Àº ´Ù¾çÇÑ ±â´ÉÀÌ µé¾î°¡Áö¸¸ ¿©±â¼­´Â »ç¿ëÀÚÀÇ ÀÛ¾÷³»¿ëÀ» ½Ç½Ã°£À¸·Î È®ÀÎÇÒ¼ö ÀÖ´Â ±â´É¸¸ ±¸ÇöÇϰڴ٠- º¸Åë º¸¾È½©À» ¸¸µå´Âµ¥´Â ¸¹Àº ½Ã°£°ú Àγ»½ÉÀÌ ÇÊ¿äÇÏÁö¸¸, ½©ÀÇ Æ¯Â¡À» Á¶±Ý¸¸ ¾Ë°í ÀÖ´Ù¸é, ½Ã°£°ú ³ë·ÂÀ» ´ÜÃà½Ãų¼ö°¡ ÀÖ´Ù.

PROMPT_COMMAND ¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ýÀº ¸Å¿ì °£´ÜÇÏ´Ù. »ç¿ëÀÚÀÇ ÇÁ·ÒÇÁÆ®°¡ ¶³¾îÁ³À»¶§, »ç¿ëÀÚÀÇ À̸§, »ç¿ëÀÚÀÇ °¡Àå ÃÖ±ÙÀÇ ¸í·É¾îµîÀ» °¡Á®¿Í¼­ À̸¦ ÆÄÀÏ·Î ¸¸µé°Å³ª ¼ÒÄÏÀ» ÅëÇØ¼­, °ü¸®ÀÚ¿¡°Ô Å뺸Çϵµ·Ï ÇÏ¸é µÈ´Ù. ½©¿¡¼­´Â ¹°·Ð history¶ó´Â°É Á¦°øÇϱä ÇÏÁö¸¸, history ´Â ½Ç½Ã°£ÀÌ ¾Æ´Ï´Ù. ÀÏ´ÜÀº ½©ÀÇ ¸Þ¸ð¸®¿¡¼­ °ü¸®Çϰí ÀÖ´Ù°¡, ·Î±×¾Æ¿ô ÇÏ¸é ±×¶§ ÆÄÀÏ·Î ÀúÀåÀÌ µÈ´Ù. Áï ·Î±×¾Æ¿ô Çϱâ Àü±îÁö´Â ¹«½¼ÀÏÀ» ÇÏ´ÂÁö Åë ¾Ë¼ö°¡ ¾ø°Ô µÈ´Ù. ±×¸®°í history ¸í·ÉÀ» ÀÌ¿ëÇØ¼­ ÆíÁý °¡´ÉÇÏ´Ù. ´ÙÀ½°ú °°ÀºÀ̸§À¸·Î moniter.sh ¶õ °£´ÜÇÑ ½ºÅ©¸³Æ® ÆÄÀÏÀ» ÀÛ¼ºÇÑ´Ù.
	LAST_COMMAND=`tail -1 /root/dump`
	CURRENT_COMMAND=`history 1`

	if [ "$LAST_COMMAND" != "$CURRENT_COMMAND" ]
	then
		echo "$CURRENT_COMMAND" >> /root/dump
	fi
			
À§ÀÇ ½ºÅ©¸³Æ®¸¦ Àû´çÇÑ µð·ºÅ丮¿¡ º¹»çÇÑ´ÙÀ½¿¡, °¢ »ç¿ëÀÚ°¡ ·Î±×ÀÎÇÒ¶§ ȯ°æº¯¼ö·Î ÃʱâÈ­ ½ÃŰ¸é µÈ´Ù.
	export PROMPT_COMMAND="/usr/bin/moniter.sh"
			
¹°·Ð À§ÀÇ ÇÁ·Î±×·¥¿¡´Â ¿©·¯°¡Áö ºÎÁ·ÇÑÁ¡ÀÌ ¸¹´Ù. ¸¶Áö¸· ¸í·ÉÀÌ È­ÀÏ·Î ÀúÀåµÇ¸ç, ¶ÇÇÑ »ç¿ëÀÚ°¡ ½©ÀÇ Æ¯¼ºÀ» À߾˰í ÀÖ°í, ¿©±â¿¡ ÁÖÀǸ¦ ±â¿ïÀδٸé ȯ°æº¯¼ö¸¦ ºÐ¼®Çؼ­ À̸¦ Á¶ÀÛÇÒ¼ö ÀÖ´Ù. ÀÌ´Â ¿©·¯°¡Áö ¹æ¹ýÀ» ÅëÇØ¼­ ÇØ°áÇÒ¼ö ÀÖÁö¸¸, ÀÌ´Â ½©½ºÅ©¸³ÆÃÀÇ ¹üÀ§¸¦ ¹þ¾î³ª´Â °ÍÀÓÀ¸·Î, °£´ÜÈ÷ ÀÌ·¯ÇÑ ÀÏÀ» ÇÒ¼öµµ ÀÖ´Ù¶ó´Â °Í¸¸ ÀÌÇØÇØ µÎ±â·Î ÇÏÀÚ. ÀÌ ±ÛÀ» Àд ¿©·¯ºÐÀÌ ÁÁÀº ¹æ¹ýÀ» »ý°¢ÇØ º¸±â ¹Ù¶õ´Ù. (¹°·Ð °¡Àå ÁÁÀº ¹æ¹ýÀº ½© ½î¾²¸¦ ¼öÁ¤ÇÏ´Â °Å´Ù. »ý°¢¸¸Å­ º¹ÀâÇÏÁö ¾ÊÀ¸´Ï ¿¬±¸ÇØ º¸½Ã±æ..)