Cómo abrir ventanas de pestañas en Gnu-screen y ejecutar comandos dentro de cada una

Cómo abrir ventanas de pestañas en Gnu-screen y ejecutar comandos dentro de cada una

cuando comienza la sesión se llama cualquier nombre como estescreen -S name1

Quiero abrir ventanas de pestañas en esta sesión de pantalla como cuando abro pestañas en gnome-terminal como esta

gnome-terminal --tab -e "some commands"

Entonces, ¿cómo hacer esto?

Respuesta1

1. Pestañas en pantalla

Está buscando esto para agregarlo a su archivo .screenrc:

screen -t tab1
screen -t tab2

Aquí hay un buen .screenrc básico para comenzar con una barra de estado, etc.NOTA:Normalmente se encuentra en su directorio personal /home/<username>/.screenrc.

screen -t validate #rtorrent
screen -t compile #irssi
screen -t bash3
screen -t bash4
screen -t bash5
altscreen on
term screen-256color
bind ',' prev
bind '.' next
#
#change the hardstatus settings to give an window list at the bottom of the
#screen, with the time and date and with the current window highlighted
hardstatus alwayslastline
#hardstatus string '%{= kG}%-Lw%{= kW}%50> %n%f* %t%{= kG}%+Lw%< %{= kG}%-=%c:%s%{-}'
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'

captura de pantalla

ss de sesión de pantalla

2. Pestañas en la pantalla (con comandos ejecutados dentro)

El siguiente ejemplo .screenrccreará 2 pestañas y ejecutará 3 comandos de eco en cada una.

screen -t tab1                                                                                     
select 0                                                                                           
stuff "echo 'tab1 cmd1'; echo 'tab1 cmd2'; echo 'tab1 cmd3'^M"                                     
screen -t tab2                                                                                     
select 1                                                                                           
stuff "echo 'tab2 cmd1'; echo 'tab2 cmd2'; echo 'tab2 cmd3'^M"                                     

altscreen on                                                                                       
term screen-256color                                                                               
bind ',' prev                                                                                      
bind '.' next                                                                                      
#                                                                                                  
#change the hardstatus settings to give an window list at the bottom of the                        
#screen, with the time and date and with the current window highlighted                            
hardstatus alwayslastline                                                                          
#hardstatus string '%{= kG}%-Lw%{= kW}%50> %n%f* %t%{= kG}%+Lw%< %{= kG}%-=%c:%s%{-}'              
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'

Esta técnica utiliza pantallas selecty stuffcomandos para seleccionar inicialmente una de las pestañas y luego "rellenar" una cadena en ella.

captura de pantalla

SS de pantalla con pestañas y comandos

3. Creando el #2 sin usar un .screenrcarchivo

Si está buscando el escenario en el que pueda:

  1. crear una sesión de pantalla
  2. cárgalo con pestañas
  3. hacer que cada pestaña ejecute sus propios comandos
  4. no requiere un .screenrcarchivo

¡Entonces éste es para tí! Pero prepárate. Esto puede resultar un poco complicado con las líneas de comando.

Para empezar, creemos una sesión de pantalla:

$ screen -AdmS myshell -t tab0 bash

Los interruptores -AdmShacen lo siguiente:

(Ver elpágina de manual de pantallapara más detalles)

-A

    Adapt the sizes of all windows to the size of the  current terminal. 
    By default, screen tries to restore its old window sizes when
    attaching to resizable terminals

-d -m

    Start screen in "detached" mode. This creates a new session but
    doesn't attach to it. This is useful for system startup scripts.

-S nombre de sesión

    When creating a new session, this option can be used to specify a
    meaningful name for the session. This name identifies the session for
    "screen -list" and "screen -r" actions. It substitutes the default
    [tty.host] suffix.

Ahora comencemos a cargarlo con pestañas + sus comandos:

$ screen -S myshell -X screen -t tab1 vim
$ screen -S myshell -X screen -t tab2 ping www.google.com
$ screen -S myshell -X screen -t tab3 bash

Estos 3 comandos crearán 3 pestañas adicionales y ejecutarán vim, harán ping a google e iniciarán un shell bash. Si enumeramos las sesiones de pantalla veremos lo siguiente:

$ screen -ls
There is a screen on:
        26642.myshell   (Detached)
1 Socket in /var/run/screen/S-root.

Si nos conectamos a la sesión de pantalla,mi concha, y lista las pestañas que contiene veremos lo siguiente:

$ screen -r myshell

Presione esta combinación de teclas: Ctrl+ Aseguido de Shift+"

Num Name                                                                   Flags

  0 tab0                                                                       $
  1 tab1                                                                       $
  2 tab2                                                                       $
  3 tab3                                                                       $

Cambiar apestaña2:

64 bytes from ord08s08-in-f20.1e100.net (74.125.225.116): icmp_seq=443 ttl=55 time=41.4 ms
64 bytes from ord08s08-in-f20.1e100.net (74.125.225.116): icmp_seq=444 ttl=55 time=33.0 ms
64 bytes from ord08s08-in-f20.1e100.net (74.125.225.116): icmp_seq=445 ttl=55 time=30.1 ms

captura de pantalla

ss de pantalla iniciada desde cli

Los comandos anteriores son la forma básica de lograr lo que el OP estaba buscando. Por supuesto, esto se puede condensar y refinar usando alias de Bash o incluso scripts de shell, ¡esto es simplemente para demostrar la capacidad y mostrar el camino!

Referencias

Respuesta2

una pequeña adición a la respuesta. cosas primero repiten el comando, luego lo colocan en la línea de comando y luego lo ejecutan si \n o ^M terminan la línea.

Como el eco me molestó, encadené \nclear\n como último comando, por lo que la ventana de la pantalla comienza limpia.

información relacionada