一尘不染

在bash脚本中使用“备用屏幕”

linux

备用屏幕
用于通过像vim,HTOP,屏幕,alsamixer中,以下,…它像一个不同缓冲液中的终端的内容的,其消失的应用程序退出时,所以整个终端许多“用户交互式”应用终端恢复后,看起来应用程序没有输出任何东西。

我想在自己的shell(bash)脚本中实现完全相同的功能,除了它不必具有可移植性。我只会使用linux和基于xterm的终端仿真器;但解决方案应尽可能使用类似tput的方法。但是,我不想使用某些外部脚本语言(甚至不喜欢C语言)。

尽管我不想使用C(因为它应该是具有尽可能少的依赖项的bash脚本),但我研究了更少的源代码。似乎使用terminfo作为数据库,并在初始化时查找“
ti”终端功能。删除该行时,它不使用备用场景,因此我假设我找到了负责的代码行。

但是,我在中找不到这样的功能man terminfo。但是也许我在错误的道路上找到解决方案。也许terminfo / tput不是我的朋友。

所以(如何)我可以在bash脚本中使用备用屏幕?有人知道一个简单的应用程序,可以在其中找到源代码吗?(C应用程序或bash脚本或其他…)


阅读 334

收藏
2020-06-02

共1个答案

一尘不染

您可以使用以下命令切换到备用屏幕:

$ tput smcup

然后返回:

$ tput rmcup

这些命令只是为您的终端输出适当的转义序列。如果是XTERM,它们将等效于(更广为人知,但不太优雅或便携):

$ echo -e "\e[?1049h"

和:

$ echo -e "\e[?1049l"

有关更多终端控制命令,请参见man 5 terminfo

2020-06-02