glance
今天我在办公室使用工具来监控 CPU 利用率。当我glance
从终端运行时,该命令会清除屏幕,完成所有工作后,当我退出回到终端时,之前的提示仍然出现在我的屏幕上。我的意思是我可以看到前面的所有行。我的问题是这种清除屏幕的效果是如何实现的。如果他们使用了这样的命令clear
,它应该清除整个屏幕,他们是如何设法恢复所有以前的提示的?我想为我的一些脚本实现相同的功能。
同样,当使用vi
命令时,屏幕被完全占据,退出后我们也可以查看以前的提示。
答案1
许多终端仿真器维护终端输出的两个副本:正常屏幕缓冲区和备用屏幕缓冲区。正常缓冲区用于命令行应用程序,这些应用程序通常不会将光标移出当前行并提供回滚功能。备用缓冲区用于全屏应用程序,不提供回滚功能。
Glance、vi 和其他人在启动时切换到备用屏幕,在退出时切换回来。
在 xterm 中,您可以通过在鼠标中键菜单中切换“显示备用屏幕”来查看非当前屏幕。
从脚本中,您可以使用 和tput smcup
(tput rmcup
获取在屏幕之间切换的控制序列smcup
,并且rmcup
是术语信息切换到和退出全屏模式的功能)。