
Ich habe ein Skript, das einige (mehr als 15) der folgenden Anwendungen ausführt:
cd mypath
sleep 1
gnome-terminal -t App1 --tab -e "./App1"
sleep 1
gnome-terminal -t App2 --tab -e "./App2"
..
..
sleep 1
gnome-terminal -t App15 --tab -e "./App15"
Wie Sie sehen, werden dadurch Apps auf 15 verschiedenen Terminals gestartet.
Was jetzt passiert, ist, dass, wenn ich aus irgendeinem Grund irgendein Programm ./AppX
mit Ctrl+ beende C, das Programm beendet und das Terminal verlassen wird.
Ich möchte, dass beim Drücken von Ctrl+ Cnur das beendet wird ./AppX
, das Terminal aber weiterhin geöffnet bleibt, da ich zum erneuten Starten AppX
nur die Aufwärtspfeiltaste und die Eingabetaste drücken muss.
BEARBEITEN::
Habe die Antwort::siehe die akzeptierte Antwort von askubuntu.com.
Eine andere Frage ist: Wie führe ich mehr als einen Befehl wie den folgenden aus:
gnome-terminal -e "sleep 1; AppX"
das funktioniert NICHT, ich habe verschiedene andere Methoden ausprobiert (&, &&, |), aber alle sind fehlgeschlagen.
Antwort1
Der folgende Befehl öffnet ein neues Terminal mit 15 Tabs im Multi-Gnome-Terminal:
cd mypath
multi-gnome-terminal \
--add-tab -tname App1 --tcommand "./App1" \
--add-tab -tname App2 --tcommand "./App2" \
...
--add-tab -tname App15 --tcommand "./App15" \
Wenn Sie diesen Schlaf wirklich brauchen, können Sie ihn einbauen:
cd mypath
multi-gnome-terminal \
--add-tab -tname App1 --tcommand "sleep 1; ./App1" \
--add-tab -tname App2 --tcommand "sleep 2; ./App2" \
...
--add-tab -tname App15 --tcommand "sleep 15; ./App15" \
Und wenn Sie die Anzahl/Liste der Befehle, die Sie starten möchten, dynamisch ändern müssen, können Sie Folgendes verwenden:
cd mypath
cmd=(multi-gnome-terminal)
cmd=("${cmd[@]}" --add-tab -tname App1 --tcommand "sleep 1; ./App1")
cmd=("${cmd[@]}" --add-tab -tname App2 --tcommand "sleep 2; ./App2")
...
cmd=("${cmd[@]}" --add-tab -tname App15 --tcommand "sleep 15; ./App15")
"${cmd[@]}"