¿Cómo abrir el terminal, dividirlo en 9 terminales y cambiar entre ellos usando un script?

17

Me gustaría abrir un terminal, dividirlo para decir 9 partes (3x3) y ejecutar un script bash. Pero para cada terminal parte un guión diferente.

¿Se puede hacer esto usando perl, python o incluso bash?

¿Cómo puedo cambiar entre esos pequeños terminales sin usar atajos de teclado?

Ah, por cierto, estoy usando terminator. Y si hay algún otro emulador de terminal que permita dicha funcionalidad, ¿cuál es?

jirislav
fuente
terminatorNo es una concha. Hay dos emuladores de terminal diferentes llamados terminator(solo uno de los cuales creo que puede dividir la pantalla).
Stéphane Chazelas
Ah, gracias ... entonces me gustaría saber cómo dividir terminatorusando script? :) ¿Y cambiar entre esas partes?
jirislav
1
Nunca lo he usado y no tengo tiempo para investigarlo en este momento, pero creo (aunque no estoy seguro) que byobu podría ayudarlo si está ejecutando los terminales en un sistema remoto; consulte help.ubuntu. com / comunidad / Byobu . Byobu se ejecuta en muchas distribuciones * nix
Clive van Hilten
1
Como @ClivevanHilten menciona y responde aquí, se puede hacer con Byobu amigable (que por defecto se encuentra encima de tmux).
Pablo A

Respuestas:

35

Para plagiarme , puede configurar un perfil con la configuración deseada (instrucciones adaptadas desde aquí ):

  1. Ejecute terminatory configure el diseño que desee. Puede usar Ctrl+ Shift+ Epara dividir ventanas verticalmente y Ctrl+ Shift+ O(eso es O como en montones, no cero) para dividir horizontalmente. Para este ejemplo, he creado un diseño con 6 paneles:

    ingrese la descripción de la imagen aquí

  2. Haga clic derecho en la terminatorventana y elija "Preferencias". Una vez que la ventana de Preferencias esté abierta, vaya a "Diseños" y haga clic en "Agregar":

    ingrese la descripción de la imagen aquí

  3. Eso llenará la lista de Diseño con su nuevo diseño:

    ingrese la descripción de la imagen aquí

  4. Busque cada uno de los terminales que ha creado en el diseño y haga clic en ellos, luego a la derecha ingrese el comando que desea ejecutar en ellos al inicio:

    ingrese la descripción de la imagen aquí

    IMPORTANTE: Tenga en cuenta que el comando es seguido por ; bash. Si no lo hace, no se podrá acceder a los terminales, ya que ejecutarán el comando que le dé y salga. Debe iniciar un shell después de cada comando para poder usar los terminales.

    Una vez que haya configurado todos los comandos, haga clic en "Cerrar" y luego salga terminator.

  5. Abra el terminatorarchivo de configuración ~/.config/terminator/configy elimine la sección bajo diseños para la configuración predeterminada. Luego cambie el nombre del diseño que creó a predeterminado. Debería verse más o menos así:

    [global_config]
    [keybindings]
    [profiles]
      [[default]]
    [layouts]
      [[default]]
        [[[child0]]]
          position = 446:100
          type = Window
          order = 0
          parent = ""
          size = 885, 550
        [[[child1]]]
          position = 444
          type = HPaned
          order = 0
          parent = child0
        [[[child2]]]
          position = 275
          type = VPaned
          order = 0
          parent = child1
        [[[child5]]]
          position = 219
          type = HPaned
          order = 1
          parent = child1
        [[[child6]]]
          position = 275
          type = VPaned
          order = 0
          parent = child5
        [[[child9]]]
          position = 275
          type = VPaned
          order = 1
          parent = child5
        [[[terminal11]]]
          profile = default
          command = 'df -h; bash'
          type = Terminal
          order = 1
          parent = child9
        [[[terminal10]]]
          profile = default
          command = 'export foo="bar" && cd /var/www/; bash'
          type = Terminal
          order = 0
          parent = child9
        [[[terminal3]]]
          profile = default
          command = 'ssh -Yp 24222 [email protected]'
          type = Terminal
          order = 0
          parent = child2
        [[[terminal4]]]
          profile = default
          command = 'top; bash'
          type = Terminal
          order = 1
          parent = child2
        [[[terminal7]]]
          profile = default
          command = 'cd /etc; bash'
          type = Terminal
          order = 0
          parent = child6
        [[[terminal8]]]
          profile = default
          command = 'cd ~/dev; bash'
          type = Terminal
          order = 1
          parent = child6
    [plugins]

