´Ù¸¥ ¿©·¯°¡Áö ÈǸ¢ÇÑ ¾ð¾î(C, Perl, Python)°¡ ÀÖÀ½¿¡µµ ºÒ±¸ÇÏ°í ¿©ÀüÈ÷ ½©À» »ç¿ëÇÏ´Â ÀÌÀ¯´Â È¿À²ÀûÀÎ ÀÛ¾÷À» À§Çؼ ÀϰÍÀÌ´Ù. bash ´Â »ç¿ëÀÚ°¡ Áߺ¹½Ã°£À» ÁÙÀ̰í, ÀÛ¾÷À» ºü¸£°í È¿À²ÀûÀ¸·Î ÇÒ¼ö ÀÖµµ·Ï Çϱâ À§Çؼ history, ¸í·É¾îġȯ °ú °°Àº ¿©·¯°¡Áö ±â´ÉµéÀ» Á¦°øÇÑ´Ù.
bash(´Ù¸¥ ½©µµ ¸¶Âù°¡Áö)Àº ȯ°æº¯¼ö¶ó´Â°É »ç¿ëÇÑ´Ù. ȯ°æº¯¼ö´Â ½©ÀÌ ¿î¿ëµÇ´Âµ¥ ÇÊ¿äÇÑ ¿©·¯°¡Áö °ªµéÀ» °¡Áö°í ÀÖ´Ù. ´ëÇ¥ÀûÀÎ ¿¹·Î SHELL º¯¼ö°¡ ÀÖ´Ù. À̺¯¼ö¿¡´Â ÇöÀç ·Î±×ÀÎ À¯Àú°¡ »ç¿ëÇϰí ÀÖ´Â ½©ÀÌ ¾î¶²°ÇÁö¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù. ¿©·¯ºÐÀÌ ÇöÀç »ç¿ëÇÏ´Â ½©ÀÌ ¾î¶²°ÇÁö ¾Ë°í ½Í´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇϸéµÈ´Ù.
[yundream@localhost yundream]$ echo $SHELL /bin/bash |
ȯ°æº¯¼ö¸¦ ¼¼ÆÃÇϱâ À§Çؼ´Â export ¶ó´Â ½© ¸í·É¾î¸¦ »ç¿ëÇÑ´Ù.
[yundream@localhost yundream]$ export MY_NAME="yundream" [yundream@localhost yundream]$ echo $MY_NAME yundream |
history ´Â ÀÌÀü¿¡ ³»·È´ø ¸í·ÉÀ» ±â¾ïÇØ¼ ´Ù½Ã ½á¸ÔÀ¸·Á°í ÇÒ¶§ À¯¿ëÇÏ´Ù. Å͹̳ο¡¼ history ¸í·ÉÀ» ³»¸²À¸·Î½á ÀÌÀü¿¡ ½ÇÇàÇß´ø ¸í·É¾îÀÇ ¸ñ·ÏÀ» È®ÀÎÇÒ¼ö ÀÖ´Ù.
[yundream@localhost yundream]$ history 1 micq 2 exit 3 make clean ... 454 vi /home/httpd/cont/httpd.conf 455 history |
"!" ´Â È÷½ºÅ丮 ±â´ÉÀ» »ç¿ëÇϱâ À§ÇÑ ½© ¿¹¾à¾îÀÌ´Ù. ÀÌ°É »ç¿ëÇϸé ÀÛ¾÷À» ÆíÇÏ°Ô ÇÒ¼ö ÀÖ´Ù. "!(¹®ÀÚ¿)" ÇÏ°Ô µÇ¸é, È÷½ºÅ丮 ¸ñ·ÏÁß¿¡¼ (¹®ÀÚ¿)·Î ½ÃÀ۵Ǵ °¡Àå ÃÖ±Ù¿¡ ½ÇÇàµÈ È÷½ºÅ丮ÀÇ ¸í·É¾î¸¦ ºÒ·¯¿Í¼ ½ÇÇàÇÏ°Ô µÈ´Ù. À§¿¡¼ 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 |
¾Æ·¡¿Í °°Àº »óȲÀ» °¡Á¤Çغ¸ÀÚ
[root@localhost /]# vp file1 file2 bash: vp: command not found |
[root@localhost /]# ^v^c cp file1 file2 |
Prompt ¶õ ½©ÀÌ »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ±â´Ù¸®°í ÀÖÀ½À» À¯Àú¿¡°Ô ¾Ë·ÁÁÖ±â À§Çؼ »ç¿ëÇÑ´Ù. Prompt ¸¦ Àß »ç¿ëÇÏ°Ô µÇ¸é ¿©·¯ºÐÀÌ ¾î¶² È£½ºÆ® ¿¡¼ ÀÛ¾÷À» ÇÏ´ÂÁö, ȤÀº ¸î½ÃÀÎÁö, ¾î¶² µð·ºÅ丮¿¡¼ ÀÛ¾÷Çϰí ÀÖ´ÂÁö µîÀÇ ÀÛ¾÷Á¤º¸µîÀ» ¾òÀ»¼ö ÀÖ´Ù.
ÇÁ·ÒÇÁÆ® Á¤º¸´Â ȯ°æº¯¼ö PS1 ¿¡ ÀúÀåµÈ´Ù. echo $PS1 ÇØ º¸¸é ÇöÀç ¼³Á¤µÈ ÇÁ·ÒÇÁÆ® Á¤º¸¸¦ º¼¼ö ÀÖ´Ù. bash ´Â È¿À²ÀûÀÎ ÇÁ·ÒÇÁÆ® Á¤º¸¸¦ º¸¿©ÁÖ±â À§Çؼ ¸î°³ÀÇ Æ¯¼ö ¹®ÀÚ µéÀ» Á¦°øÇϰí ÀÖ´Ù.
Ç¥ 2. Prompt ¿¹¾à¾î
\t | ÇöÀç ½Ã°£À» HH:MM:SS Çü½ÄÀ¸·Î º¸¿©ÁØ´Ù. |
\d | ³¯ÀÚ¸¦ "¿äÀÏ ¿ù ÀÏ" Çü½ÄÀ¸·Î º¸¿©ÁØ´Ù. |
\s | ½©ÀÇ À̸§À» º¸¿©ÁØ´Ù. |
\w | ÇöÀç ÀÛ¾÷µð·ºÅ丮¸¦ ¿ÏÀü°æ·Î·Î º¸¿©ÁØ´Ù. |
\W | ÇöÀç ÀÛ¾÷µð·ºÅ丮ÀÇ À̸§À» º¸¿©ÁØ´Ù. |
\u | ÇöÀç »ç¿ëÀÚÀÇ »ç¿ëÀÚ¸í |
\h | È£½ºÆ®À̸§ |
\! | ÀÌ ¸í·ÉÀÇ È÷½ºÅ丮 ¹øÈ£ |
\nnn | 8Áø¼ö nnn¿¡ ÇØ´çÇÏ´Â ¹®ÀÚ |
\[ | ºñÃâ·Â¹®ÀÚÀÇ ½ÃÄö½º¸¦ ½ÃÀÛÇÑ´Ù. |
\] | ºñÃâ·Â¹®ÀÚÀÇ ½ÃÄö½º¸¦ ¸¶Ä£´Ù. |
[root@localhost httpd]# export PS1="[\t \W]# " [17:40:37 html]# echo "¼º°øÀûÀ¸·Î ¹Ù²¼±º¿ä" |
ÀÌ·¸°Ô ÇØ¼ ÇÁ·ÒÇÁÆ®¸¦ º¯°æ½ÃŰ´Â¹æ¹ýÀ» ¾Ë¾Ò´Ù. ±×·±µ¥, ¾î¶² ÇÑÅÒ ÀÇ °æ¿ì ÇÑÅÒÀÇ Å¸ÀÌÆ²¹Ù Á¦¸ñÀÌ ½Ã½Ã°¢°¢ ¹Ù²î´Â°ÍÀ» º»ÀûÀÌ ÀÖÀ» °ÍÀÌ´Ù. ÀÌ°Ç ¾î¶»°Ô Çϴ°ÍÀϱî. ?
ÀÌ°Ç 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]# |
[root@localhost /home]# export PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"' |
ÇÏÁö¸¸ ´Ü¼øÈ÷ »ç¿ëÀÚ¿¡°Ô ½Ã°¢ÀûÀ¸·Î ±×·²µíÇÏ°Ô º¸¿©ÁÖ´Â°Í ¿Ü¿¡µµ 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" |