大多数情况下,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
答案3
另一种方法是将命令作为后台进程启动,然后将其与当前 shell 分离。这将“隐藏”所有输出,因为当前 shell 不再对该进程感兴趣。bash 中的语法是:
gedit test.html &
disown %1
我经常使用另一个答案中提到的输出重定向,因为它非常灵活。您可以输出到文件、设备、连接输出等。但是,当您对输出不感兴趣时,这很有用,您只想从 shell 启动 GUI 应用程序,然后不再与它进行其他交互。