it-swarm.com.de

Öffnen Sie das Gnome Terminal-Fenster und führen Sie 2 Befehle aus

Ich habe ein Skript, das im Hintergrund ausgeführt wird (ohne Terminalfenster oder TTY) und gelegentlich etwas tut.

Ich möchte jetzt, dass es etwas anderes tut, wenn es etwas tut, und es ist, ein Gnome-Terminal-Fenster zu öffnen und 2 Befehle auszuführen. Eigentlich muss ich nur 1 Befehl ausführen, aber ich möchte, dass das Terminalfenster geöffnet bleibt, damit ich die Ausgabe des Befehls sehen kann. Der Befehl wird sowohl auf stdout als auch auf stderr gedruckt, und seine Ausgabe ändert sich im Laufe der Zeit. Wenn Sie ihn also nur in eine Datei schreiben und eine Benachrichtigung senden, ist dies nicht besonders gut.

Ich kann Gnome Terminal dazu bringen, ein Fenster zu öffnen und 1 Befehl auszuführen:

gnome-terminal -e "sleep 10"

Der Einfachheit halber habe ich sleep als lang laufenden Befehl gewählt. Wenn Sie jedoch einen weiteren Befehl hinzufügen, wird kein Terminalfenster geöffnet:

gnome-terminal -e "echo test; sleep 10"

Was ist die Lösung dafür?

13
UTF-8

gnome-terminal behandelt alles in Anführungszeichen als einen Befehl. Um viele davon nacheinander auszuführen, müssen Sie den Interpreter (normalerweise eine Shell) starten und darin Dinge ausführen, zum Beispiel:

gnome-terminal -e 'sh -c "echo test; sleep 10"'

Übrigens möchten Sie möglicherweise, dass das Fenster auch nach Beendigung der Arbeit geöffnet bleibt. Starten Sie in diesem Fall einfach eine neue Shell oder ersetzen Sie eine aktuelle durch die neue:

gnome-terminal -e 'sh -c "echo test; sleep 10; exec bash"'
20
jimmij

Ab Januar 2020 ist die -e Option in gnome-terminal funktioniert immer noch, gibt aber die Warnung aus

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

# Verwenden Sie "-", um die Optionen zu beenden und die Befehlszeile danach auszuführen.

Sie können die beiden Befehle ohne Vorwarnung mit ausführen

gnome-terminal -- /bin/sh -c 'echo test; sleep 10'

Und wie in diese Antwort erwähnt, können Sie dies tun, wenn Sie möchten, dass das Fenster danach geöffnet bleibt

gnome-terminal -- /bin/sh -c 'echo test; sleep 10; exec bash'

* Antwort auf eine ähnliche Frage

4
wxyz