如何在执行命令时隐藏终端输出?
当我在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会话或关闭终端而不会终止进程)
- 将stdout和stderr重定向到
尝试添加–help作为命令开关并寻找“安静”这应该抑制输出,或者只是从GUI启动。 并使用开关启动或找到通过脚本抑制它的方法
我亲自从cli启动以获得输出,所以我不确定它可能适用于所有GUI应用程序。