当我从命令行启动某些程序(例如 11.10 中的 eclipse 和文档查看器)时,它会喷出大量看似无关紧要的信息。
此外,当它们在后台运行时,它们有时会继续向我当前正在处理的终端产生输出,这很令人恼火。
我希望它们直接启动并将后台内容保留在后台。我的理由是,如果您通过 GUI 启动这些程序(例如双击图标),这些消息永远不会显示给我,因此我不需要它们在命令行中。
答案1
如果你可以避免在控制台中写东西,这取决于程序如何创建输出。如果它被流式传输到标准输出,那么这样做就足够了
$ eclipse >/dev/null
并且不应有任何输出。
要抑制错误消息:
$ eclipse >/dev/null 2>&1
或者在 bash 中,简单来说:
$ eclipse &>/dev/null
但如果他们以不同的方式去做,那么阻止它在控制台中写入可能会有问题。
如果可能的话,使用 MuffinStateWide 提供的解决方案
答案2
您可以创建一个 bash 函数,它将为命令名称添加别名并添加一些额外的功能来实现您的要求。
例如:假设您想gvim
从命令行启动(GUI 文本编辑器)。
你可以编写这样的函数:
function gvim () {
nohup gvim "$@" > /dev/null 2>&1 & disown
}
(将此功能添加到您的.bashrc
或.bash_aliases
文件中,以便始终加载它)
解释:
这将使用
gvim
同样命名的 bash 函数为该命令设置别名gvim
(因此,当您gvim
在 bash 提示符下键入时,它将调用您的gvim
函数,而不是执行真正的gvim
命令。然后,您的函数将调用真正的gvim
命令(并接受其常规参数),并附加一些功能:- 将 stdout 和 stderr 重定向到
/dev/null
(禁止输出到终端) - 用于
&
在后台运行命令(这样你的 shell 就不会被阻止) - 用于
disown
从 shell 中删除后台作业(因此它不会出现在活动作业列表中) - 用于
nohup
将进程与终端分离(这样你就可以结束你的 shell 会话或关闭你的终端而不终止进程)
- 将 stdout 和 stderr 重定向到
答案3
尝试添加 --help 作为命令开关并查找“quiet”,这应该会抑制输出,或者只是从 GUI 启动。并使用开关启动或找到通过脚本抑制它的方法
我个人从 cli 启动来获取该输出,所以我不确定它是否适用于所有 GUI 应用程序。