如何在关闭脚本后隐藏终端中的bash脚本输出?

时间:2016-09-08 21:33:00

标签: bash shell

现在我知道这个标题并没有真正解释我想要做什么,因为我发现了类似的问题,但没有一个真正涵盖了我想要做的事情。可能有一个名字,我正在尝试做什么,但现在它不包括我。

因此,我能找到解释我想要实现的目标的简单方法就是举例。现在我有一个交互式bash脚本,可以按照预期的方式工作,但是在关闭它之后它会让我感到困扰它停留在我的终端上。 想想“顶部”与“htop”,在关闭顶部后你会得到一个新的提示行,但你仍然会看到终端上的顶部输出。您甚至可以在打开顶部后向上滚动终端。 使用htop,您无法真正在终端上向上或向下滚动,当您关闭htop时,您将只看到最后一个呼叫htop的提示行。

所以我试图让我的脚本运行“包含”,就像htop或vi一样,所以我不必在关闭它后看到脚本输出。无论如何用bash做到这一点?

1 个答案:

答案 0 :(得分:0)

创建以下脚本:

#!/bin/bash
tput smcup
"$@"
tput rmcup

拨打此alt-screen.sh。在该脚本的帮助下,您可以在所谓的备用屏幕(运行htopvi)中运行任何其他程序,如下所示:

./alt-screen.sh foo --option=value arg1 arg2

举一个具体的例子,试试这个:

./alt-screen.sh bash -c 'date; sleep 3'

这是如何工作的?它很简单;它使用tput切换到备用屏幕,然后执行程序,然后切换回原始屏幕。

注意:上述脚本相当简单。您可能希望以各种方式改进它。例如,以下版本如上所述工作,并保留程序的状态代码:

#!/bin/bash
tput smcup
"$@"
status=$?
tput rmcup
exit $status

注释2 :我还没有对此进行过广泛的测试,它几乎肯定会有不良的副作用,但在很多情况下它可能会正常工作。