在 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
在 bash 中,您可以>/dev/null 2>&1
使用 来完成&>/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。
($@ 魔法是为了处理更复杂的参数)