El resultado final es que cuando lo ejecutes terminatorse abrirá con 6 paneles, cada uno de los cuales ha ejecutado o ejecuta los comandos que has especificado:

ingrese la descripción de la imagen aquí

Además, puede configurar tantos perfiles diferentes como desee e iniciar el terminador con el -pinterruptor con un nombre de perfil, o cambiar manualmente al perfil que desee después del lanzamiento.

terdon
fuente
Terdon, gracias! ¡Aquí es probablemente donde aprendí a escribir ese archivo de configuración!
dotancohen
@dotancohen me alegra saber que fui de ayuda :)
terdon
1
Whaou! ¡Muchas gracias, el "; bash" me salvó la vida!
Etienne
"Debe iniciar un shell después de cada comando para poder usar los terminales". Increíble: esto no era intuitivo cuando lo probé inicialmente. Deben incluir algún tipo de casilla de verificación para habilitar esto automáticamente.
dtmland
5

¿Está buscando terminal multiplexor tmux?

https://github.com/tmux/tmux

Sujit Maharjan
fuente
Sí, esto parece ser otra posibilidad de cómo lograr lo que necesito. Gracias :)
jirislav
tmux¡es excelente!
dotancohen
3

Cuando estaba usando terminatoreste es el archivo rc que usé para abrir un montón de terminales y ejecutar aplicaciones. Guárdalo en .config/terminator/config.

[global_config]
  title_hide_sizetext = True
  enabled_plugins = LaunchpadCodeURLHandler, APTURLHandler, LaunchpadBugURLHandler
[keybindings]
[profiles]
  [[default]]
    font = DejaVu Sans Mono 9
    cursor_blink = False
    scrollback_infinite = True
[layouts]
  [[default]]

    [[[root]]]
      position = -4:0
      type = Window
      order = 0 
      parent = ""
      size = 1072, 1884

    [[[grand]]]
      position = 536 
      type = HPaned
      order = 0 
      parent = root
    [[[left]]]
      position = 942 
      type = VPaned
      order = 0 
      parent = grand
    [[[right]]]
      position = 942 
      type = VPaned
      order = 1 
      parent = grand



    [[[terminal1]]]
      profile = default
      type = Terminal
      order = 0 
      parent = left
      command = "cd ~/code/foo; bash"
    [[[terminal2]]]
      profile = default
      type = Terminal
      order = 1 
      parent = left
      command = "cd ~/bar/baz; bash"



    [[[terminal3]]]
      profile = default
      type = Terminal
      order = 1 
      parent = right
      command = ""
    [[[terminal4]]]
      profile = default
      type = Terminal
      order = 0 
      parent = right
      command = "cmus; bash"



[plugins]

EDITAR: Tenga en cuenta que esta información probablemente proviene de la publicación de Terdon en un hilo mucho anterior. He estado usando esta configuración durante unos meses, ¡pero la publicación de Terdon aquí parece muy familiar!

dotancohen
fuente
Esto es lo que estaba buscando: cómo dividir el terminal y ejecutar secuencias de comandos particulares, ¡gracias! Pero no me gustaría ejecutarlo siempre así. ¿Existe la posibilidad de tener más de esas configuraciones y abrir cada una dependiendo de lo que necesito? Digamos agregando el parámetro --config2 o --config1?
jirislav
No agrega más archivos de configuración, agrega secciones al archivo de configuración. Ver la publicación de Terdon, lo explica muy bien, de hecho, aprendí esto de su publicación en un hilo anterior.
dotancohen
Oh, ya veo ... Por lo tanto, acepté su respuesta como la más útil. Pero gracias de todos modos.
jirislav
¡Buena elección! ¡De hecho, quería sugerirle que aceptara su respuesta ya que la información provenía de su arduo trabajo!
dotancohen
2

Script de envoltura para dividir el emulador de terminal Terminator https://github.com/AlekseyChudov/terminator-split

Aleksey Chudov
fuente
2
Debe incluir la información relevante aquí, una vez que github haya desaparecido, su respuesta pierde todo su valor potencial.
Anthon
1
parece bueno ... pero ¿cómo ejecuto este script?
Sachin
1
terminator-splittiene mucho potencial, pero parece que no hay forma de ejecutar diferentes comandos en las diferentes divisiones, y el -margumento que se muestra en los ejemplos no aparece en el resumen de uso
bitinerante