什么是“回滚”,并在节目像“滚动缓冲区”bash
和screen
,以及它们如何涉及到TTY,正在运行的程序,标准输入/输出/标准错误?
这是迄今为止我发现的“回滚”的唯一定义(在archlinux wiki 中):
回滚是在文本控制台中实现的一项功能,它允许用户返回查看已滚出屏幕的文本行。这是通过在视频适配器和显示设备之间为此目的创建的缓冲区实现的;回滚缓冲区。
但是,这给我带来了更多的问题:
vim
中screen
启动的bash
启动中ssh
启动,这些程序中的哪些正在控制回滚缓冲区?我也用screen
,以转储回溯到一个文件中。这个文件的顶部有很多空白,我的终端模拟器显示的“视图”似乎只是缓冲区底部的几行。
vim
可以“清除”我的整个终端窗口,因为它可以临时访问父 shell 的回滚缓冲区?vim
使用它自己的回滚缓冲区,该缓冲区以某种方式覆盖在父回滚缓冲区之上?今天我glance
在办公室使用工具监控CPU利用率。当我glance
从终端运行时,命令会清除屏幕,完成所有工作后,当我退出终端时,之前的提示仍然在我的屏幕上。我的意思是我可以看到前面的所有行。我的问题是这种清除屏幕的效果是如何实现的。如果他们使用了类似的命令clear
,它应该清除了整个屏幕,他们是如何设法取回所有以前的提示的?我想为我的一些脚本实现相同的功能。
同样使用vi
命令时,屏幕被完全占用,退出后,我们也可以查看以前的提示。
一些程序如 vim/nano/nload 可以使用整个终端来显示其内容,并且在退出时恢复之前的终端输出。他们如何实施这个恢复过程?
我在一台 linux 机器上,我需要的是一个 sh 脚本/命令,以便能够从终端窗口中删除所有内容(甚至显示为 PS1 变量的内容)并删除滚动功能。
基本上我需要一个空白终端,您只能在其中看到程序的输出并且无法滚动。就像nano
命令所做的那样。
我尝试了各种方法,如clear
、reset
、tput reset
,echo -en \\ec
但所有这些方法(尽管清除了几乎所有内容)都使提示文本完好无损,这是我不想要的。我也不需要能够在终端中向上或向下滚动。
一个解决方案可能是打印一些相当于终端高度的换行符,但这样我就可以向上滚动并最终看到提示文本,因此结合禁用滚动/滚动条可能是一个解决方案,但是我不知道该怎么做,即便如此,我也不认为这是一个“干净”的解决方案。
谢谢。