# less - 分屏上下翻页浏览文件内容

less命令 的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。

分屏显示文本文件的内容,可以向前或者向后滚动显示。LESS是一个类似于More(1)的程序,但它允许文件中的反向移动以及向前移动。此外,在启动之前,less不需要读取整个输入文件,因此对于大型输入文件,它的启动速度比vi(1)这样的文本编辑器更快。less使用术语(或某些系统的终端),因此它可以运行在各种终端上。甚至对硬拷贝终端的支持也很有限。(在硬拷贝终端上,应在屏幕顶部打印的行以插入符号作为前缀。)

# 适用范围

RedHat
RHEL
Ubuntu
CentOS
Debian
Deepin
SUSE
openSUSE
Fedora
Linux Mint
Alpine Linux
Arch Linux

# 语法

less  [选项]  files

# 选项

当使用less指令之后,屏幕进入了less的命令模式,我们需要借助一些命令才能查看所有的内容。当然,less指令之前使用pageup、pagedown按钮来切换。在下面的描述中,^X表示控制-X。ESC代表逃逸键,例如,esc-v表示两个字符序列“ESC”,然后是“v”。

空格, f, ctrl+V, ctrl+F  # 向前滚动N行,默认一个窗口(见下面的选项-z)。如果N大于屏幕大小,则只显示最终屏幕。警告:一些系统使用^V作为特殊的文字字符。
z  # 类似于空格,但如果指定了N,则它将成为新的窗口大小
ESC-SPACE  # 像空格一样,但是滚动一个完整的屏幕,即使它在过程中到达文件末尾.
RETURN ,  ^N ,  e ,  ^E ,  j , ^J # 向前滚动N行,默认为1。即使N大于屏幕大小,也会显示整个N行。
d ,  ^D  # 向前滚动N行,默认屏幕大小的一半。如果指定了N,则它将成为后续d和u命令的新默认值。
b ,  ^B ,  ESC-v  # 向后滚动N行,默认为一个窗口(见下面的选项-z)。如果N大于屏幕大小,则只显示最终屏幕。
w  # 类似esc-v,但如果指定了N,则它将成为新的窗口大小。
y ,  ^Y ,  ^P ,  k ,  ^K  # 向后滚动N行,默认为1。即使N大于屏幕大小,也会显示整个N行。警告:一些系统使用^Y作为特殊的作业控制字符。
u ,  ^U  # 向后滚动N行,默认屏幕大小的一半。如果指定了N,则它将成为后续d和u命令的新默认值。
ESC-) ,  RIGHTARROW  # 横向右N个字符,默认为屏幕宽度的一半(参见-#选项)。如果指定了一个数字N,则它将成为 RIGHTARROW和LEFTARROW命令的默认值。当文本被滚动时,它的作用就好像-S选项(CHOP行)是有效的。
ESC-( ,  LEFTARROW  # 向左滚动N个字符,默认为屏幕宽度的一半(参见-#选项)。如果指定了一个数字N,则它将成为未来RIGHTARROW和LEFTARROW命令的默认值。
r ,  ^R ,  ^L  # 重新绘制屏幕
R  # 重新绘制屏幕,丢弃任何缓冲输入。如果文件正在被查看时正在更改,则非常有用。
F  # 向前滚动,并在到达文件结束时继续尝试读取。通常,在文件结束时将使用此命令。这是一种监视文件尾部的方法,该文件在被查看时正在增长。(这种行为类似于“tail-f”命令。)
g ,  < ,  ESC-<  # 转到文件中的第N行,默认为1(文件的开头)。(警告:如果N很大,这可能会很慢。)
G ,  > ,  ESC->  # 转到文件中的第N行,默认为文件的末尾。(警告:如果N很大,或者没有指定N,并且正在读取标准输入(而不是文件),这可能会很慢。)
p ,  %  # 转到文件中的N%位置。n应该介于0到100之间,并且可能包含小数点。
P  # 转到文件中包含字节偏移量N的行
{  # 如果在屏幕上显示的最上线中出现左卷曲括号,则{命令将转到匹配的右旋括号。匹配的右括号位于屏幕的底线上。如果上线上有一个以上的左卷曲括号,则可以使用一个数字N来指定该线上的N个括号。
}  # 如果在屏幕上显示的底线中出现右括号,则}命令将转到匹配的左旋括号。匹配的左旋括号位于屏幕的上线上。如果上线上有多个右括号,则可以使用数字N来指定行上的第N个括号。
( # 类似{,但适用于括号而不是花括号。
)  # 类似},但适用于括号而不是花括号。
[  # 类似{,但适用于方括号而不是花括号。
]  # 类似},但适用于方括号而不是花括号。
ESC-^F  # 后面跟着两个字符,动作类似于{,但分别使用这两个字符作为开括号和尾括号。例如,“ESC^F<>”可用于向前移动到与顶部显示行中的<匹配的>。
ESC-^B  # 后面跟着两个字符,类似于},但分别使用这两个字符作为开括号和尾括号。例如,“ESC^B<>”可用于返回到与底部显示行中的>匹配的<
m  # 后面跟着任何小写字母,用该字母标记当前位置。
'  # (单引号)后面跟着任何小写字母,返回以前用该字母标记的位置。后面跟着另一个单引号,返回执行最后一个“大型”移动命令的位置。后面跟着^或$,分别跳转到文件的开头或结尾。检查新文件时保留标记,因此可以使用“命令”在输入文件之间切换。
^X^X  # 和单引号一样
/pattern  # 在文件中搜索包含模式的第N行。N默认为1。模式是一个正则表达式,正如系统提供的正则表达式库所识别的那样。搜索从显示的第二行开始(但请参阅-a和-j选项,这将改变这一点)。
         # ^N or !,搜索与模式不匹配的行。
         # ^E or *,搜索多个文件。也就是说,如果搜索到达当前文件的末尾而没有找到匹配项,# 则搜索将在命令行列表中的下一个文件中继续进行。
         # ^F or @,在命令行列表中的第一个文件的第一行开始搜索,而不考虑当前屏幕上显示的# 内容或-a或-j选项的设置。
         # ^K,高亮显示任何与当前屏幕上的模式匹配的文本,但不要移动到第一个匹配(保持当前# 位置)。
         # ^R不要解释正则表达式元字符;也就是说,做一个简单的文本比较
?pattern  #在文件中向后搜索包含模式的第N行,搜索从紧接显示的上线之前的行开始。
          #^N or !,搜索与模式不匹配的行。
          #^E or *,搜索多个文件。也就是说,如果搜索到达当前文件的末尾而没有找到匹配项,则搜索将在          #命令行列表中的下一个文件中继续进行。
          #^F or @,在命令行列表中的第一个文件的第一行开始搜索,而不考虑当前屏幕上显示的内容或-a或          #-j选项的设置。
          #^K,正向搜索
          #^R,正向搜索
ESC-/pattern   # 等价于/*
ESC-?pattern  # 等价于?*
n  # 重复前面的搜索,寻找包含最后一个模式的第N行.如果前面的搜索是由^N修改的,则对不包含模式的第N行进行搜索。如果前面的搜索是由^E修改的,则如果当前文件中不满足搜索,则在下一个(或前一个)文件中继续搜索。如果前面的搜索是由^R修改的,则无需使用正则表达式即可完成搜索。如果前面的搜索是由^F或^K修改的,则没有任何效果。
N  # 重复先前的搜索,但方向相反
ESC-n  # 重复以前的搜索,但跨越文件边界。其效果就好像先前的搜索被*修改了一样。
ESC-N  # 重复先前的搜索,但方向相反,并跨越文件边界。
ESC-u  # 撤消搜索高亮显示。关闭与当前搜索模式匹配的字符串的高亮显示。如果由于前面的ESC-u命令,高亮显示已经关闭,请打开高亮显示。任何搜索命令也会打开高亮显示。(高亮显示也可以通过切换-G选项来禁用;在这种情况下,搜索命令不会打开高亮显示。)
&pattern  # 只显示与模式匹配的行;不匹配模式的行不显示。如果模式是空的(如果您键入&后面紧跟着Enter),则关闭所有筛选,并显示所有行。当过滤生效时,在提示符的开头会显示一个符号,以提醒文件中的某些行可能被隐藏。
:e [filename]  # 检查一个新文件。如果缺少文件名,则重新检查命令行中文件列表中的“当前”文件(请参阅下面的:n和:p命令)。将文件名中的百分比符号(%)替换为当前文件的名称。一个磅号(#)被先前检查过的文件的名称所取代。然而,两个连续的百分比符号被简单地替换为一个百分比符号。这允许您输入一个文件名,其中包含名称中的百分比号。同样,两个连续的磅标记被替换为一个磅标记。文件名被插入到文件的命令行列表中,以便随后的:n和:p命令可以看到它。如果文件名由几个文件组成,它们都被插入到文件列表中,并对第一个文件进行检查。如果文件名包含一个或多个空格,则整个文件名应以双引号括起来
^X^V or E  # 和:e一样
:n  # 检查下一个文件(从命令行中提供的文件列表)。如果指定数字N,则将检查第N个下一个文件。
:p  # 检查命令行列表中的前一个文件。如果指定数字N,则检查第N个前一个文件。
:x  # 检查命令行列表中的第一个文件。如果指定数字N,则检查列表中的第N个文件.
:d  # 从文件列表中删除当前文件
t  # 如果当前标记有多个匹配项,请转到下一个标记
T  # 如果当前标记有多个匹配项,请转到前一个标记。
= ,  ^G ,  :f  # 打印有关正在查看的文件的一些信息,包括其名称、所显示的底线的行号和字节偏移量。如果可能的话,它还会打印文件的长度、文件中的行数和文件在最后显示行上方的百分比。
-  # 后面跟着一个命令行选项字母(请参阅下面的选项),这将更改该选项的设置,并打印一条描述新设置的消息。如果在破折号后立即输入^P(Control-P),则选项的设置将被更改,但不会打印任何消息。如果选项字母具有数值(如-b或-h)或字符串值(如-P或-t),则可以在选项字母之后输入新值。如果没有输入新值,则打印一条描述当前设置的消息,并且不会更改任何内容。
--  # 类似于“-”命令,但采用长选项名(请参阅下面的选项),而不是单个选项字母。键入选项名称后,必须按“返回”。第二个破折号后的^P会立即抑制描述新设置的消息的打印,如-命令中所示。
-+  # 后面跟着一个命令行选项字母,这将选项重置为默认设置,并打印一条描述新设置的消息。(“-X”命令在命令行上执行与“-X”相同的操作。)这不适用于字符串值选项。
--+  # 类似“-+“命令,但采用长选项名,而不是单个选项字母。
-!  # 后面跟着一个命令行选项字母,这将选项重置为其默认设置的“相反”,并打印一条描述新设置的消息。这不适用于数值或字符串值选项。
--!  # 就像“-!“命令,但是使用长选项名,而不是单个选项字母。
_  # (下划线)后面跟着一个命令行选项字母,它将打印一条消息,描述该选项的当前设置。选项的设置不会更改。
_ _  # (双下划线)类似于_(下划线)命令,但是使用一个长选项名,而不是一个选项字母。键入选项名称后,必须按“返回”。
+cmd  # 导致每次检查新文件时都执行指定的cmd。例如,G导致开始时显示每个文件的次数较少,从末尾开始,而不是从开头开始。
V  # 打印less的版本
q ,  Q ,  :q ,  :Q ,  ZZ  # 退出less
v  # 调用编辑器编辑正在查看的当前文件。如果定义了环境变量visual,则从环境变量获取编辑器;如果未定义visual,则从编辑器获取;如果未定义可视化或编辑器,则默认为“vi”。
! shell-command  # 调用shell来运行给定的shell命令。命令中的百分比符号(%)被替换为当前文件的名称。一个磅号(#)被先前检查过的文件的名称所取代。“!”重复最后一个shell命令。“!”没有shell命令,只需调用一个shell。在Unix系统上,shell是从环境变量shell中提取的,或者默认为“sh”。
| <m> shell-command  # <m>表示任何标记字母。将输入文件的一部分输送到给定的shell命令。要管道的文件的部分位于当前屏幕上的第一行和以字母标记的位置之间。<m>也可以是^或$,分别表示文件的开始或结束。如果<m>是。或者换行符,当前屏幕将被管道化。
s filename  # 将输入保存到文件中。这只有在输入是管道而不是普通文件时才有效。
-a, --search-skip-screen  # 搜索的时候从屏幕的最后一行开始
-b, --buffers=n           # 指定以千字节(1024字节)为单位的每个文件将使用的缓冲区空间的大小。默认情况下,每个文件都使用64K的缓冲区空间(除非文件是管道,
-B, --auto-buffers        # 禁止读取pipe时自动开辟内存
-c, --clear-screen        # 清屏的时候从最上面开始,默认从最下面开始清屏
-C, --CLEAR-SCREEN        # 和“-c“一样
-d, --dumb                # 如果终端是哑的,则-d选项将抑制通常显示的错误消息;也就是说,缺少一些重要功能,例如清除屏幕或向后滚动的能力。-d选项否则不会更改哑终端上less的行为。
-e, --quit-at-eof         # 文件内容显示完毕后,自动退出
-E, --QUIT-AT-EOF         # 和“-E“一样
-f, --force               # 强制打开文件           
-F, --quit-if-one-screen  # 如果文件一屏就可以显示,那么自动退出
-g                        # 不特别标识使用搜索指定的关键词
-G, --HILITE-SEARCH       # -G选项禁止搜索命令找到的字符串的所有高亮显示。
--old-dot                 # 返回到屏幕行为的旧底部。这有时是可取的,如果长线没有正确包装时,到达终端底部,同时向前滚动。
-hn ,  --max-back-scroll=n # 指定要向后滚动的最大行数。如果需要向后滚动超过n行,则将屏幕改为正向绘制。
-i, --ignore-case         # 搜索时忽略大小写
-I, --IGNORE-CASE         # 类似-i,但搜索忽略大小写,即使模式包含大写字母。
-jn ,  --jump-target=n    # 指定屏幕上要放置“目标”行的一行。目标行是由任何命令指定的行,用于搜索模式、跳转到行号、跳转到文件百分比或跳转到标记。
-J, --status-column       # 在屏幕左侧显示状态栏。Status列显示与当前搜索匹配的行。如果-w或-W选项生效,还将使用Status列。
-N                        # 在每一行的开头显示行号
-Q                        # 不输出警告信息
-s                        # 连续的多个空行,仅显示一行
-S                        # 行内容大于屏幕宽度时,不换行

?,--help                           # 显示帮助文档
--version                        # 显示命令版本信息