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 druckt sowohl auf stdout als auch auf stderr und seine Ausgabe ändert sich im Laufe der Zeit. Wenn Sie ihn also nur in eine Datei schreiben und eine Benachrichtigung senden, funktioniert dies nicht besonders gut.

Ich kann Gnome Terminal dazu bringen Öffnen Sie ein Fenster und führen Sie 1 Befehl aus:

gnome-terminal -e "sleep 10" 

Der Einfachheit halber habe ich sleep als lang laufenden Befehl ausgewä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?

Kommentare

Antwort

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

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

Übrigens möchten Sie möglicherweise, dass das Fenster auch nach Beendigung des Auftrags 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"" 

Kommentare

  • # Option „-e“ ist veraltet und wird möglicherweise in einer späteren Version von entfernt gnome-terminal. # # Verwenden Sie „-„, um die Optionen zu beenden und die Befehlszeile danach auszuführen. # Dieser Fehler tritt jetzt auf. Wenn Sie jedoch -e durch – ersetzen, gibt das neue Terminal einen Fehler aus. Wie verwende ich -?
  • @ eric.frederich basierend auf dieser Antwort auf eine Frage bei stackoverflow. Ich glaube, die Syntax sollte lauten gnome-terminal -- /bin/sh -c 'echo test; sleep 10'

Antwort

Ab Januar 2020 ist der -e in gnome-terminal funktioniert weiterhin, gibt jedoch die Warnung

# 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 Warnung mit

  

Und wie in dieser Antwort erwähnt, können Sie dies tun, wenn das Fenster danach geöffnet bleiben soll

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

* Antwort t o eine ähnliche Frage

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.