GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Führen Sie ein Shell-Skript im neuen Terminal vom aktuellen Terminal aus

Ich bin hierher gekommen, um herauszufinden, wie man ein Skript dazu bringt, ein Terminal zu spawnen und es selbst darin auszuführen, also habe ich für diejenigen, die das tun möchten, diese Lösung gefunden:

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

Hier ist ein einfaches Beispiel für den Einstieg:

Um ein Shell-Skript zu schreiben, tun Sie dies an Ihrer Eingabeaufforderung:

echo -e '#!/bin/sh\n echo "hello world"' > abc.sh

Dies schreibt:

#!/bin/sh
echo "hello world"

In eine Datei namens abc.sh

Als nächstes möchten Sie es auf ausführbar setzen durch:

chmod +x abc.sh

Jetzt können Sie es wie folgt ausführen:

./abc.sh

Und Sie sollten sehen:

hello world

Auf Ihrem Terminal.

Um es in einem neuen Terminal auszuführen, können Sie Folgendes tun:

gnome-terminal -x ./abc.sh

oder, wenn es xterm ist :

xterm -e ./abc.sh

Hier ist eine Liste verschiedener Terminal-Emulatoren.

Alternativ führen Sie es einfach in Ihrem aktuellen Terminal aus, aber im Hintergrund durch:

./abc.sh &

Für Gnome versuchen Sie dies.

Ersetzen Sie ls durch den Befehl, den Sie ausführen möchten

gnome-terminal -x sh -c "ls|less"

Ich hoffe, das ist, was Sie wollen


Ab Januar 2020 die -e und -x Option in gnome-terminal läuft immer noch richtig, aber wirf die folgenden Warnungen aus:

Für -e :

# Option „-e“ ist veraltet und wird möglicherweise in einer späteren Version von gnome-terminal entfernt.

# Verwenden Sie „--“, um die Optionen abzuschließen, und setzen Sie die auszuführende Befehlszeile dahinter.

Für -x :

# Die Option „-x“ ist veraltet und wird möglicherweise in einer späteren Version von gnome-terminal entfernt.

# Verwenden Sie „--“, um die Optionen abzuschließen, und setzen Sie die auszuführende Befehlszeile dahinter.

Basierend auf diesen Informationen oben habe ich bestätigt, dass Sie die folgenden zwei Befehle ausführen können, ohne Warnmeldungen zu erhalten:

gnome-terminal -- /bin/sh -c '<your command>'
gnome-terminal -- ./<your script>.sh

Ich hoffe, das hilft allen anderen, die derzeit dieses Problem haben :)


Linux
  1. Möglichkeit, ein Shell-Skript immer als Root auszuführen?

  2. Wo wird ein Shell-Skript ausgeführt?

  3. .bashrc aus aktueller Shell neu generieren?

  4. Wie führe ich ein Shell-Skript auf einer Unix-Konsole oder einem Mac-Terminal aus?

  5. Wie führe ich ein Programm mit einem anderen Arbeitsverzeichnis als dem aktuellen aus, von der Linux-Shell?

So führen Sie einen Linux-Shell-Befehl / ein Skript im Hintergrund aus

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus

So führen Sie Python-Skripte von der Shell aus

So erstellen und führen Sie ein Shell-Skript in Ubuntu 22.04 aus

So führen Sie ein Shell-Skript beim Start aus

Rückgabewert vom Python-Skript zum Shell-Skript