从命令行运行应用程序时隐藏调试信息

从命令行运行应用程序时隐藏调试信息

大多数情况下,gtk从命令行运行应用程序时,它就会开始转储调试信息,stdout即使我将它们放在后台。

例子:

~$ gedit test.html # and ctrl+z to suspend
zsh: suspended  gedit .zshrc
~$ bg
[1]  + continued  gedit .zshrc
~$
# do some editing
(gedit:6208): GtkSourceView-WARNING **: Could not find word to remove in buffer (whoosh), this should not happen!

(gedit:6208): GtkSourceView-WARNING **: Could not find word to remove in buffer (haystack), this should not happen!

我想指出的是,错误或警告会根据我当前正在执行的操作而变化。GtkSourceView-WARNING这里显示的就是其中一种情况。

无论如何...你知道是否有可能避免打印出这些信息吗?

答案1

您可以发送那些标准输出和错误消息到空设备,这样它们就不会出现在你的终端中,例如gedit test.html >/dev/null 2>&1

答案2

我不知道这是否正是您所寻找的并且是否会对您有所帮助,但是:

既然你说你想经营一个GTK应用程序在后台,你可以这样做:

nohup <applicationname> > /dev/null < /dev/null &

禁止programm 基本上将传递给它的应用程序与终端分离,从而允许终端会话结束,但应用程序仍可运行。

由于该命令,您可以关闭终端,或继续使用它(因为所有输出都发送到 /dev/null),而不会出现问题&。 对此的简单解释如下:这里

答案3

另一种方法是将命令作为后台进程启动,然后将其与当前 shell 分离。这将“隐藏”所有输出,因为当前 shell 不再对该进程感兴趣。bash 中的语法是:

gedit test.html &
disown %1

我经常使用另一个答案中提到的输出重定向,因为它非常灵活。您可以输出到文件、设备、连接输出等。但是,当您对输出不感兴趣时​​,这很有用,您只想从 shell 启动 GUI 应用程序,然后不再与它进行其他交互。

相关内容