Sono venuto qui volendo capire come fare in modo che uno script generi un terminale e lo esegua da solo, quindi per coloro che vogliono farlo ho trovato questa soluzione:
if [ ! -t 0 ]; then # script is executed outside the terminal?
# execute the script inside a terminal window with same arguments
x-terminal-emulator -e "$0" "[email protected]"
# and abort running the rest of it
exit 0
fi
Ecco un semplice esempio per iniziare:
Per scrivere uno script di shell, esegui questa operazione al prompt dei comandi:
echo -e '#!/bin/sh\n echo "hello world"' > abc.sh
Questo scrive:
#!/bin/sh
echo "hello world"
In un file chiamato abc.sh
Successivamente, vuoi impostarlo come eseguibile da:
chmod +x abc.sh
Ora puoi eseguirlo con:
./abc.sh
E dovresti vedere:
hello world
Sul tuo terminale.
Per eseguirlo in un nuovo terminale, puoi fare:
gnome-terminal -x ./abc.sh
o, se è xterm
:
xterm -e ./abc.sh
Ecco un elenco di diversi emulatori di terminale.
In alternativa, eseguilo semplicemente nel tuo attuale terminale, ma invece eseguilo in background con:
./abc.sh &
Per gli gnomi prova questo.
Sostituisci ls con il comando che vuoi eseguire
gnome-terminal -x sh -c "ls|less"
Spero che questo sia quello che vuoi
A partire da gennaio 2020, il -e
e -x
opzione in gnome-terminal
funzionano ancora correttamente ma generano i seguenti avvertimenti:
Per -e
:
# L'opzione "-e" è deprecata e potrebbe essere rimossa in una versione successiva di gnome-terminal.
# Usa "--" per terminare le opzioni e inserisci la riga di comando da eseguire dopo di essa.
Per -x
:
# L'opzione "-x" è deprecata e potrebbe essere rimossa in una versione successiva di gnome-terminal.
# Usa "--" per terminare le opzioni e inserisci la riga di comando da eseguire dopo di essa.
Sulla base delle informazioni di cui sopra, ho confermato che puoi eseguire i seguenti due comandi senza ricevere alcun messaggio di avviso:
gnome-terminal -- /bin/sh -c '<your command>'
gnome-terminal -- ./<your script>.sh
Spero che questo aiuti chiunque altro abbia attualmente questo problema :)