GNU Screen ã®ã¡ãã£ã¨ä¾¿å©ãªä½¿ãæ¹
仿¥ã¯ããªãçããæè¡çãªè©±é¡ãæä¾ãã¾ãã
è¦ç´
[å°ã£ããã¨]
- ï¼ã¤ã® Screen ã§è¤æ°ã®ãµã¼ãã«ãããã telnet ããã¨ã©ã®ä»®æ³ç«¯æ«ã§ä½ããã¦ãããå¿ããï¼
- 鏿ãé¢åï¼
[ãã®è¨äºãèªãã¨ã§ãããã¨]
- Screen ã®ã¦ã£ã³ãã¦ã¿ã¤ãã«ã«ã¦ã¼ã¶åããã¹ãåã使¥ä¸ã®ãã£ã¬ã¯ããªã表示
- ã©ã®ãµã¼ãã«ã©ã®ã¦ã£ã³ãã¦ã§ãã°ã¤ã³ãã¦ãããã確èªããªããã¦ã£ã³ãã¦é¸æ
ç¥ã£ã¦ããæ¹ãããªãå¤ãã®ããããã¾ããããbash ã«ã¯ PROMPT_COMMAND ã¨ããç°å¢å¤æ°ãããã¾ããPROMPT_COMMAND ã使ããã¨ã§ãPROMPT ã表示ãããæã«èªåçã«å®è¡ããã³ãã³ããæå®ã§ãã¾ãã
ããã«ãã¨ãã°ç§ã®å ´åã§ãã¨ã次ã®ããã«è¨å®ãã¦ãã¾ãã
PROMPT_COMMAND='echo -ne "\033]0;$(whoami)@$(hostname):$(pwd)\007"'
ä¸è¨ã¯ãã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ãå«ãåºåã§ãæ £ãã人ã«ã¨ã£ã¦ã¯ãããã«çè§£ã§ããã¨æãã¾ãããåãã¦è¦ã人ã¯ããã£ã¨ããããããã¾ããã
ç°¡åã«è¨ãã¨ãã¿ã¼ããã«ã®ã¿ã¤ãã«ãã¼ã«è¡¨ç¤ºãããã¿ã¤ãã«ã
ã$(whoami)@$(hostname):$(pwd)ãã«å¤æ´ããã¨ãããã¨ãæå³ãã¦ãã¾ãã
bash ã§ã¯ã$() ã§å²ãã¨ãã®å²ãã æååãã³ãã³ãã¨ãã¦å®è¡ãã¦ããã®çµæã®æ¨æºåºåã« $() ã§å²ã¾ããé¨åã§ç½®ãæãããã¾ããã¤ã¾ããã¦ã¼ã¶ã cuzic ã®ã¨ãã« $(whoami) ãå®è¡ããã¨ãcuzic ã¨ããæååã«ç½®ãæãããã¾ããåæ§ã« $(hostname) ã¯ãã®å®è¡ãã¦ããç°å¢ã®ãã¹ãåã«ãç½®ãæãããã$(pwd) ã¯å®è¡æã®ãã£ã¬ã¯ããªã«ç½®ãæãããã¾ãã
ã¦ã¼ã¶ã cuzic ãã¹ãåã your-host ã§ãã£ã¬ã¯ããªã /home/cuzic/ ã§ããã°å®è¡çµæã¯ã
cuzic@your-host:/home/cuzic/
ã«ãªãã¾ãã
ã¤ã¾ãã
PROMPT_COMMAND='echo -ne "\033]0;$(whoami)@$(hostname):$(pwd)\007"'
ã¨ç°å¢å¤æ°ã®è¨å®ãè¡ããã¨ã§ãã¦ã¼ã¶åããã¹ãåãç¾å¨ã®ãã£ã¬ã¯ããªãã¿ã¤ãã«ãã¼ã«è¡¨ç¤ºããã¾ãã
ã¿ã¤ãã«ãã¼ã®è¡¨ç¤ºå 容㯠Windows çã®ç°å¢ã§ä¸è¬çã«ã¢ã¤ã³ã³åãã¦ããã¨ãã«è¡¨ç¤ºããã¾ãã®ã§ãã¿ã¼ããã«ãããããåæã«éãã¦ããã¨ãã«ã©ã®ãµã¼ãã«ãã°ãªã³ãã¦ãããã«ã¤ãã¦ããã«åãã£ã¦ã便å©ã§ãã
tcsh ãã使ãã®å ´å㯠precmd ã¨ããååã§ alias ã³ãã³ããä½ãã°åæ§ã®ãã¨ãå®ç¾å¯è½ã§ãã
ãã¦ãããã¾ã§ã¯åç½®ãã
è¤æ°ã®ç«¯æ«ãå¥ã®ã¦ã£ã³ãã¦ã§åæã«éãã¨ãã«ããã®ææ³ã¯ä¾¿å©ã§ãããããã§ã¯ãªãè¤æ°ã® TTY ã»ãã·ã§ã³ãï¼ã¤ã®ã¦ã£ã³ãã¦ã§éãããå ´åãããã¾ãã
å¼·å¼ãªå±éãæ°ã«ããªããã¨ã«ãã¦ãè¤æ°ã® TTY ã»ãã·ã§ã³ãï¼ã¤ã®ã¦ã£ã³ãã¦ã§éãããã« GNU Screen ã¨å¼ã°ããã¨ã¦ãæåãªã¢ããªã±ã¼ã·ã§ã³ãããã¾ããGNU Screen ã使ãã¨ãè¤æ°ã® TTY ã»ãã·ã§ã³ãåæã«éããã¨ãã§ããã ãã§ãªãçªç¶åç·æãçãã¦ãã¾ã£ãå ´åãªã©ã§ããµã¼ãã«ãã® Screen ã»ãã·ã§ã³ã«åæ¥ç¶ããã°ã使¥éä¸ã® TTY ã»ãã·ã§ã³ã«å¾©å¸°ã§ããããã大å¤ä¾¿å©ã§ãã
ãã¦ãã©ããããç¥ããã¦ããæ©è½ãã©ããåããã¾ããããScreen ã§éãã¦ãã TTY ã»ãã·ã§ã³ã®ã¿ã¤ãã«ãæå®ããã¨ãããã¨ãå¯è½ã§ããå ã»ã©ã® PROMPT_COMMAND ã¨åæ§ã®æååãæå®ããå ´åã¯æ¬¡ã®ã³ãã³ããå®è¡ãã¾ãã
echo -n -e "\033k$(whoami)@$(hostname):$(pwd)\033\134
ããã§ãScreen ã«ãã£ã¦ç®¡çãããã¿ã¤ãã«æååã夿´ã§ãã¾ãã
screen ã®è¨å®ãã¡ã¤ã«ã.screenrc ã§ã¯ screen ãèµ·åããã¨ãã«ç°å¢å¤æ°ãæå®ããæ©è½ãããã¾ãããã®æ©è½ã使ã£ã¦
setenv PROMPT_COMMAND 'echo -n -e "\033k$(whoami)@$(hostname):$(pwd)\033\134"'
ã¨ãããã¨ã§ãscreen ã«ãã£ã¦ç®¡çããã TTY ã»ãã·ã§ã³ã§ã¯ãã¦ã£ã³ãã¦ã¿ã¤ãã«ãã¼ã§ã¯ãªããScreen ã«ãã£ã¦ç®¡çãããã¿ã¤ãã«æååã夿´ã§ãã¾ãã
Screen ã«ã¯ã¿ã¤ãã«æååãè¦ãªãã使ç¨ãã TTY ã»ãã·ã§ã³ã鏿ããæ©è½ã¨ãã¦ãwindowlist -bã ã³ãã³ããããã¾ãããã®ã³ãã³ãã使ç¨ãããã¨ã§ãä½çªç®ã® TTY ã»ãã·ã§ã³ã§ä½ããã¦ããããã¨ãã£ããã¨ãè¦ãã¦ããªãã¦ããç°¡åã« TTY ã»ãã·ã§ã³ã鏿ã§ããããã«ãªãã¾ãã
ãã¦ãããã©ã人éã®æ¬²æã¨ããã®ã¯éããªããã®ã§ãã
å¤ãã® Screen ã使ãç¨éã§ã¯ãï¼ã¤ã® Screen ã§ãã¾ãã¾ãªãã¹ãã«å¯¾ãã¦ãã°ã¤ã³ãã¦ãããã¨ã§ããããWeb ã®éçºãµã¼ãã¨æ¬çªãµã¼ãã«åæã«ãã°ã¤ã³ããã¨ãã£ãç¶æ³ã§ãããã®ãã¾ãã¾ã«ãã°ã¤ã³ãã¦ãããµã¼ãã§ã©ãã«ãã°ã¤ã³ãã¦ãããã«ã¤ãã¦ãç°¡åã«ã¿ã¤ãã«ãã¼ã®æååããGNU Screen ã®ã¿ã¤ãã«æååã§ç°¡åã«ç¢ºèªãããã§ããããããããç´æ¥ãã°ã¤ã³ããå ´å㨠Screen çµç±ã§ãã°ã¤ã³ããå ´åã®ä¸¡æ¹ã§å¯¾å¿ã§ããããã«ããããã®ã§ãã
ããã¯ãä¸è¦ä¸å¯è½ãªè¦æ±ã®ããã«æãã¾ãã
ç´æ¥ãã°ã¤ã³ãã¦ããããScreen çµç±ã§ãã°ã¤ã³ãã¦ããããå¤å¥ããããã«ãã°ã¤ã³ããå
ã®ãã¹ããããµã¼ãã«å¯¾ãã¦ãªãããã®æ
å ±ãéãå¿
è¦ãããããã§ãã
ããããããã¯å¯è½ã§ãã
ä¾ãã° Telnet ã«ã¯ã¯ã©ã¤ã¢ã³ãã®ç°å¢å¤æ°ãéãæ¹æ³ãç¨æããã¦ãã¾ãã
environ ã³ãã³ãã§ããenviron ã³ãã³ãã使ããã¨ã§ãæ°ããªç°å¢å¤æ°ãå®ç¾©ããããã¯ã©ã¤ã¢ã³ãå´ã®ç°å¢å¤æ°ãã¨ãã¹ãã¼ããããã¨ãã§ãã¾ãã
Telnet ã®ããã³ãããå©ç¨ããã°ã¤ã³ã¿ã©ã¯ãã£ãã«è¨å®ã§ããã®ã§ãããä»åã¯ããç°¡åãªæ¹æ³ã¨ãã¦ãtelnet ã®ç°å¢è¨å®ãã¡ã¤ã«ã§ãã .telnetrc ã«è¨å®ããæ¹æ³ãç´¹ä»ãã¾ãã
ã¾ã䏿ºåã¨ãã¦ã.screenrc ã«æ¬¡ã®è¨å®ã追å ãã¾ãã
setenv SCREEN true
ãã®ä¾ã§ã¯ setenv ã³ãã³ããç¨ãããã¨ã§ãç°å¢å¤æ° SCREEN ã« true ã¨ããæååãè¨å®ãã¦ãã¾ãã
次ã«ã.telnetrc ã«æ¬¡ã®è¨å®ã追å ãã¾ãã
dev-host environ export SCREEN homban-host1 environ export SCREEN homban-host2 environ export SCREEN
ä¸è¨ã®è¨å®ãè¡ããã¨ã§ãdev-host, homban-host1, homban-host2 ã« telnet ããã¨ãã«ãã¯ã©ã¤ã¢ã³ãã®ç°å¢å¤æ° SCREEN ã®æ
å ±ãéããã¨ãã§ãã¾ãã
ç°å¢å¤æ° SCREEN 㯠GNU Screen ãçµç±ããã« telnet ããå ´åã¯è¨å®ããã¦ãã¾ããã®ã§ããµã¼ãå´ã§ã® ç°å¢å¤æ° SCREEN ã¯è¨å®ããã¾ããã䏿¹ãGNU Screen ãçµç±ãã¦ãtelnet ããå ´åã¯ã.screenrc ã®è¨å®ã«å¾ããç°å¢å¤æ° SCREEN ã¯è¨å®ããã¦ããããããã®è¨å®ããã®ã¾ã¾ãµã¼ãå´ã«éããã¦ãã¾ãã
ããã¾ã§ããã°å¾ã¯ç°¡åã§ããã
ç°å¢å¤æ° SCREEN ã®è¨å®ã«å¾ã£ã¦ããµã¼ãå´ã®åæåãã¡ã¤ã«ã«åå²ãæ¸ãã ãã§ãã
ä¾ã¨ã㦠ãµã¼ãå´ã®ãã°ã¤ã³ã·ã§ã«ã tcsh ã¨ä»®å®ããã¨ã次ã®ãããªè¨å®ã.cshrc ã«è¨è¿°ãããã¨ã«ãªãã¾ãã
if ( $?SCREEN ) then alias precmd 'printf "\033]0;`whoami`@`hostname`:`pwd`\007"' else alias precmd 'printf "\033k`whoami`@`hostname`:`pwd`\033\134"'' endif
ãã®å ´åã¯ãå¥ã®ä¾ã示ãããã«ãecho ã§ã¯ãªãprintf(1)ã³ãã³ããç¨ãã¦ãã¾ããããã¦ãbash ã«ãã $() ã§å²ã¾ããç¯å²ãç½®ãæããæ©è½ã¯ tcsh ã«ã¯ããã¾ãããã代ããã«ããã¯ã¯ãªã¼ã(`)ãç¨ãã¦ãã¾ãã
ãã®ãããªè¨å®ãè¡ããã¨ã§ãç°å¢å¤æ°ã SCREEN ãè¨å®ããã¦ãããå¦ããã¤ã¾ã SCREEN çµç±ãã©ããã«å¾ã£ã¦ãã¿ã¤ãã«ãã¼ã GNU Screen ã®ã©ã¡ãã®ã¿ã¤ãã«æååã夿´ãããã鏿ã§ãã¾ãã
ããã§ãGNU Screen ã® windowlist -b ã³ãã³ãã«ãã£ã¦ãç°¡åã«ã©ã® TTY ã»ãã·ã§ã³ãç¨ãããã鏿ã§ãã¾ãã
windowlist -b ã³ãã³ãã¯å¤ç¨ããã®ã§ã.screenrc ã«æ¬¡ã®è¨å®ãæ¸ãã¦ãã¾ãã
bind ' ' windowlist -b
ããã§ãã(prefix): windowlist -bã ã¨å ¥åããã®ã§ã¯ãªããã(prefix) [ã¹ãã¼ã¹]ãã¨å ¥åãããã¨ã§ããwindowlist -b ããå®è¡ã§ãã¾ãã(prefix) ã ^t ã«è¨å®ããã¦ããã°ããã³ã³ããã¼ã«+Tãã¹ãã¼ã¹ãã¨æ¼ããã¨ã«ãªãã¾ãã
ãªããè£è¶³ã§ãããµã¼ãã«ãã°ã¤ã³ããã®ã« telnet ã§ã¯ãªããssh ãç¨ããå ´åã§ãã¯ã©ã¤ã¢ã³ãå´ã®ç°å¢å¤æ°ãéããã¨ã¯ã§ãã¾ããssh_config(5) ãè¦ãã¨åããã¾ãããSendEnv ã¨ããè¨å®ãã¯ã©ã¤ã¢ã³ãå´ã«æ¸ãã¦ããµã¼ãå´ã« AcceptEnv ãæ¸ããã¨ã§å®ç¾ã§ãã¾ãã詳ããã¯ããã¥ã¢ã«ãã¼ã¸ããåç §ãã ããã
ä»¥ä¸ GNU Screen ã使ã£ãç°¡å㪠Tips ç´¹ä»ã§ããã