Apri Terminale con più schede ed esegui l'applicazione


16

Sono nuovo dello scripting della shell di Linux. Voglio scrivere uno script di shell che aprirà il terminale con più schede; dovrebbe eseguire l'app client rtsp in ogni scheda.

Per questo, ho esaminato la domanda qui in questo forum e ho cercato di scrivere codice come muggito,

tab="--tab-with-profile=Default -e "
cmd="java RunRTSPClient"
for i in 1 2 3 4 5
   do
#   
   foo="$foo $tab $cmd"         
   done
gnome-terminal $foo
exit 0

Questo è in esecuzione e apre la finestra del terminale con le schede ma improvvisamente si chiuderà. Non ricevo errori.

Risposte:


13

Usa questa variante dello script per fare quello che vuoi:

#!/bin/bash

tab="--tab-with-profile=Default"
cmd="bash -c 'java RunRTSPClient';bash"
foo=""

for i in 1 2 3 4 5; do
      foo+=($tab -e "$cmd")         
done

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

exit 0

In genere, uno script come questo:

#!/bin/bash

tab="--tab"
cmd="bash -c '<command-line_or_script>';bash"
foo=""

for i in 1 2 ... n; do
      foo+=($tab -e "$cmd")         
done

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

exit 0

aprirà un nuovo terminale con n schede eseguendo il <command-line_or_script>in ciascuna scheda. Questo può essere molto utile quando si desidera, ad esempio, aprire un terminale con alcune schede con l'interprete in un percorso specifico (usando cd /pathnello script sopra).

Inoltre, leggere man bash, questo post e questo post di comprendere i cambiamenti.

Ho testato questi script e funzionano.


Come ho detto, viene visualizzato e chiuso e non viene visualizzato alcun errore. Come risolvere questo problema?
user172001

ok ora mostra le finestre con le schede ma non esegue l'app in nessuna scheda. e spiegami anche un po ', come questo ha risolto il problema di visualizzazione della finestra.
user172001

@ user172001 Ora funziona, controlla le nuove modifiche!
Radu Rădeanu,

questo è abbastanza bello. +1
Nishant

1
Ho provato ad aggiungere cmd1 && cmd2nella stringa di comando per eseguire più comandi. Sembra solo eseguire il primo. Sto facendo qualcosa di palesemente sbagliato?
byxor,

7

Ho trovato la mia risposta. Penso che questo sia un approccio migliore perché:

  1. Posso capirlo. Io non sono un esperto di bash e nessuna spiegazione è stata data la risposta più popolare per ciò che è ..., ${}, -e, o@
  2. Ti consente di personalizzare facilmente il titolo e il comando per ogni scheda
  3. Ho detto che è molto più facile da capire?

Nota che ; $SHELLalla fine di ogni comando gnome-terminal è ciò che mantiene aperta la finestra del terminale. Altrimenti si chiuderebbe immediatamente.

title1="tab 1"
title2="tab 2"
title3="tab 3"

cmd1="cd /etc"
cmd2="cd ~/Documents"
cmd3="cd /usr/local"

gnome-terminal --tab --title="$title1" --command="bash -c '$cmd1; $SHELL'" \
               --tab --title="$title2" --command="bash -c '$cmd2; $SHELL'" \
               --tab --title="$title3" --command="bash -c '$cmd3; $SHELL'" 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.