usar traduccion como commands attach gnu-screen

gnu-screen - traduccion - screen terminal



GNU Screen Survival Guide (19)

¿Qué piensa la gente no son solo las cosas esenciales que necesita saber acerca de la excelente utilidad de pantalla, sino las cosas que podría pensar que vale la pena enseñar a alguien, un principiante, desde cero?

Acabo de presentar un amigo a Screen y les está costando acostumbrarse. Así que las analogías y los consejos útiles para recordar ataduras, etc. serían increíbles.


Alguien ha publicado una pregunta similar a esto en Server Fault .


Algunos consejos para aquellos que están familiarizados con la pantalla, pero que tienden a no recordar las cosas que leen en la página del manual:

  • Cambiar el nombre de una ventana de pantalla es muy fácil: ctrl + A shift + A.
  • ¿Te perdiste el último mensaje de la pantalla? ctrl + a ctrl + m se lo mostrará nuevamente.
  • Si desea ejecutar algo (como rastrear un archivo) y que la pantalla le indique cuándo hay un cambio, use ctrl + A shift + m en la ventana de destino. Advertencia: le avisará si algo cambia.
  • ¿Quieres seleccionar la ventana 15 directamente? Pruébalos en tu archivo .screenrc :

bind ! select 11 bind @ select 12 bind /# select 13 bind $ select 14 bind % select 15 bind /^ select 16 bind & select 17 bind * select 18 bind ( select 19 bind ) select 10

Eso asigna ctrl + a shift + 0 a 9 para windows 10 a 19.


