Was ist die beste Vorgehensweise zum Ausführen von GUI-Programmen über die CLI, um Meldungen, die keine Fehlermeldungen enthalten, zu unterdrücken?

Was ist die beste Vorgehensweise zum Ausführen von GUI-Programmen über die CLI, um Meldungen, die keine Fehlermeldungen enthalten, zu unterdrücken?

Wenn Sie unter Linux grafische Programme (wie beispielsweise Sublime Text) vom Terminal aus ausführen, läuft das Programm zwar einwandfrei, es werden jedoch in den Konsolenmeldungen Meldungen protokolliert, bei denen es sich nicht wirklich um Fehler handelt und auch nicht um nützliche Protokollmeldungen, sondern nur um „Zeug“ wie:

(sublime:15269): Gtk-WARNING **: Unable to locate theme engine in module_path: "oxygen-gtk",

(sublime:15269): GLib-CRITICAL **: Source ID 958 was not found when attempting to remove it

... die problematisch sind, wenn das Programm im Hintergrund ausgeführt wird und das Terminal weiterhin verwendet wird.

Was ist die beste Vorgehensweise, um dies zu entfernen?

Ich habe darüber nachgedacht, die Binärdatei durch ein Skript zu ersetzen, das den Start der Binärdatei umschließt, aber die gesamte Ausgabe unterdrückt ( > /dev/null 2>&1), aber gibt es dafür nicht eine sauberere Möglichkeit?

Antwort1

In Bash können Sie dies >/dev/null 2>&1mit erreichen &>/dev/null.

Sie könnten beispielsweise Folgendes tun:

#Run a command in the background, ignoring its STDOUT and STDERR
silence() { local cmd="$1"; shift; "$cmd" "$@" &>/dev/null & }

#The same, but stop caring about it too (no job control, no SIGHUP when the parent terminal closes)
abandon() { silence "$@"; disown; }  

Dann würden Sie Folgendes tun:

silence sublime_text

oder

abandon sublime_text

Je nachdem, ob Sie Sublime Text weiterhin problemlos vom Terminal aus steuern möchten oder nicht.

(Die $@-Magie dient der Verarbeitung komplexerer Argumente)

verwandte Informationen