Características ocultas de `screen`

Respuestas:

31

Me encanta usarlo para conectarme a consolas seriales, es decir

screen /dev/ttyS0 19200

Este comando simplemente abre una conexión al puerto serie 0 (ttyS0) con una velocidad en baudios de 19200

Scott Pack
fuente
esta es una de mis cosas favoritas para asustar a la gente, realmente una de las características menos esperadas de la pantalla
epic9x
1
Y verdaderamente uno de mis favoritos. No es necesario tratar con, o configurar, minicom, conservador, etc. Me sentí como un niño pequeño en una tienda de dulces cuando descubrí esto.
Scott Pack
Absolutamente: es bueno tener una sesión de pantalla abierta, dividida en dos ventanas, con ambos dongles serie USB visibles.
dotwaffle
10

La mejor característica de screenes Byobu (anteriormente perfiles de pantalla) que viene con Ubuntu por defecto desde Jaunty: https://launchpad.net/byobu

Es un administrador de configuración con valores predeterminados muy agradables, toneladas de notificaciones de estado y atajos de teclado útiles (es decir, f2 para nueva pantalla, f3-f4 para anterior / siguiente, etc.)

Realmente ya no voy a ninguna parte sin ella :)

KTamas
fuente
10

Desde la respuesta de KTamas: más de una persona puede usar la misma pantalla, es decir, si un amigo suyo sshingresa a su computadora, puede conectarse a su pantalla. Es genial cuando dos o tres personas están trabajando en los mismos proyectos.

Josh
fuente
1
¡Esto es mucho mejor para seguir lo que están haciendo los usuarios de soporte remoto y matar su sesión si hasta ahora no son buenos!
Tom O'Connor
6

No es exactamente una "característica oculta"; pero un archivo .screenrc configurado correctamente puede hacer una gran diferencia. Uno de los mejores ejemplos puede encontrarse buscando en google screenrc y 'brad sims': tiene un excelente archivo para jugar.

Dicho esto, mi configuración favorita sería Bindkey:

# bind F7  to detach screen session from this terminal
# bind F8  to kill current screen window.
# bind F9  to create a new screen
# bind F10 to rename current screen window
# bind F11 to move to previous window
# bind F12 to move to next window
bindkey -k k7 detach
bindkey -k k8 kill
bindkey -k k9 screen
bindkey -k k; title
bindkey -k F1 prev
bindkey -k F2 next
Remolino
fuente
2
Teniendo en cuenta que ctrl + a se usa con demasiada frecuencia fuera de la pantalla (¿comienzo de línea en bash, alguien?) Me gusta esto.
Scott Pack
1
ctrl + a / ctrl + e para mover el cursor, pero también cuando minicom se está ejecutando en una pantalla. Ctrl + a, a, o para opciones ...
petrus
6

No recuerdo 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 configuro los siguientes alias 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, cambia el nombre del título de la pantalla con el nombre de host ssh.

Saludos z0mbix

z0mbix
fuente
: o. ¿Lo levantaste y lo adaptaste de mí? gist.github.com/137214
VxJasonxV
No, creo que fue de un miembro del personal de last.fm que blogueó sobre esto una vez.
z0mbix
4

Una cosa que encuentro útil es que la pantalla puede emular un ancho mayor que su terminal. Esto me resulta útil si estoy usando lessarchivos de registro reales, y no quiero que las líneas se ajusten. Utilizando:

Ctrl-A:width -w 999

Puedo configurar screen's' para que sea más ancho que mi terminal, y las líneas de registro lessno se ajustarán.

Josh
fuente
10
Para su información, la opción menos -sle dirá que no ajuste las líneas. Puede usar Lefty Rightpara desplazarse por las líneas.
MikeyB
4

La capacidad de cambiar la tecla de control con -ethat al iniciar la pantalla. Lo uso para poder anidar sesiones de pantalla una dentro de la otra. Ejemplo: "screen -e ^ w ^ x" hace que la tecla de control ctr-w.

jeffball
fuente
2

Una buena característica: puede usar backtickpara obtener información adicional para mostrar en un subtítulo. Por ejemplo, tengo un script que genera un resumen de una línea de nuevos recuentos de correo en varias carpetas, y tengo que aparece en la línea inferior si mi sesión de pantalla junto con el nombre de host con una configuración que se ve así:

backtick 1 15 15 /home/waltermundt/bin/newmail

caption always
caption string "%{.kW}%1` example.com %{.bW}%-w%{.rW}%n %t%{-}%+w %{.gW}%h%{-}"

La clave es el bit% 1`, que se refiere a la salida del trabajo de retroceso 1.

(Lo uso hardstatuscomo la cadena de título xterm y lo configuro de manera diferente, por lo tanto, el uso de en captionlugar de hardstatus alwayslastline).

Walter Mundt
fuente
2

No es una función "oculta", pero la capacidad de compartir una sesión de pantalla con otro usuario activo es muy útil.

Hay formas complicadas de configurar el uso compartido de pantalla, incluidos los permisos de control de acceso y la gestión de nombres de usuario. Lo que más hago con los compañeros de trabajo es mucho más rápido y sucio:

  1. Inicie sesión en la máquina en cuestión en una nueva ventana.
  2. Permitir que cualquiera escriba en mi terminal: chmod 777 $(tty)
  3. Sudo a su cuenta: sudo su <username>
  4. Comparte su pantalla: screen -x <session>

Esto no requiere ninguna configuración avanzada o uso compartido de contraseñas.

Michael H.
fuente
1

Una pequeña hoja de trucos que imprimí para mí;

(Nota: Todo está precedido por Ctrl-A)

A: renombrar una ventana   
": muestra una lista de ventanas   
d: desconectar sesión

Y screen -D -Rpara desacoplar y volver a conectar una sesión en ejecución (en caso de que de alguna manera pierda el acceso a su sesión).

Ninguna de estas son características realmente ocultas, pero estas son las características que considero más útiles.

Michael Pobega
fuente
1

Es una característica central, pero por supuesto lo mejor es Ctrl-A:hablar directamente a la pantalla. : screen -t title ssh hostnameetc.

Zac Thompson
fuente