GNU/Linux >> Linux Esercitazione >  >> Linux

Esegui uno script di shell nel nuovo terminale dal terminale corrente

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 :)


Linux
  1. Come si esegue uno script all'accesso in *nix?

  2. Esecuzione di script di shell in parallelo

  3. Directory corrente dello script Shell?

  4. Esegui uno script reindirizzato da stdin (Linux/Shell Scripting)

  5. restituire il valore dallo script python allo script shell

Come eseguire il comando / script della shell di Linux in background

Come eseguire lo script della shell come servizio SystemD in Linux

Come creare ed eseguire uno script di shell in Ubuntu 22.04

Come eseguo un programma con una directory di lavoro diversa da quella corrente, dalla shell di Linux?

Come eseguire uno script di shell all'avvio

Come eseguire uno script .sh da qualsiasi percorso in un terminale?