GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Mehrere Terminal-Tabs öffnen und Befehl ausführen?

Ich muss mehrere Terminal-Tabs öffnen, ihnen Titel geben, in ein Verzeichnis gehen und jeden Tab dazu bringen, einen Befehl auszuführen.

Ich bin neu in Linux und Shell-Skripting, nachdem ich online gesucht und einige Lösungen überprüft habe, habe ich dieses Skript erstellt (BEARBEITET basierend auf den Antworten unten):

#!/bin/bash

cd /media/Extra/Project

tab=" --tab-with-profile=Default"
options=(--tab --title=Terminal)

cmds[1]="'rails s'"
titles[1]="Server"

cmds[2]="'rails c'"
titles[2]="Console"


for i in 1 2; do
  options+=($tab --title="${titles[i]}"  -e "bash -c "${cmds[i]} ; bash"" )          
done

gnome-terminal "${options[@]}"


exit 0

Es öffnet die Registerkarten, benennt sie, kann aber die Befehle nicht ausführen, die diesen Fehler erzeugen:

Beim Erstellen des untergeordneten Prozesses für dieses Terminal ist ein Fehler aufgetreten

Ein weiteres Manko ist, dass, wenn ich den laufenden Befehl anhalte, die Registerkarte geschlossen wird, was ich nicht möchte. Ich muss in der Lage sein, den Befehl zu stoppen und innerhalb derselben Registerkarte erneut auszuführen.

Was ist mit dem Skript falsch? Gibt es einen anderen einfacheren Weg, dies zu tun?

Hinweis:Wenn ich den Teil (-e „“bash -c ${cmds[i]};bash““) aus dem Befehl entfernt habe, öffnet er die Registerkarten im angegebenen Verzeichnis und benennt sie ohne Fehler.

-Edit-1:

Nach dem Anwenden der @Tuknutx-Antwort unten und dem Bearbeiten des Skripts wird der Fehler nicht mehr angezeigt, aber er gibt mir bash: rails c: command not found und rails s eine neue Rails-App erstellt, anstatt den Rails-Server zu starten, verwende ich .rmvrc, um ein Gemset auszuwählen, sobald auf diesen Ordner zugegriffen wird.

Akzeptierte Antwort:

Ich würde die Verwendung von tmux empfehlen mit tmuxinator , es erledigt die Arbeit für Sie, und Sie können sich auf terminator verlassen Layouts auch!

Für terminator layout checkout mhnagaokas Antwort hier auch askubuntu:

  1. Nachdem Sie Ihr Layout eingerichtet haben, klicken Sie mit der rechten Maustaste auf einen beliebigen Terminalhintergrund und wählen Sie EinstellungenLayouts und klicken Sie auf Hinzufügen Schaltfläche.

  2. Geben Sie ihm einen Namen und klicken Sie auf Schließen .

  3. Dies sollte den erwähnten ~/.config/terminator/config erstellen Datei.

  4. Jetzt können Sie Terminator mit dem gespeicherten Layout starten mit:terminator -l yourLayout (ersetze deinLayout mit dem, was Sie
    in Schritt 2 gewählt haben).

  5. (optional) Bearbeiten Sie ~/.config/terminator/config Datei so, dass dort [layouts] steht und darunter verschachtelt [[yourLayout]] , benennen Sie IhrLayout um auf Standard und den vorherigen Standard entfernen/umbenennen Layout. Wenn Terminator jetzt ohne Parameter startet, wird es
    Ihren benutzerdefinierten [[default]] laden Layout!


Ubuntu
  1. Anzeigen und Löschen des Terminalverlaufs in Ubuntu 20.04 - Beste Methode?

  2. Unterschied zwischen ' und ' in der Befehlszeile (bash)??

  3. Ssh zu mehreren Hosts und einen Befehl ausführen?

  4. Unterschied zwischen den Symbolen „&&“ und „;“ in einem Standard-Bash-Terminal?

  5. | Im Terminalkommando?

Beispiele für Bildschirmbefehle zum Verwalten mehrerer Terminalsitzungen

Erstellen und verwenden Sie Bash-Aliase unter Linux

So zeigen und löschen Sie den Terminalverlauf in Ubuntu 20.04

Kopieren und Einfügen von Text auf dem Linux-Terminal

Arbeiten mit mehreren Terminal-Tabs in Ubuntu

Installieren und verwenden Sie Guake – Ein Dropdown-Terminal-Emulator für Ubuntu