½Ã½ºÅÛÀ» Ç¥ÁØ¿¡ ¸Â°Ô ÇÏ°íÀÚ ÇÏ´Â »ç¶÷µéÀ» È¥¶õ½º·´°Ô ¸¸µå´Â ÁÖµÈ ¹®Á¦´Â ±×µéÀÌ Á¾Á¾ À߸øµÈ ¹æ½ÄÀ¸·Î ÀÏÀ» ÇÑ´Ù´Â °ÍÀÓÀ» »ó±âÇÏÀÚ. Á¤»óÀûÀ¸·Î ÀÛµ¿ÇÏ´Â ºÎºÐµéÀº ÈçÈ÷ ¿ì¿¬È÷ ±×·¸°Ô ÀÛµ¿ÇÏ´Â °ÍÀ̱⠶§¹®¿¡ ¾î¶² °ÍÀÌ À߸øµÇ¾ú´Ù´Â °¡Á¤ ÇÏ¿¡ ½Ã½ºÅÛÀ» ¼öÁ¤ÇÏ·Á ÇÏ´Â °ÍÀº Á¤»óÀûÀÎ ¼³Á¤±îÁöµµ Ʋ¸®°Ô ¸¸µé±âµµ ÇÑ´Ù.
±ò²ûÇÑ ÇØ°áÃ¥À» À§ÇÑ Ã¹ °ÉÀ½Àº ¾î¶² Å͹̳¯ÀÌ º¯Á¾ÀÌ°í ¾î¶² °ÍÀÌ ¾Æ´ÑÁö¸¦ Á¤È®È÷ ¾Æ´Â °ÍÀÌ´Ù. ÈçÈ÷ Å͹̳¯µéÀº ¸ðµÎ ÄܼÖó·³ ÀÛµ¿Çϸç ÀÌ·± °æ¿ì¿¡ ¸Å¿ì ÀûÀº ¾çÀÇ ¼öÁ¤¸¸À¸·Î ¸ðµÎ Á¤»óÀûÀ¸·Î ÀÛµ¿Çϵµ·Ï ÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª º¯Á¾ Å͹̳¯ (gnome-terminalÀÇ º¯Á¾°°Àº) À» »ç¿ëÇÑ´Ù¸é À̸¦ Ưº°ÇÑ ¹æ¹ýÀ¸·Î ´Ù·ïÁà¾ß ÇÑ´Ù.
¾Æ·¡ÀÇ ÇÑ ÁÙÂ¥¸® C ÇÁ·Î±×·¥
void main(void) {int c; while(c = getchar()) printf("%d 0x%02X\n", c, c);} |
º¯Á¾ ¿¡¹Ä·¹ÀÌÅ͸¦ »ç¿ëÇÑ´Ù¸é À̸¦ Ç¥ÁØÀÇ °Í°ú ±¸ºÐÇØ¾ß ÇÑ´Ù. ÀÌ·ÐÀûÀ¸·Ð ÀÌ°ÍÀº ¹®Á¦°¡ µÇ¾î¼´Â ¾ÈµÇ´Âµ¥ ÀÌ´Â ´Ù¸¥ ¹æ½ÄÀ¸·Î ÀÛµ¿ÇÏ´Â Å͹̳¯µé¿¡ ´ëÇؼ´Â Å͹̳¯ µ¥ÀÌŸº£À̽ºÀÇ ¼·Î ´Ù¸¥ Ç׸ñÀÌ Àû¿ëµÇ±â ¶§¹®ÀÌ´Ù (»ç¿ëµÇ´Â Ç׸ñÀº TERM º¯¼öÀÇ °ª¿¡ µû¶ó ´Ù¸£´Ù).
¿©±â¼´Â ¸ðµç º¯Á¾ VT100 ¿¡¹Ä·¹ÀÌÅ͵鿡´Â gnome Ç׸ñÀÌ, Ç¥ÁØ ¿¡¹Ä·¹ÀÌÅ͵鿡´Â xterm Ç׸ñÀÌ Àû¿ëµÇµµ·Ï ÇÏ°Ú´Ù. ÀÌ´Â ÀϺΠ¹èÆ÷Æǵ鿡 Àß Àû¿ëµÈ´Ù (¿¹¿Ü´Â 5.0 ÀÌÇÏÀÇ RedHat °°Àº ÀϺÎÀÇ °æ¿ìÀε¥ ÀÌ·± ¹èÆ÷Æǵ鿡¼´Â xterm Ç׸ñµµ º¯Á¾ÀÌ´Ù).
±×·¯³ª gnome-terminalÀº ±âº»ÀûÀ¸·Î xterm°ú µ¿ÀÏÇÑ Ç׸ñÀ» »ç¿ëÇϹǷΠµÑ Áß Çϳª´Â º¯Á¾ÀÌ°í ´Ù¸¥ Çϳª´Â Ç¥ÁØÀ̶ó¸é À̸¦ ±¸ºÐÇÒ ¹æ¹ýÀ» ã¾Æ¾ß ÇÑ´Ù. ÀÌ·ÐÀûÀ¸·Î´Â gnome-terminalÀÇ termname ¿É¼ÇÀÌ »ç¿ëÀÚ¿¡°Ô TERM º¯¼ö¸¦ Á» ´õ ÀûÀýÇÑ °ªÀ¸·Î ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï ÇØÁà¾ß ÇÏÁö¸¸ gnome-terminal 1.2.1°ú °°Àº °æ¿ì¿¡´Â ÀÌ ¿É¼ÇÀÌ ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù.
¿©±â¼ »ç¿ëÇÒ ¼ö ÀÖ´Â ±¦ÂúÀº ¹æ¹ýÀº gnome-terminalÀÌ COLORTERM º¯¼ö¸¦ gnome-terminal·Î ¼³Á¤ÇÑ´Ù´Â »ç½ÇÀÌ´Ù. µû¶ó¼ ½© ¼³Á¤ ÆÄÀÏ¿¡ °£´ÜÇÑ °Ë»ç Ç׸ñÀ» Ãß°¡ÇÔÀ¸·Î½á ¿ì¸®´Â TERM º¯¼ö°ªÀ» ¼öÁ¤ÇÒ ¼ö ÀÖ°Ô µÈ´Ù.
ÀÌÁ¦ ¹®Á¦´Â Å͹̳¯ µ¥ÀÌŸº£À̽º°¡ º¯Á¾ Å͹̳¯µé¿¡ »ç¿ëµÉ gnome Ç׸ñÀÌ ¾øÀ» ¼öµµ ÀÖ´Ù´Â °ÍÀÌ´Ù (ÀÌ´Â ¸¹Àº termcap°ú terminfo¿¡¼ ¹ß»ýÇÑ´Ù). ÃÖ½ÅÀÇ terminfo µ¥ÀÌŸº£À̽º´Â gnome Ç׸ñÀ» °¡Áö°í ÀÖÁö¸¸ ¸»ÀÌ´Ù. ±×·¯³ª gnome-terminalÀº ƯÁ¤ÇÑ µÎ Å°µé¸¸ Á¦¿ÜÇϸé xterm°ú ±âº»ÀûÀ¸·Î µ¿ÀÏÇÏ°Ô ÀÛµ¿ÇϹǷΠÀÌ Ç׸ñÀ» »õ·Î ¸¸µå´Â °Íµµ °¡´ÉÇÏ´Ù.
The readline library used by the bash and by many other programs to read the input line can be customized so to recognize specific sequences of characters. The customization can also depend on the TERM variable, so once we can distinguish terminals we can do fine tuning of the keyboard.
bash°ú ¸¹Àº ÇÁ·Î±×·¥µéÀÌ ÀÔ·ÂÁÙÀ» ÀоîµéÀ̱â À§ÇØ »ç¿ëÇÏ´Â readline ¶óÀ̺귯¸®´Â ƯÁ¤ ¹®ÀÚ¿À» ÀνÄÇϵµ·Ï ¼³Á¤ÀÌ °¡´ÉÇÏ´Ù. ÀÌ·¯ÇÑ ¼³Á¤ ¶ÇÇÑ TERM º¯¼ö°ª¿¡ ÀÇÁ¸ÇÏ°Ô µÇ¸ç µû¶ó¼ ÀÏ´Ü Å͹̳¯µéÀ» ±¸ºÐÇÒ ¼ö ÀÖ°Ô µÇ¸é Å°º¸µå¸¦ º¸´Ù Á¤±³È÷ Á¶ÀÛÇÏ´Â °ÍÀÌ °¡´ÉÇØÁø´Ù.
´õºÒ¾î ÁÙ ÀÔ·ÂÀ» Á÷Á¢ ó¸®ÇÏ´Â less³ª ´Ù¸¥ ¾îÇø®ÄÉÀÌ¼Çµé ¿ª½Ã ¿Ã¹Ù¸£°Ô ÀÛµ¿ÇÏ°Ô ÇÏ·Á¸é º¯Á¾ Å͹̳¯ ¿¡¹Ä·¹ÀÌÅÍ ÇÏ¿¡¼ »èÁ¦ ¹®ÀÚ°¡ DELÀÌ ¾Æ´Ñ BSÀ̶ó´Â °ÍÀ» ½©¿¡ ÁÖÁö½ÃÄÑ¾ß ÇÑ´Ù (Ç¥ÁØÀÇ °æ¿ì¿¡´Â Backspace Å°°¡ ÀÌ¹Ì DELÀ» »ý¼ºÇϹǷΠ¿ì¸®°¡ Á÷Á¢ ÇØÁÙ ÀÏÀº ¾ø´Ù). ÀÌ´Â stty ¸í·ÉÀ» »ç¿ëÇÏ¸é µÈ´Ù.
경고 |
ÀÌ ¼öÁ¤»çÇ×µéÀº ÀϺΠ¹®Á¦Á¡À» °¡Áö°íÀÖ´Ù. ù°·Î, ƯÁ¤ Å͹̳¯µé¿¡¼¸¸ ÀÛµ¿ÇÑ´Ù. µÑ¶§·Î, ÀÌ·ÐÀûÀ¸·Î´Â (±×·¯³ª °ÅÀÇ ÀϾÁö ¾ÊÀ» °ÍÀÌ´Ù) ´Ù¸¥ Å͹̳¯µé¿¡¼ÀÇ readline ¶óÀ̺귯¸®ÀÇ Á¤»ó ÀÛµ¿À» Èüµé°Ô ÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ÀÌ·± µÎ ÇÑ°èÁ¡µéÀº °ÅÀÇ ÇØ·ÓÁø ¾Ê´Ù. |
¸ÕÀú infocmp gnome ¸í·ÉÀ¸·Î ÇöÀçÀÇ terminfo µ¥ÀÌŸº£À̽º ¾È¿¡ gnome Ç׸ñÀÌ ÀÖ´ÂÁö¸¦ °Ë»çÇÑ´Ù (termcap¿¡ ´ëÇؼ´Â ³ªÁß¿¡ ´Ù·ç°Ú´Ù). ¸¸¾à ÀÌ Ç׸ñÀÌ ¾ø´Ù¸é ¾Æ·¡ÀÇ ¸í·ÉÀ¸·Î ~/.terminfo¿¡ Àû´çÇÑ Ç׸ñÀ» ¸¸µç´Ù.
bash$ tic <(infocmp xterm |\ sed 's/xterm|/gnome|/' |\ sed 's/kbs=\\177,/kbs=^H,/' |\ sed 's/kdch1=\\E\[3~,/kdch1=\\177,/') |
ÀÌÁ¦ ¾Æ·¡ ÁÙµéÀ» ~/.inputrc [1]¿¡ Ãß°¡ÇÑ´Ù:
"\e[3~": delete-char |
$if term=gnome DEL: delete-char $endif |
Á¶°Ç¹®¿¡ ÀÇÇØ º¯Á¾ Å͹̳¯ ¿¡¹Ä·¹ÀÌÅÍ°¡ TERM º¯¼ö°¡ ¿Ã¹Ù¸£¿¡ ¼³Á¤µÇ¾ú´Ù´Â °¡Á¤ ÇÏ¿¡ ÀÛµ¿ÇÏ°Ô µÈ´Ù´Â °ÍÀ» ÁÖ¸ñÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. À̸¦ º¸ÀåÇØ ÁÖ±â À§Çؼ ¾µ ¼ö ÀÖ´Â Æ®¸¯ÀÌ ¸î °³°¡ ÀÖ´Ù. ¸ÕÀú, gnome-terminal¿¡ ±âº»À¸·Î »ç¿ëµÇ´Â TERMÀÇ °ªÀÌ xtermÀ̱⠶§¹®¿¡ ¸ðµç Å͹̳¯ÀÌ º¯Á¾ÀÌ ¾Æ´Ï¶ó¸é ¾Æ¹« °Íµµ ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ±×·¯³ª ±âº»À¸·Î xterm Ç׸ñÀ» »ç¿ëÇÏ´Â Å͹̳¯ÀÌ º¯Á¾À̶ó¸é ¿ì¸®´Â TERM º¯¼ö¸¦ ¿Ã¹Ù¸£°Ô ¼³Á¤ÇØ ÁÖ´Â ¹æ¹ýÀ» ã¾Æ¾ß ÇÑ´Ù. gnome-terminalÀÇ °æ¿ì°¡ ±×·¸´Ù°í °¡Á¤ÇÏÀÚ.
ÀÌ·± È¿°ú¸¦ À§ÇÑ °¡Àå °£´ÜÇÑ ¹æ¹ýÀº gnome-terminalÀ» --termname=gnome ÀÎÀÚ¸¦ Á༠½ÇÇàÇÏ´Â °ÍÀÌ´Ù. ±×·¯³ª ¿¹Àü ¹öÀüÀ» °¡Áö°í ÀÖ¾î¼ ÀÌ ¹æ¹ýÀÌ È¿°ú°¡ ¾ø´Ù¸é ´ÙÀ½ ÁÙµéÀ»
if [ "$COLORTERM" = "gnome-terminal" ] then export TERM=gnome fi |
참고: Å͹̳¯À» gnomeÀ¸·Î ¼³Á¤Çϴ¸é ls¿¡¼ »ö±òÀ» »ç¿ëÇÏÁö ¸øÇÒ ¼öµµ ÀÖ´Ù. ÀÌ´Â lsÀÇ ¸¹Àº ¹öÀüµéÀÌ gnome-terminal¿¡¼ »ö±ò »ç¿ëÀÌ °¡´ÉÇÏ´Ù´Â °ÍÀ» ¸ð¸£±â ¶§¹®ÀÌ´Ù. À̸¦ ¹æÁöÇϱâ À§Çؼ± dircolors --print-database > ~/.dircolors ¸í·ÉÀ¸·Î ~/.dircolors ÆÄÀÏÀ» ¸¸±Ù ÈÄ ÀÌ ÆÄÀÏ¿¡ TERM=gnome ÁÙÀ» Ãß°¡ÇÑ´Ù.
ÀÌÁ¦ º¯Á¾ Å͹̳¯ ¿¡¹Ä·¹ÀÌÅÍ¿¡ ¾Ë¸ÂÀº termcap Ç׸ñÀ» ¸¸µé °ÍÀÌ´Ù. ¾Æ·¡Ã³·³ ÇÏ¸é µÇ¸ç À̸¦ ~/.bashrc¿¡ ³Ö¾î³õ¾Æµµ µÈ´Ù.
if [ "$TERM" = "gnome" ] then export TERMCAP=$(infocmp -C gnome | grep -v '^#' | \ tr '\n\t' ' ' | sed 's/\\ //g' | sed s/::/:/g) fi |
¸¶Áö¸·À¸·Î Å͹̳¯ ÀåÄ¡¿¡°Ô »èÁ¦ Å°¿¡ ÀÇÇؼ ¾î¶² ¹®ÀÚ°¡ »ý¼ºµÇ´ÂÁö¸¦ ¾Ë·ÁÁà¾ß ÇÑ´Ù. ÀϹÝÀûÀ¸·Î »èÁ¦ Å°´Â backspace¸¦ ÀǹÌÇϹǷΠ¿ì¼±Àº ÀÌó·³ ¼³Á¤ÇÑ ÈÄ¿¡ °¢°¢ÀÇ º¯Á¾ Å͹̳¯¿¡ ´ëÇÑ Á¶°Ç¹®À» Ãß°¡ÇÒ °ÍÀÌ´Ù. ¹°·Ð ~/.bashrc ¾È¿¡ ³Ö°ÔµÈ´Ù.
stty erase ^? if [ "$TERM" = "gnome" ] then stty erase ^H fi |
참고: ¾î¶² ¹èÆ÷ÆǵéÀº ÀÌ ¹®Á¦µéÀ» Àüü ½Ã½ºÅÛ¿ë ¼³Á¤ÆÄÀÏÀÎ /etc/inputrc ¾È¿¡¼ ±³Á¤ÇØ ³õ°í ÀÖ´Ù. ÀÌ·± °æ¿ì´Â ¿©·¯ºÐÀÇ ~/.inputrc¿¡¼ Áߺ¹µÇ´Â ÁÙµéÀ» »©µµ µÈ´Ù.
tcshÀÇ °æ¿ì¿¡´Â ¸ðµç ¼öÁ¤»çÇ×µéÀÌ ~/.tcshrc ¾È¿¡ µé¾î¸ç bashÀÇ °æ¿ì¿Í µ¿ÀÏÇÑ ÀÛµ¿À» ÇÏ°Ô µÈ´Ù.
bindkey "^[[3~" delete-char if ($?COLORTERM) then if ($COLORTERM == "gnome-terminal") then setenv TERM gnome endif endif stty erase ^? if ($?TERM) then if ($TERM == "gnome") then setenv TERMCAP \ "`infocmp -C gnome | grep -v '^#' | tr '\n\t' ' ' | sed 's/\\ //g' | sed s/::/:/g`" bindkey "\177" delete-char stty erase ^H endif endif |
[1] | ÀÌÀü ¹öÀüÀÇ bash¿¡¼´Â INPUTRC¸¦ ¾Ë¸Â°Ô ¼³Á¤ÇØ ÁÖ´Â °ÍÀ» Àؾ ¾ÈµÈ´Ù. ¿¹¸¦ µé¾î
| |
[2] | ´õ Á¤È®È÷ ¸»Çؼ ¸ðµç ·Î±ä ½© »Ó ¾Æ´Ï¶ó ¸ðµç ½©ÀÌ ÀоîµéÀÌ´Â ¼³Á¤ ÆÄÀÏÀÌ´Ù. |