如何在执行命令时隐藏终端输出?

当我在11.10中从命令行启动某些程序(如eclipse和文档查看器)时,它会发出一些看似无关紧要的信息。

此外,当他们在后台运行时,他们有时会继续向我正在进行的终端输出输出,这很令人恼火。

我希望他们只是启动并将背景内容保留在后台。 我的理由是,如果你通过GUI启动这些程序(例如双击图标),这些消息永远不会显示给我,所以我在命令行中不需要它们。

如果可以避免在控制台中编写内容,则取决于程序的输出是如何创建的。 如果它流式传输到标准输出,那就足够了

$ eclipse >/dev/null 

并且不应该输出。

要禁止错误消息:

 $ eclipse >/dev/null 2>&1 

或者在bash中,简单地说:

 $ eclipse &>/dev/null 

但如果他们以不同的方式做到这一点,那么阻止它在控制台中写入可能是一个问题。

如果可能的话,使用MuffinStateWide给出的解决方案

您可以创建一个bash函数,该函数将别名命令名称并添加一些额外的function来实现您的要求。

例如:假设你想从命令行启动gvim (一个gui文本编辑器)。

你可以编写这样的函数:

 function gvim () { nohup gvim "$@" > /dev/null 2>&1 & disown } 

(将此函数添加到.bashrc.bash_aliases文件中,以便始终加载)

说明:

  • 这将使用名为gvim的bash函数为gvim命令设置别名(因此当你在bash提示符下键入gvim时,它将调用你的gvim函数,而不是执行真正的gvim命令。你的函数然后调用真正的gvim命令(并接受)它的常规args),增加了一些function:

    • 将stdout和stderr重定向到/dev/null (禁止输出到终端)
    • 使用&在后台运行命令(所以你的shell没有被阻止)
    • 使用disown从shell中删除后台作业(因此它不会出现在活动作业列表中)
    • 使用nohup从终端分离进程(因此您可以结束shell会话或关闭终端而不会终止进程)

尝试添加–help作为命令开关并寻找“安静”这应该抑制输出,或者只是从GUI启动。 并使用开关启动或找到通过脚本抑制它的方法

我亲自从cli启动以获得输出,所以我不确定它可能适用于所有GUI应用程序。