Hay un trabajo interesante que se realiza para obtener una buena configuración de pantalla gnu por defecto en la próxima versión de Ubuntu Server, que incluye el uso de la parte inferior de la pantalla para mostrar todas las ventanas y otros detalles útiles de la máquina (como # actualizaciones disponible y si la máquina necesita un reinicio). Probablemente pueda tomar su .screenrc y personalizarlo según sus necesidades.

Los comandos más útiles que tengo en mi .screenrc son los siguientes

shelltitle "$ |bash" # make screen assign window titles automatically hardstatus alwayslastline "%w" # show all window titles at bottom line of term

De esta manera, siempre sé qué ventanas están abiertas y qué se está ejecutando en ellas en este momento.


He estado usando la pantalla durante más de 10 años y probablemente use menos de la mitad de las funciones. Por lo tanto, definitivamente no es necesario conocer todas sus características de inmediato (y no recomendaría intentarlo). Mis órdenes diarias son:

^A ^W - window list, where am I ^A ^C - create new window ^A space - next window ^A p - previous window ^A ^A - switch to previous screen (toggle) ^A [0-9] - go to window [0-9] ^A esc - copy mode, which I use for scrollback

Creo que eso es todo. A veces uso las funciones de pantalla dividida, pero ciertamente no todos los días. La otra sugerencia es si la pantalla parece haberse bloqueado porque golpeas accidentalmente una combinación de teclas aleatorias, haz ambas ^ Q y ^ A ^ Q para intentar desbloquearla.


La primera modificación que hago en .screenrc es cambiar el comando de escape. A diferencia de muchos de ustedes, no me gusta la secuencia Ctrl-A predeterminada debido a su interferencia con esa funcionalidad fundamental en casi cualquier otro contexto. En mi archivo .screenrc, agrego:

escape `e

Eso es backtick-e.

Esto me permite utilizar el backtick como la tecla de escape (por ejemplo, para crear una nueva pantalla, presiono back-tick-c, detach es back-tick-d, backtick-? Es help, backtick-backtick es la pantalla anterior, etc.). La única forma en que interfiere (y tuve que abandonar el hábito) es utilizar el control invertido en la línea de comando para capturar la salida de ejecución, o pegar cualquier cosa que contenga un backtick. Para el primero, modifiqué mi hábito al usar la convención BASH $ (comando). Para este último, suelo abrir otro xterm o separarme de la pantalla y luego pegar el contenido que contiene el backtick. Finalmente, si deseo insertar un backtick literal, simplemente presiono backtick-e.


Me gusta configurar una sesión de pantalla con nombres descriptivos para las ventanas. ^ a A le permitirá dar un nombre a la ventana actual y ^ a "le dará una lista de sus ventanas. Cuando termine, separe la pantalla con ^ ad y vuelva a colocarla con la pantalla -R


Me gusta usar la screen -d -RR para crear / adjuntar automáticamente a una pantalla determinada. Creé funciones bash para hacerlo más fácil ...

function mkscreen { local add=n if [ "$1" == ''-a'' ]; then add=y shift; fi local name=$1; shift; local command="$*"; if [ -z "$name" -o -z "$command" ]; then echo ''Usage: mkscreen [ -a ] name command -a Add to .bashrc.'' 1>&2; return 1; fi if [ $add == y ]; then echo "mkscreen $name $command" >> $HOME/.bashrc; fi alias $name="/usr/bin/screen -d -RR -S $name $command"; return 0; } function rmscreen { local delete=n if [ "$1" == ''-d'' ]; then delete=y shift; fi local name=$1; if [ -z "$name" ]; then echo ''Usage: rmscreen [ -d ] name -d Delete from .bashrc.'' 1>&2; return 1; fi if [ $delete == y ]; then sed -i -r "/^mkscreen $name .*/d" $HOME/.bashrc; fi unalias $name; return 0; }

Crean un alias para /usr/bin/screen -d -RR -S $name $command . Por ejemplo, me gusta usar irssi en una sesión de pantalla, por lo que en mi .bashrc (debajo de esas funciones), tengo:

mkscreen irc /usr/bin/irssi

Entonces puedo simplemente escribir irc en una terminal para entrar en irssi. Si la pantalla ''irc'' aún no existe, entonces se crea y / usr / bin / irssi se ejecuta desde allí (que se conecta automáticamente, por supuesto). Si ya se está ejecutando, simplemente vuelvo a conectarlo, separando por la fuerza cualquier otra instancia que ya esté conectada. Es bastante agradable.

Otro ejemplo es crear alias de pantalla temporales para perldocs a medida que los encuentro:

mkscreen perlipc perldoc perlipc perlipc # Start reading the perldoc, ^A d to detach. ... # Later, when I''m done reading it, or at least finished # with the alias, I remove it. rmscreen perlipc

La opción -a (debe ser el primer argumento) agrega el alias de la pantalla a .bashrc (por lo que es persistente) y -d lo elimina (estos pueden ser potencialmente destructivos, por lo tanto, use bajo su propio riesgo). xD

Adjuntar:

Otro bash-ismo que encuentro conveniente cuando trabajo mucho con la pantalla:

alias sls=''/usr/bin/screen -ls''

De esta forma, puede listar sus pantallas con muchas menos teclas. No sé si sls colisiona con las utilidades existentes, pero en ese momento no funcionaba en mi sistema, así que lo sls .


No es realmente esencial, no solo relacionado con la pantalla, pero al habilitar 256 colores en mi terminal, GNU Screen y Vim mejoraron mi experiencia de pantalla a lo grande (especialmente porque codigo en Vim unas 8 horas al día - hay algunos colores buenos para los ojos).


No pude acostumbrarme a la pantalla hasta que encontré una forma de establecer una ''barra de estado'' en la parte inferior de la pantalla que muestra en qué ''pestaña'' o ''pantalla virtual'' estás y cuáles otras hay. He aquí mi arreglo:

[roel@roel ~]$ cat .screenrc # Here comes the pain... caption always "%{=b dw}:%{-b dw}:%{=b dk}[ %{-b dw}%{-b dg}$USER%{-b dw}@%{-b dg}%H %{=b dk}] [ %= %?%{-b dg}%-Lw%?%{+b dk}(%{+b dw}%n:%t%{+b dk})%?(%u)%?%{-b dw}%?%{-b dg}%+Lw%? %{=b dk}]%{-b dw}:%{+b dw}:" backtick 2 5 5 $HOME/scripts/meminfo hardstatus alwayslastline "%{+b dw}:%{-b dw}:%{+b dk}[%{-b dg} %0C:%s%a %{=b dk}]-[ %{-b dw}Load%{+b dk}:%{-b dg}%l %{+b dk}] [%{-b dg}%2`%{+b dk}] %=[ %{-b dg}%1`%{=b dk} ]%{-b dw}:%{+b dw}:%<" sorendition "-b dw" [roel@roel ~]$ cat ~/scripts/meminfo #!/bin/sh RAM=`cat /proc/meminfo | grep "MemFree" | awk -F" " ''{print $2}''` SWAP=`cat /proc/meminfo | grep "SwapFree" | awk -F" " ''{print $2}''` echo -n "${RAM}kb/ram ${SWAP}kb/swap" [roel@roel ~]$


No puedo recordar a quién le robé esto (alguien en dotfile.org). Lo he modificado ligeramente para ssh:

#!/bin/sh # scr - Runs a command in a fresh screen # # Get the current directory and the name of command wd=`pwd` cmd=$1 shift # We can tell if we are running inside screen by looking # for the STY environment variable. If it is not set we # only need to run the command, but if it is set then # we need to use screen. if [ -z "$STY" ]; then $cmd $* else # Screen needs to change directory so that # relative file names are resolved correctly. screen -X chdir $wd # Ask screen to run the command if [ $cmd == "ssh" ]; then screen -X screen -t ""${1##*@}"" $cmd $* else screen -X screen -t "$cmd $*" $cmd $* fi fi

Luego configuré los siguientes alias de bash:

vim() { scr vim $* } man() { scr man $* } info() { scr info $* } watch() { scr watch $* } ssh() { scr ssh $* }

Abre una nueva pantalla para los alias anteriores y si usa ssh, renombra el título de la pantalla con el nombre de host ssh.

Cheers z0mbix


Puedes reasignar la clave de escape de ctrl-A para que sea otra clave de tu elección, así que si la usas para otra cosa, por ejemplo, para ir al principio de la línea en bash, solo tienes que agregar una línea a tu ~ /.screenrc archivo. Para que sea ^ b o ^ B use:

escape ^bB

Desde la línea de comandos, use sesiones de nombres para mantener múltiples sesiones bajo control. Utilizo una sesión por tarea, cada una con múltiples pestañas:

screen -ls lists your current screen sessions screen -S <name> creates a new screen session called name screen -r <name> connects to the named screen sessions

Cuando usa la pantalla, solo necesita algunos comandos:

^A c create a new shell ^A [0-9] switch shell ^A k kill the current shell ^A d disconnect from screen ^A ? show the help

Una excelente referencia rápida se puede encontrar here . Digno de marcar.


Si su amigo tiene el hábito de presionar ^A para llegar al comienzo de la línea en bash, él / ella se llevará algunas sorpresas, ya que ^A es la combinación de teclas de comando de pantalla. Normalmente termino con una pantalla congelada, posiblemente debido a alguna clave aleatoria que presioné después de ^A :-)

En esos casos, intento

^A s y ^A q bloquear / desbloquear el desplazamiento del terminal

arreglar eso Para ir al comienzo de una línea dentro de la pantalla, la secuencia de teclas es ^A a


Yo "debo" agregar esto: agregar

bind s

a su .screenrc , si Usted, como yo, solía usar ventanas divididas, ya que Ca S divide la ventana real, pero Ca s congela. Así que deshabilité el atajo de congelación.


^ A es un gran char especial para la gente de UNIX, pero si usa la pantalla para hablar con OpenVMS, entonces no poder ^ A lo calzará prematuramente. En VMS, si está editando un comando DCL antes de la ejecución desde el búfer de historial, el modo Insertar está desactivado (tiene que ser por algunas razones por las que no entraré aquí) ... para encenderlo y no excederse. escriba su comando en lugar de espaciar las cosas, tiene que golpear ^ A


^ AA vuelve a la pantalla de la que recién salió.



Ctrl + A ? - muestra la pantalla de ayuda!


Ctrl + A es el comando base

Ctrl + A N = ir a la pantalla *** N *** ext

Ctrl + A P = ir a la pantalla *** P *** revious

Ctrl + A C = *** C *** reate new screen

Ctrl + A D = *** D *** etach tu pantalla


ctrl + a es una clave especial.

ctrl + a d - [d] etach, deja los programas (irssi?) en el fondo, ve a casa.

ctrl + a c [c] reate una nueva ventana ctrl + a 0-9 alternar entre ventanas por número

screen -r - vuelve a la sesión desconectada

Eso cubre el 90% de los casos de uso. No intente mostrar toda la funcionalidad a la vez.