Come aprire un terminale, dividere in 9 terminali e passare da uno all'altro usando uno script?


17

Vorrei aprire un terminale, dividerlo per dire 9 parti (3x3) ed eseguire uno script bash. Ma per ogni parte terminale script diversi.

Questo può essere fatto usando perl, python o persino bash?

Come posso passare da quei terminali piccoli senza usare le scorciatoie da tastiera?

Oh, comunque, sto usando terminator. E se esiste qualche altro emulatore di terminale che abilita tale funzionalità, che cos'è?


terminatornon è un guscio. Esistono due diversi emulatori di terminale chiamati terminator(solo uno dei quali credo possa dividere lo schermo).
Stéphane Chazelas,

Ah, grazie .. allora mi piacerebbe sapere come dividere terminatorusando lo script? :) E passare da quelle parti?
jirislav,

1
Non l'ho mai usato e non ho il tempo di cercarlo in questo momento, ma penso (non sono sicuro) che byobu potrebbe aiutarti se stai eseguendo i terminali su un sistema remoto - vedi help.ubuntu. com / community / Byobu . Byobu gira su molte distribuzioni * nix
Clive van Hilten,

1
Come menzionato e risposto a @ClivevanHilten, questo può essere fatto con l'amichevole Byobu (che per impostazione predefinita si trova in cima a tmux).
Pablo A

Risposte:


35

Per plagiarmi , puoi impostare un profilo con le impostazioni desiderate (istruzioni adattate da qui ):

  1. Esegui terminatore imposta il layout desiderato. Puoi usare Ctrl+ Shift+ Eper dividere le finestre verticalmente e Ctrl+ Shift+ O(che è O come in oodles, non zero) per dividere orizzontalmente. Per questo esempio, ho creato un layout con 6 riquadri:

    inserisci qui la descrizione dell'immagine

  2. Fai clic con il tasto destro sulla terminatorfinestra e scegli "Preferenze". Una volta aperta la finestra Preferenze, vai su "Layout" e fai clic su "Aggiungi":

    inserisci qui la descrizione dell'immagine

  3. Questo popolerà l'elenco Layout con il tuo nuovo layout:

    inserisci qui la descrizione dell'immagine

  4. Trova ciascuno dei terminali che hai creato nel layout e fai clic su di essi, quindi a destra inserisci il comando che desideri eseguire in essi all'avvio:

    inserisci qui la descrizione dell'immagine

    IMPORTANTE: si noti che il comando è seguito da ; bash. In caso contrario i terminali non saranno accessibili poiché eseguiranno il comando impartito e usciranno. È necessario avviare una shell dopo ogni comando per poter utilizzare i terminali.

    Dopo aver impostato tutti i comandi, fai clic su "Chiudi", quindi esci terminator.

  5. Apri il terminatorfile di configurazione ~/.config/terminator/configed elimina la sezione in layout per la configurazione predefinita. Quindi modificare il nome del layout creato per impostazione predefinita. Dovrebbe assomigliare a qualcosa di simile a questo:

    [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 cchapple@139.124.66.43'
          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]

Il risultato finale è che quando lo esegui terminatorsi aprirà con 6 riquadri, ognuno dei quali ha eseguito o esegue i comandi che hai specificato:

inserisci qui la descrizione dell'immagine

Inoltre, puoi impostare tutti i diversi profili che desideri e avviare Terminator con l' -pinterruttore che fornisce un nome profilo, oppure passare manualmente a qualsiasi profilo desiderato dopo l'avvio.


Terdon, grazie! Questo è probabilmente dove ho imparato a scrivere quel file di configurazione!
dotancohen,

@dotancohen felice di sapere che sono stato di aiuto :)
terdon

1
Whaou! Grazie mille, il "; bash" mi ha salvato la vita!
Etienne,

"È necessario avviare una shell dopo ogni comando per poter utilizzare i terminali." Incredibile - questo non era affatto intuitivo quando l'ho provato inizialmente. Dovrebbero includere una sorta di casella di controllo per abilitare automaticamente questo.
dtmland,


3

Quando stavo usando terminatorquesto è il file rc che ho usato per aprire un mucchio di terminali ed eseguire applicazioni. Salvalo in .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]

EDIT: Nota che questa informazione probabilmente proviene dal post di Terdon su un thread molto precedente. Sto usando questa configurazione da alcuni mesi, ma il post di Terdon qui sembra molto familiare!


Questo è quello che stavo cercando - come dividere il terminale ed eseguire script particolari - grazie! Ma non vorrei eseguirlo ogni volta in questo modo. C'è la possibilità di avere più di quelle configurazioni e aprirle ciascuna a seconda di ciò di cui ho bisogno? Diciamo aggiungendo il parametro --config2 o --config1?
jirislav,

Non aggiungi più file di configurazione, ma aggiungi sezioni al file di configurazione. Vedi il post di Terdon, lo spiega molto bene, infatti l'ho imparato dal suo post su un thread precedente.
dotancohen,

Oh, vedo ... Quindi ho accettato la sua risposta come molto utile. Ma grazie comunque.
jirislav,

Bella scelta! In realtà volevo suggerire di accettare la sua risposta poiché le informazioni provenivano dal suo duro lavoro!
dotancohen,

2

Script wrapper per la divisione dell'emulatore di terminale Terminator https://github.com/AlekseyChudov/terminator-split


2
Dovresti includere qui le informazioni rilevanti, una volta che github è andato la tua risposta perde tutto il suo potenziale valore.
Anthon,

1
sembra buono .. ma come posso eseguire questo script?
Sachin,

1
terminator-splitha un grande potenziale, ma sembra che non ci sia modo di eseguire comandi diversi nelle diverse suddivisioni e l' -margomento mostrato negli esempi non è elencato nel riepilogo dell'utilizzo
bitinerante
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.