The 备用屏幕被许多“用户交互”终端应用程序使用,如 vim、htop、screen、alsamixer、less……它就像终端内容的不同缓冲区,当应用程序退出时它会消失,因此整个终端会恢复并看起来应用程序没有输出任何内容。
我想在我自己的 shell (bash) 脚本中实现完全相同的事情,只是它不必那么可移植。我会坚持只使用 Linux 和基于 xterm 的终端模拟器;但解决方案应该使用类似的东西tput
如果它是可能的。但是,我不想使用某些外部脚本语言(甚至是 C 之类的语言)。
虽然我不想使用 C (因为它应该是一个具有尽可能少依赖项的 bash 脚本),但我还是查看了 less 的源代码。它似乎使用 terminfo 作为数据库,并在初始化时查找“ti”终端功能。删除该行时,它不使用备用屏幕,因此我假设我找到了负责的代码行。
但是,我找不到这样的能力man terminfo
。但也许我在寻找解决方案的道路上走错了。也许 terminfo / tput 不是我的朋友。
那么(如何)我可以在 bash 脚本中使用备用屏幕?有人知道一个简单的应用程序,我可以在其中找到提示的源代码吗? (C 应用程序或 bash 脚本或其他......)
您可以使用以下命令切换到备用屏幕:
$ tput smcup
并返回:
$ tput rmcup
这些命令只是输出适合您终端的转义序列。如果它是 XTERM,它们将相当于(更知名但不太优雅或可移植):
$ echo -e "\e[?1049h"
And:
$ echo -e "\e[?1049l"
更多终端控制命令参见man 5 terminfo
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)