当前位置: 首页>>技术问答>>正文


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

,

问题描述

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

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

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

最佳解决方法

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

$ eclipse >/dev/null

并且不应该输出。

要禁止错误消息:

$ eclipse >/dev/null 2>&1

或者在bash中,简单地说:

$ eclipse &>/dev/null

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

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

次佳解决方法

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

例如:假设您要从命令行启动gvim(gui文本编辑器)。

你可以编写这样的函数:

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

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

说明:

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

    • 将stdout和stderr重定向到/dev/null(禁止输出到终端)

    • 使用&在后台运行命令(因此您的shell不会被阻止)

    • 使用disown从shell中删除后台作业(因此它不会出现在活动作业列表中)

    • 使用nohup从终端分离进程(这样您就可以结束shell会话或关闭终端而不会终止进程)

第三种解决方法

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

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1596.html,未经允许,请勿转载。