linux终端的隐藏,如何在执行命令时隐藏终端输出?
问题描述当我在11.10中从命令行启动某些程序(如eclipse和文档查看器)时,它会发出一些看似无关紧要的信息。此外,当他们在后台运行时,他们有时会继续向我正在进行的终端输出输出,这很令人恼火。我希望他们只是启动并将背景内容保留在后台。我的理由是,如果你通过GUI启动这些程序(例如双击图标),这些消息永远不会显示给我,所以我在命令行中不需要它们。最佳解决方法如果可以避免在控制台中编写内容,则取决
问题描述
当我在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应用程序。
参考资料
更多推荐
所有评论(0)