
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>&1
bash では、で実現できます&>/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 を簡単に制御したいかどうかによって異なります。
($@マジックはより複雑な引数を処理するためのものです)