![当我退出程序时“man”如何恢复屏幕?](https://linux22.com/image/48705/%E5%BD%93%E6%88%91%E9%80%80%E5%87%BA%E7%A8%8B%E5%BA%8F%E6%97%B6%E2%80%9Cman%E2%80%9D%E5%A6%82%E4%BD%95%E6%81%A2%E5%A4%8D%E5%B1%8F%E5%B9%95%EF%BC%9F.png)
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
“清除”和“恢复”屏幕实际上是您所使用的终端仿真器的功能(xterm
、gnome-terminal
、konsole
、screen
)。
默认情况下,使用的寻呼机man
是less
。
从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"