Con un programma di avvio per un'applicazione terminale, come posso tenere il terminale aperto dopo il completamento del programma?


24

Ho un comando terminale che eseguo da un lanciatore di applicazioni. Funziona benissimo, tuttavia a volte il comando non riesce, quindi vorrei che il terminale rimanesse aperto in modo da poter vedere i risultati. Come posso fare questo?

Risposte:


23

Supponendo che il tuo comando venga chiamato mycommand, cambierei il mio launcher per eseguire questo:

gnome-terminal -e "mycommand|less"

Se vuoi una soluzione più permanente, forse più pulita, apri gnome-terminal, vai su Modifica, Preferenze profilo e fai clic sulla scheda Titolo e Comando. Modificare l'opzione "Quando il comando termina" su "Tenere aperto il terminale".

Quando esegui i comandi, ora dovrebbe lasciare aperto il terminale quando qualcosa è in esecuzione.

Modifica: se non ti interessa davvero il terminale, puoi semplicemente usare il flag di attesa di xterm:

xterm -e "mycommand" hold

7
Per mantenere l'azione del terminale predefinito "quando il comando termina", suggerisco di creare un nuovo profilo del terminale, impostarlo in modo che rimanga aperto dopo la chiusura di un comando e passa l' --tab-with-profile=PROFILENAMEopzione a gnome-terminal . Puoi avere molti profili per diversi bahaviour in questo modo :-)
inverti il

1
xterm -hold -e mycommand

8

Il tuo lanciatore sta eseguendo uno script giusto?

Alla fine del tuo script aggiungi

read -p "Press any key to exit > " -n1 junk
echo 

Quindi il tuo script attenderà fino a quando deciderai di terminarlo.


1
+1, e per mostrare il prompt solo se il comando fallisce (restituisce un codice di uscita diverso da zero) si potrebbe farecommand || read -n1 -p "Command failed. Press any key to exit..."
Jukka Matilainen,

8

Nel tuo collegamento .desktop, usa questo

Exec=gnome-terminal -x bash -c "YOUR_SCRIPT; exec $SHELL"

Al termine dello script, il processo di Bash si sostituirà con una nuova invocazione di se stesso.

Se devi passare argomenti citati al tuo script, devi evitare le virgolette:

Exec=gnome-terminal -x bash -c "YOUR_SCRIPT \"arg with spaces\"; exec $SHELL"

3

Un approccio leggermente diverso dalle altre risposte: esegui il tuo comando e se fallisce, quindi genera una shell. In questo modo non è necessario tenere aperto il terminale (che non distingue tra successo o fallimento del comando) e potresti trovare quella shell particolarmente utile in caso di fallimento. Per chiuderlo, basta usare Ctrl-D (EOF), "esci", Alt-F4 (o qualunque cosa il tuo gestore di finestre usi per chiudere le finestre), ecc.

successo-o-shell

#!/bin/sh
[ $# -eq 0 ] && {
  echo "$(basename $0): no command" >&2
  exit 1
}
"$@" || {
  echo "failed: $?"
  exec $SHELL
}

Posiziona questo file da qualche parte, come ~ / bin, quindi usa "success-or-shell il tuo comando originale" nel tuo launcher.


0

Questa risposta offre la migliore risposta che abbia mai visto fare quello che vuoi. Si consiglia di creare uno script con i comandi per eseguirlo e usarlo con il parametro --init-file (specifico per bash, ma probabilmente si potrebbe fare lo stesso per csh / tcsh / zsh, ecc.):

#!/bin/bash --init-file
commands to run

... ed eseguilo come:

xterm -e /path/to/script
# or
gnome-terminal -e /path/to/script
# or
the-terminal -e bash --init-file /path/to/script/with/no/shebang

0

Usa il watchcomando

Formato: watch -n60 myCommandowatch -n60 "my command string"

  • il -nspecificato il numero di secondi di attesa tra le chiamate a myCommand ; es: il comando sopra chiamerà myCommand ogni 60 secondi, per sempre.
  • Se il comando è più parole, metterlo dentro le virgolette doppie: "my command string".

Supponiamo che tu voglia un Launcher che mostra l'utilizzo del disco e che rimane aperto al lettore. Utilizzerei semplicemente questo comando all'interno del Launcher:,
watch -n60 "df -h"che chiama df -hora ogni 60 secondi.

Mi piace la risposta accettata gnome-terminal -e "mycommand|less"perché sto eseguendo Xubuntu, che utilizza un terminale diverso per impostazione predefinita.


0

Prova a fare clic con il pulsante destro del mouse sul launcher e inserisci le proprietà.

Dovrebbe esserci un'opzione per tenere aperta la finestra del terminale inserisci qui la descrizione dell'immagine

Nel file .desktop, dovrebbe esserci la voce X-KeepTerminal=true

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.