当我退出程序时“man”如何恢复屏幕?

当我退出程序时“man”如何恢复屏幕?

cat如果我打开像或 这样的程序的手册页ls,它会打印(可能不是适当的单词)手册页的内容,当我按 时q,它会像调用命令之前一样显示屏幕man。恢复是如何发生的?什么会擦除所有内容,然后打印 shell 之前的内容?

例子:

[VAR121@Tesla Testing]$  man ls

输出:

LS(1)                                                        User Commands                                                        LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

 ............

当我按下 时q,屏幕会返回到 shell 的默认外观,如下所示的提示符。

[VAR121@Tesla Testing]$  man ls
[VAR121@Tesla Testing]$

画面如何恢复?

答案1

“清除”和“恢复”屏幕实际上是您所使用的终端仿真器的功能(xtermgnome-terminalkonsolescreen)。

默认情况下,使用的寻呼机manless

man 1 man

   -P  pager
          Specify  which pager to use.  This option overrides the 
          MANPAGER environment variable, which in turn overrides 
          the PAGER variable.  By default, man  uses /usr/bin/less -is.

调用时less,终端仿真器将启动替代屏幕以显示手册页的内容。退出时less,altscreen 被销毁,终端显示缓冲区中保存的内容。

有一个答案这里其中进一步讨论了这一点,以及如何防止程序less启动替代屏幕,从而在退出时清除屏幕。简而言之,您可以定义一个环境变量,以便less在调用时不会启动替代屏幕。如果您使用的是 bash,请将其放入 ~/.bashrc 中:

export MANPAGER="/usr/bin/less -r -X -is"

相关内容