VAR*_*121 20 shell bash man terminal
如果我打开一个程序的手册页,比如cat或ls,它会打印(可能不是合适的词)手册页的内容,当我按下 时q,它会像调用man命令之前一样显示屏幕。恢复是如何发生的?什么会擦除所有内容,然后打印 shell 的先前内容?
例子:
[VAR121@Tesla Testing]$ man ls
Run Code Online (Sandbox Code Playgroud)
输出:
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
............
Run Code Online (Sandbox Code Playgroud)
当我按下 时q,屏幕回到 shell 的默认外观,如下所示的提示。
[VAR121@Tesla Testing]$ man ls
[VAR121@Tesla Testing]$
Run Code Online (Sandbox Code Playgroud)
屏幕如何恢复?
Geo*_*e M 21
“清除”和“恢复”屏幕实际上是您使用的终端仿真器的功能(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.
Run Code Online (Sandbox Code Playgroud)
当less被调用时,终端模拟器会启动一个 altscreen 来显示手册页的内容。当less退出时,altscreen被破坏,终端显示什么保存在缓冲区中。
有一个答案here进一步讨论了这一点以及如何防止程序less启动 altscreen 从而在退出时清除屏幕。简而言之,您可以定义一个环境变量,以便less在调用时不会启动 altscreen。如果您使用 bash,请将其放在 ~/.bashrc 中:
export MANPAGER="/usr/bin/less -r -X -is"