So führen Sie mehr als einen Befehl aus - Gnome-Terminal

So führen Sie mehr als einen Befehl aus - Gnome-Terminal

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 ./AppXmit 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 AppXnur 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[@]}"

verwandte Informationen