Öffnen Sie das Gnome-Terminal mit mehreren Registerkarten und führen Sie auf jeder Registerkarte einige Befehle aus

12

Folgendes möchte ich erreichen:

  1. Ich möchte ein Gnomterminal mit fünf Registerkarten öffnen
  2. Ich möchte eine Reihe von Befehlen (5 - 10 Befehle) auf jeder Registerkarte automatisch
    ausführen. Erste Registerkarte: Setzt die Klarsichtansicht und führt danach einen oder mehrere Befehle aus.
    Zweite Registerkarte: meldet sich bei einem Server an und führt einige Befehle aus.
    Dritte Registerkarte: soll nur einige Befehle ausführen

gnome-terminal --geometry=260x25-0+0 --tab -e "csh -c \"ct setview myViewName; cal\"" –tab --tab --tab (funktioniert ok, Ansicht ist gesetzt, aber danach wird kein Befehl ausgeführt)

Ich habe versucht, es stattdessen auf diese Weise zu tun und dies im folgenden Skript auszuführen:

gnome-terminal --geometry 125x18-0-26 --tab -t "some title" -e /home/ekido/Desktop/MyScripts/myScript

#!/usr/bin/expect
exec gnome-terminal --geometry 125x49-0+81 –tab
spawn ssh usert@server
expect "password"
send "*******\r"
expect "user@server100:~>"
send “some command\r"
expect "user@server100:~>"
send “some command"
interact 

Wenn ich die exec gnome-terminal --geometry 125x49-0+81 –tabZeilen aus dem Beispiel entferne und ein Skript aus einer anderen Datei aufrufe, funktioniert dies einwandfrei. Ich werde beim Server angemeldet und alle Befehle ausgeführt. Kann mir jemand helfen, das zu lösen?

Ein Skript zu schreiben, das ich für jede Registerkarte aufrufe, ist keine Option, da ich am Ende 5 Terminals mit jeweils 5-7 Registerkarten haben werde. Das bedeutet, dass 25 bis 30 Skripte geschrieben werden müssen (kostet mehr als es hilft in meinem Problem).

ekido
quelle
Ich bin zwar kein Experte für GNOME-Terminal, aber die von Ihnen erstellten Registerkarten sollten in einem Profil gespeichert werden. Nach dem Erstellen des Profils können Sie es meines Erachtens skripten. Siehe Verwalten von Profilen in der GNOME-Hilfe.
eyoung100

Antworten:

11

Dies scheint auf meiner Maschine zu funktionieren:

gnome-terminal --geometry=260x25-0+0 --tab -e "bash -c 'date; read -n1'" --tab -e "bash -c 'echo meow; read -n1' " --tab --tab

Bitte beachten Sie, dass die von -e ausgeführten Prozesse beendet werden, sobald sie ausgeführt werden. In diesem Fall wird bash geladen, führt alle Befehle aus, die Sie an bash übergeben, und ist sofort vorhanden. Ich habe die read-Anweisungen eingegeben, um auf Benutzereingaben zu warten. Auf diese Weise werden diese Registerkarten erst geschlossen, wenn Sie eine Taste drücken, damit Sie sie in diesem Beispiel sehen können. Ohne sie würde es so aussehen, als würden nur zwei Registerkarten geöffnet, da die anderen beiden zu schnell ausgeführt und geschlossen würden.

Unix-Ninja
quelle
Danke für deine Antwort. Sicher, ich kann die Ausgabe eines Befehls sehen (in diesem Fall "Datum"), aber ich möchte mehrere Befehle ausführen, die Ausgabe sehen und dann weiterhin manuell neue Befehle auf derselben Registerkarte schreiben.
Ekido
3

Da bash nach Abschluss des Befehls beendet wird, können Sie bashnach Ihrem Befehl eine andere Instanz aufrufen , um eine interaktive Shell zu erhalten:

gnome-terminal  --tab -e "bash -c 'ps -ef; bash'" --tab -e "bash -c 'ls; bash'" --tab -e "bash -c 'top -n 1; bash'"
Jean Spector
quelle
Wenn ich das Terminal schließe, werden die zugrunde liegenden Prozesse anscheinend nicht automatisch geschlossen. Gibt es auch eine Lösung dafür? Ich möchte das gesamte Fenster schließen und alle Registerkarten mit ihren Prozessen sollten einen Kill bekommen
Blub
1

Speichern Sie unten als script.sh

#!/usr/bin/env bash

me=$(realpath $0)

commands=(
"echo"
"ls -l && echo 'yes'"
"top"
"ps"
)
len=${#commands[@]}

if [ $# -eq 0 ];then
    num=$len
else
    num=$1
fi

n=$((len-num))
command=${commands[$n]}
num=$((num-1))

xdotool key ctrl+shift+t

if [ $num -gt -1 ]; then
    sleep 1; xdotool type --delay 1 --clearmodifiers "$me $num; ${command}"; xdotool key Return;
fi

Fügen Sie script.sh zu $ ​​PATH hinzu und führen Sie es aus

gnome-terminal -x script.sh

Siehe Öffnen einer neuen Registerkarte im Gnome-Terminal über die Befehlszeile .

Rofrol
quelle
alles andere scheiterte ansonsten. Jetzt möchte ich einige der Registerkarten ohne Befehl öffnen. Zum Beispiel möchte ich zehn Registerkarten geöffnet haben, aber drei, wenn sie einige Befehle wie htop
ausführen