Wie kann ich ein Terminal öffnen, in 9 Terminals aufteilen und mit einem Skript zwischen diesen wechseln?

17

Ich möchte ein Terminal öffnen, es in 9 Teile (3x3) aufteilen und ein Bash-Skript ausführen. Aber für jeden Terminalteil ein anderes Skript.

Kann man das mit Perl, Python oder sogar Bash machen?

Wie kann ich zwischen diesen kleinen Terminals wechseln, ohne Tastaturkürzel zu verwenden?

Oh, übrigens, ich benutze terminator. Und wenn es einen anderen Terminalemulator gibt, der eine solche Funktionalität ermöglicht, welcher ist das?

jirislav
quelle
terminatorist keine Muschel. Es gibt zwei verschiedene Terminalemulatoren genannt terminator(von denen nur einer mir den Bildschirm geteilt glauben kann).
Stéphane Chazelas
Ah, danke .. dann würde ich gerne wissen, wie man terminatormit Skript teilt ? :) Und zwischen diesen Teilen wechseln?
Jirislav
1
Ich habe es noch nie benutzt und habe momentan keine Zeit, es zu recherchieren, aber ich glaube (obwohl ich nicht sicher bin), dass byobu Ihnen helfen könnte, wenn Sie die Terminals auf einem Remote-System betreiben - siehe help.ubuntu. com / community / Byobu . Byobu läuft auf vielen * nix-Distributionen
Clive van Hilten
1
Wie @ClivevanHilten erwähnte und hier beantwortete , kann dies mit freundlichem Byobu geschehen (das standardmäßig auf tmux sitzt).
Pablo A

Antworten:

34

Um mich selbst zu plagiieren , können Sie ein Profil mit Ihren gewünschten Einstellungen einrichten (Anleitung von hier angepasst ):

  1. Führen terminatorSie das gewünschte Layout aus und richten Sie es ein. Sie können Ctrl+ Shift+ verwenden E, um Fenster vertikal zu teilen, und Ctrl+ Shift+ O(das ist O wie in oodles, nicht Null), um horizontal zu teilen. In diesem Beispiel habe ich ein Layout mit 6 Fenstern erstellt:

    Bildbeschreibung hier eingeben

  2. Klicken Sie mit der rechten Maustaste auf das terminatorFenster und wählen Sie "Einstellungen". Sobald das Fenster "Einstellungen" geöffnet ist, gehen Sie zu "Layouts" und klicken Sie auf "Hinzufügen":

    Bildbeschreibung hier eingeben

  3. Damit wird die Layout-Liste mit Ihrem neuen Layout gefüllt:

    Bildbeschreibung hier eingeben

  4. Suchen Sie alle Terminals, die Sie im Layout erstellt haben, und klicken Sie darauf. Geben Sie dann rechts den Befehl ein, den Sie beim Start ausführen möchten:

    Bildbeschreibung hier eingeben

    WICHTIG: Beachten Sie, dass dem Befehl folgt ; bash. Wenn Sie dies nicht tun, sind die Terminals nicht zugänglich, da sie den von Ihnen angegebenen Befehl ausführen und beenden. Sie müssen nach jedem Befehl eine Shell starten, um die Terminals verwenden zu können.

    Wenn Sie alle Befehle eingegeben haben, klicken Sie auf "Schließen" und beenden Sie das Programm terminator.

  5. Öffnen Sie die terminatorKonfigurationsdatei ~/.config/terminator/configund löschen Sie den Abschnitt unter Layouts für die Standardkonfiguration. Ändern Sie dann den Namen des von Ihnen erstellten Layouts auf Standard. Es sollte ungefähr so ​​aussehen:

    [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]

Das Endergebnis ist, dass beim Ausführen terminator6 Fenster geöffnet werden, von denen jedes die von Ihnen angegebenen Befehle ausgeführt hat oder ausführt:

Bildbeschreibung hier eingeben

Sie können auch so viele verschiedene Profile einrichten, wie Sie möchten, und entweder den Terminator mit dem -pSchalter starten, der einen Profilnamen angibt, oder manuell zu dem gewünschten Profil wechseln, nachdem Sie ihn gestartet haben.

terdon
quelle
Terdon, danke! Hier habe ich wahrscheinlich gelernt, diese Konfigurationsdatei zu schreiben!
Dotancohen
@ Dotancohen froh zu hören, dass ich von Hilfe war :)
Terdon
1
Wie bitte? Vielen Dank, die "; bash" hat mir das Leben gerettet!
Etienne
Msgstr "Sie müssen nach jedem Befehl eine Shell starten, um die Terminals verwenden zu können." Erstaunlich - das war überhaupt nicht intuitiv, als ich es anfangs ausprobierte. Sie sollten eine Art Kontrollkästchen enthalten, um dies automatisch zu aktivieren.
DTMLAND
5

Suchen Sie nach Terminal Multiplexer tmux.

https://github.com/tmux/tmux

Sujit Maharjan
quelle
Ja, dies scheint eine weitere Möglichkeit zu sein, um das zu erreichen, was ich brauche. Danke :)
jirislav
tmuxist ausgezeichnet!
Dotancohen
3

Damals, als ich dies verwendete, war terminatordies die rc-Datei, mit der ich eine Reihe von Terminals geöffnet und Anwendungen ausgeführt habe. Speichern Sie es 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]

BEARBEITEN: Beachten Sie, dass diese Informationen wahrscheinlich aus Terdons Beitrag in einem viel früheren Thread stammen. Ich benutze dieses Setup seit ein paar Monaten, aber Terdons Post hier kommt mir sehr bekannt vor!

dotancohen
quelle
Dies ist, wonach ich gesucht habe - wie man ein Terminal aufteilt und bestimmte Skripte ausführt - danke! Aber ich würde es nicht gerne jedes Mal so ausführen. Gibt es eine Möglichkeit, mehr von diesen Konfigurationen zu haben und sie zu öffnen, je nachdem, was ich brauche? Nehmen wir an, Sie fügen den Parameter --config2 oder --config1 hinzu.
Jirislav
Sie fügen keine weiteren Konfigurationsdateien hinzu, sondern fügen der Konfigurationsdatei Abschnitte hinzu. Siehe Terdons Post, er erklärt es sehr gut, tatsächlich habe ich das aus seinem Post in einem früheren Thread gelernt.
Dotancohen
Oh, ich verstehe ... Also akzeptierte ich seine Antwort als am hilfreichsten. Danke trotzdem.
Jirislav
Gute Wahl! Eigentlich wollte ich vorschlagen, seine Antwort zu akzeptieren, da die Informationen von seiner harten Arbeit stammen!
Dotancohen
2

Wrapper-Skript zum Aufteilen des Terminator-Terminal-Emulators https://github.com/AlekseyChudov/terminator-split

Aleksey Chudov
quelle
2
Sie sollten die relevanten Informationen hier einfügen, sobald Github verschwunden ist, verliert Ihre Antwort all ihren potenziellen Wert.
Anthon
1
scheint gut zu sein .. aber wie führe ich dieses Skript aus?
Sachin
1
terminator-splithat viel Potenzial, aber es scheint keine Möglichkeit zu geben, verschiedene Befehle in den verschiedenen Splits auszuführen, und das -min den Beispielen gezeigte Argument ist nicht in der Verwendungszusammenfassung aufgeführt
Bitinerant