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