Öffnen Sie programmgesteuert die Registerkarte in gnome-terminal, führen Sie den Befehl aus und lassen Sie die Registerkarte geöffnet bleiben

12

Ich versuche, einen Befehl zu schreiben, der einige Terminal-Registerkarten startet, in jeder Registerkarte etwas ausführt und jede Registerkarte geöffnet bleibt, nachdem der Befehl abgeschlossen ist, damit ich die Ausgabe überprüfen und weitere Befehle in jede Registerkarte eingeben kann

etwas wie das:

gnome-terminal --tab -e "ls -a" --tab -e "ls"

Das Problem dabei ist jedoch, dass die Registerkarten geschlossen werden, sobald die "ls" -Befehle beendet sind. Weiß jemand, wie die Registerkarten geöffnet bleiben?

Kennzeichen
quelle

Antworten:

11

Gnome-Terminal kann entweder einen Befehl ausführen oder eine Shell öffnen, aber nicht beide.

Es gibt eine Problemumgehung, um sowohl den Befehl als auch den nachfolgenden Aufruf der Shell in einem Befehl zu kapseln.

$ gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""

Weitere Alternativen finden Sie in meiner Antwort auf eine ähnliche Frage zum Stapelüberlauf: /programming/3512055/avoid-gnome-terminal-close-after-script-execution/3531426#3531426

Lesmana
quelle
10

Wenn Sie haben xdotoolund wmctrlinstalliert haben, funktioniert möglicherweise das folgende Shell-Skript:

#!/usr/bin/env bash

window="$(xdotool search --class gnome-terminal | head -1)"
xdotool windowfocus $window
xdotool key ctrl+shift+t
xdotool type "$*"
xdotool key Return

Ich benutze es so:

$ run-in-new-tab 'ls -l'

Ich habe diese Idee auf Trustin Lees Blog gefunden .


quelle
Vielen Dank. Das funktioniert ganz gut. Ich muss ein sleep 1nach der Strg + Umschalt + t hinzufügen , damit es für mich funktioniert. Ich werde das akzeptieren, wenn bald nichts anderes auftaucht
Ja, ich musste sleep 2es 100% der Zeit zum Laufen bringen. Tolle Lösung - ich öffne jetzt 8 Registerkarten, die auf verschiedene Server zugreifen, verschiedene Prozesse starten usw.: Mein Morgen-Setup ist jetzt komplett skriptgesteuert :)
Max Williams
Ist eigentlich wmctrlnicht erforderlich.
Mittwoch,