エラー以外のメッセージを黙らせるために CLI から GUI プログラムを実行するための最善のポリシーは何ですか?

エラー以外のメッセージを黙らせるために CLI から GUI プログラムを実行するための最善のポリシーは何ですか?

Linux で、ターミナルからグラフィカル プログラム (たとえば Sublime Text など) を実行すると、プログラムは正常に実行されますが、コンソールに、正確には失敗ではなく、役に立つログ メッセージでもなく、次のような「内容」だけが記録されます。

(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

...これは、プログラムをバックグラウンドで実行し、ターミナルを引き続き使用する場合に問題になります。

これを削除するベストプラクティスは何ですか?

バイナリの起動をラップするがすべての出力を抑制するスクリプト ( ) でバイナリを置き換えることを考えました> /dev/null 2>&1が、もっとクリーンな方法はないでしょうか?

答え1

>/dev/null 2>&1bash では、で実現できます&>/dev/null

次のようなことができます:

#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; }  

次に、次のようにします。

silence sublime_text

または

abandon sublime_text

ターミナルから Sublime Text を簡単に制御したいかどうかによって異なります。

($@マジックはより複雑な引数を処理するためのものです)

関連情報