备用屏幕被许多类似vim、htop、screen、alsamixer和less等“用户交互”终端应用程序使用。它就像终端内容的另一个缓冲区,在应用程序退出时消失,因此整个终端会被恢复,看起来好像应用程序没有输出任何东西。
我想在自己的Shell(bash)脚本中实现完全相同的功能,但它不必那么便携。我将仅限于Linux和基于xterm的终端仿真器;但如果可能的话,解决方案应使用类似tput
的东西。然而,我不想使用一些外部脚本语言(甚至是C之类的东西)。
尽管我不想使用C(因为它应该是一个尽可能少依赖的bash脚本),但我查看了less的源代码。它似乎将terminfo作为数据库,并在初始化时查找“ti”终端能力。当删除该行时,它不使用备用屏幕,因此我认为我找到了负责的代码行。
但是,我在man terminfo
中找不到这样的能力。但也许我正在错误的路径上寻找解决方案。也许terminfo / tput不是我的好朋友。
那么,我如何在bash脚本中使用备用屏幕呢?是否有人知道一个简单的应用程序,在其中可以找到提示的源代码?(C应用程序或bash脚本或其他...)
ti
(如问题中所提到的),但没有找到这个功能!该死...-.- - leemesterminfo(3ncurses)
,所以我使用man 5 terminfo
来获取适当的文档。(供那些可能不知道的人参考) - Dennis Williamsonrmcup
以返回正确模式。缺点是当它切换时,我会失去在缓冲区中存在的SSH/screen输出,因为终端被“重置”为正常屏幕而不是备用屏幕。 - dragon788