每当我在 shell 中使用类似寻呼机less
或编辑器nano
(我的 shell 是 GNU bash)时,我都会看到一种我无法完全解释的行为,这与我可以使用其他工具(如cat
或ls
. 我想问一下这种行为是怎么产生的。
不容易解释的行为是,通常所有输出到 stdout/stderr 最终都被记录在终端模拟器后台缓冲区中,所以我可以向后滚动,而在使用less
or的情况下(对我来说不太正常)nano
,输出由终端模拟器显示,但在退出程序时,内容“神奇地消失”。
我想举两个例子:
seq 1 200
(在后台缓冲区中生成 200 行)seq 1 200 | less
(让我翻页 200 行,但最终“清理”并在后台缓冲区中没有记录任何内容)我的怀疑是某种转义代码在起作用,我很感激有人指出我对这种观察到的行为差异的解释。
由于一些评论和答案是措辞的,就好像我希望改变行为一样,这“很高兴知道”,但实际上所需的答案应该是对机制的描述,而不是改变它的方法。
一些程序如 vim/nano/nload 可以使用整个终端来显示其内容,并且在退出时恢复之前的终端输出。他们如何实施这个恢复过程?