less - 在终端中显示文件内容
概要
less -?
less --help
less -V
less --version
less [-[+]aABcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX~]
[-b space] [-h lines] [-j line] [-k keyfile]
[-{oO} logfile] [-p pattern] [-P prompt] [-t tag]
[-T tagsfile] [-x tab,...] [-y lines] [-[z] lines]
[-# shift] [+[+]cmd] [--] [filename]...
(有关使用长选项名称的备用选项语法的详细信息,请参阅“选项”部分。)
描述
Less 是一个类似于 more(1) 的程序,但它具有更多功能。 Less 不需要读取 整个输入文件才能开始,因此对于大型输入文件,它比 vi(1) 等文本编辑器启动更快。 Less 使用 termcap(或某些系统上的 terminfo),因此它可以运行在各种终端上。甚至对硬拷贝终端也有限的支持。(在硬拷贝终端上, 应该在屏幕顶部打印的行前面会加上一个插入符号。)
命令基于 more 和 vi。命令可以由十进制数字前缀,在下面的描述中称为 N。该数字由某些命令使用,如下所示。
命令
在以下描述中,^X 表示 Control-X。ESC 表示 ESCAPE 键;例如, ESC-v 表示两个字符序列“ESCAPE”,然后是“v”。
h 或 H 帮助:显示命令摘要。如果您忘记了所有其他命令,请记住这个命令。
SPACE 或 ^V 或 f 或 ^F
向前滚动 N 行,默认值为一个窗口(请参阅选项 -z)。如果 N 大于
屏幕大小,则仅显示最后一个屏幕。警告:某些系统将 ^V 用作特殊字面量字符。
z
类似于 SPACE,但如果指定了 N,则它将成为新的窗口大小。
ESC-SPACE
类似于 SPACE,但滚动整个屏幕,即使在滚动过程中到达文件结尾。
ENTER 或 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 命令的新默认值。
J 类似于 j,但继续滚动到文件末尾之外。
K 或 Y 类似于 k,但继续滚动到文件开头之外。
ESC-) 或 RIGHTARROW
水平向右滚动 N 个字符,默认值为屏幕宽度的一半(参见 -\# 选项)。如果指定了数字 N,则它将成为未来 RIGHTARROW 和 LEFTARROW 命令的默认值。 在滚动文本时,它就像启用了 -S 选项(截断行)一样。
ESC-( 或 LEFTARROW
水平向左滚动 N 个字符,默认值为屏幕宽度的一半(参见 -\# 选项)。如果指定了数字 N,则它将成为未来 RIGHTARROW 和 LEFTARROW 命令的默认值。
ESC-} 或 ^RIGHTARROW
水平滚动到显示最长行的末尾。
ESC-{ 或 ^LEFTARROW
水平滚动到第一列。
r 或 ^R 或 ^L
重新绘制屏幕。
R 重新绘制屏幕,丢弃任何缓冲的输入。 也就是说,重新加载当前文件。当文件在被查看时发生更改时,此功能很有用。
F 向前滚动,并在到达文件末尾时继续尝试读取。 通常,当已到达文件末尾时使用此命令。 它是监视正在增长的文件的末尾的一种方法(行为类似于“tail -f”命令)。 要停止等待更多数据,请输入中断字符(通常为 ^C)。 在支持 poll(2) 的系统上,您还可以使用 ^X 或 --intr 选项指定的字符。 如果输入是管道,并且启用了 --exit-follow-on-close 选项,则 less 将自动停止等待数据,并在管道的输入端关闭时停止。
ESC-F 类似于 F,但只要找到与最后搜索模式匹配的行,终端就会发出蜂鸣声并停止向前滚动。
g 或 < 或 ESC-<
转到文件中的第 N 行,默认值为 1(文件开头)。 (警告:如果 N 很大,这可能会很慢。)
G 或 > 或 ESC->
转到文件中的第 N 行,默认值为文件末尾。 (警告:如果 N 很大,或者未指定 N 并且正在读取标准输入而不是文件,这可能会很慢。)
ESC-G 与 G 相同,但如果没有指定数字 N 并且输入是标准输入,则转到当前缓冲的最后一行。
p 或 % 转到文件中 N 百分位数的位置。 N 应该在 0 到 100 之间,并且可以包含小数。
P 转到文件中包含字节偏移量 N 的行。
{ 如果左大括号出现在屏幕上显示的顶部行中,则 { 命令将转到匹配的右大括号。 匹配的右大括号位于屏幕的底部行上。 如果顶部行中存在多个左大括号,则可以使用数字 N 来指定该行中的第 N 个大括号。
} 如果屏幕上显示的最后一行中出现右花括号,则 `}` 命令将跳转到匹配的左花括号。匹配的左花括号位于屏幕的顶部。如果该行上有多个右花括号,可以使用数字 N 来指定该行的第 N 个括号。
( 类似于 `{`,但适用于括号而不是花括号。
) 类似于 `}`,但适用于括号而不是花括号。
[ 类似于 `{`,但适用于方括号而不是花括号。
] 类似于 `}`,但适用于方括号而不是花括号。
ESC-^F 后面跟着两个字符,其作用类似于 `{`,但使用这两个字符作为开括号和闭括号。例如,“ESC ^F < >”可用于向前跳转到与位于顶部显示行中的 `<` 匹配的 `>`。
ESC-^B 后面跟着两个字符,其作用类似于 `}`,但使用这两个字符作为开括号和闭括号。例如,“ESC ^B < >”可用于向后跳转到与位于底部显示行中的 `>` 匹配的 `<`。
m 后面跟着任何小写或大写字母,都会用该字母标记第一行。如果启用了状态列(通过 `-J` 选项),则状态列会显示标记的行。
M 类似于 `m`,但标记的是最后显示的行,而不是第一行。
' (单引号。)后面跟着任何小写或大写字母,返回到之前用该字母标记的位置。后面跟着另一个单引号,返回到执行上次“大型”移动命令的位置。后面跟着 `^` 或 `$`,跳转到文件开头或文件末尾。标记在检查新文件时会被保留,因此可以使用 `\` 命令在输入文件之间进行切换。
^X^X 与单引号相同。
ESC-m 后面跟着任何小写或大写字母,清除由该字母标识的标记。
/pattern
在文件中向前搜索包含该模式的第 N 行。N 默认为 1。该模式是正则表达式,由您的系统提供的正则表达式库识别。默认情况下,搜索区分大小写(大写和小写被视为不同);可以使用 `-i` 选项来更改此设置。搜索从第一行开始(但请参见 `-a` 和 `-j` 选项,它们会更改此设置)。
某些字符如果在模式的开头输入,则会修改搜索类型,而不是成为模式的一部分:
^N 或 !
搜索不匹配该模式的行。
^E 或 *
搜索多个文件。也就是说,如果搜索到达当前文件的末尾而没有找到匹配项,则搜索将继续到命令行列表中的下一个文件。
^F 或 @
从命令行列表中的第一个文件的第一行开始搜索,无论当前屏幕上显示的内容或 `-a` 或 `-j` 选项的设置如何。
^K 高亮显示当前屏幕上与模式匹配的任何文本,但不要移动到第一个匹配项(保持当前位置)。
^R 不将正则表达式元字符视为特殊字符;即,执行简单的文本比较。
^S 后跟一个 1 到 5 之间的数字 N。只有具有非空匹配的第 N 个带括号的子模式的文本才会被视为与模式匹配。(仅当 less 使用以下正则表达式库之一构建时才支持:posix、pcre 或 pcre2。)可以指定多个 ^S 修饰符,以匹配多个子模式。
^W 在当前文件中循环搜索。也就是说,如果搜索到达当前文件的末尾而没有找到匹配项,则搜索将从当前文件的第一行开始,一直到它开始的行。如果设置了 ^W 修饰符,则将忽略 ^E 修饰符。
^L 下一个字符将被视为文字字符;也就是说,它将成为模式的一部分,即使它是上述搜索修饰符之一。
?pattern
在文件中向后搜索包含该模式的第 N 行。搜索从当前显示的最后一行开始(但请参见 -a 和 -j 选项,它们会改变这一点)。
某些字符与 / 命令中的字符一样具有特殊含义:
^N 或 !
搜索不匹配模式的行。
^E 或 *
搜索多个文件。也就是说,如果搜索到达当前文件的开头而没有找到匹配项,则搜索将继续在命令行列表中的下一个文件中进行。
^F 或 @
从命令行列表中最后一个文件的最后一行开始搜索,无论当前屏幕上显示的内容或 -a 或 -j 选项的设置如何。
^K 与前向搜索中的含义相同。
^R 与前向搜索中的含义相同。
^S 与前向搜索中的含义相同。
^W 在当前文件中循环搜索。也就是说,如果搜索到达当前文件的开头而没有找到匹配项,则搜索将从当前文件的最后一行开始,一直到它开始的行。
ESC-/pattern
与 "/*" 相同。
ESC-?pattern
与 "?*" 相同。
n 重复上一次搜索,以查找包含上次模式的第 N 行。如果上一次搜索由 ^N 修改,则搜索的是不包含该模式的第 N 行。如果上一次搜索由 ^E 修改,则如果当前文件中未找到匹配项,则搜索将继续到下一个(或上一个)文件中。如果上一次搜索由 ^R 修改,则搜索将不使用正则表达式。如果上一次搜索由 ^F 或 ^K 修改,则不会产生任何效果。
N 重复上一次搜索,但反向进行。
ESC-n 重复上一次搜索,但跨文件边界。效果就像上一次搜索由 \ * 修改一样。
ESC-N 重复上一次搜索,但反向进行且跨文件边界。
ESC-u 撤销搜索高亮。 关闭当前搜索模式匹配字符串的高亮显示。 如果由于之前的 ESC-u 命令,高亮已经关闭,则重新打开高亮。 任何搜索命令也会重新打开高亮。(高亮也可以通过切换 -G 选项来禁用;在这种情况下,搜索命令不会重新打开高亮。)
ESC-U 类似于 ESC-u,但也会清除保存的搜索模式。 如果状态栏已通过 -J 选项启用,则清除状态栏中标记的所有搜索匹配项。
&pattern
仅显示与模式匹配的行;不显示与模式不匹配的行。 如果模式为空(如果您输入 & 后立即按 ENTER),则关闭所有筛选,并显示所有行。 当筛选生效时,会在提示符的开头显示一个“&”符号,以提醒您文件中可能隐藏着一些行。 可以输入多个 & 命令,在这种情况下,仅显示与所有模式匹配的行。
某些字符在 / 命令中具有特殊含义:
^N 或 !
仅显示与模式不匹配的行。
^R 不要解释正则表达式元字符;即,执行简单的文本比较。
:e [filename]
检查新文件。 如果文件名缺失,则重新检查命令行中文件列表中的“当前”文件(请参见下面的 :n 和 :p 命令)。 文件名中的百分号 (%) 将替换为当前文件的名称。 井号 (#) 将替换为先前检查的文件名。 但是,两个连续的百分号 (%) 仅替换为一个百分号 (%)。 这样就可以输入文件名中包含百分号的名称。 同样,两个连续的井号 (#) 替换为一个井号 (#)。 文件名将插入到命令行文件列表中,以便后续的 :n 和 :p 命令可以查看。 如果文件名由多个文件组成,则所有文件都将插入到文件列表中,并且将检查第一个文件。 如果文件名包含一个或多个空格,则整个文件名应放在双引号中(请参阅 -” 选项)。
^X^V 或 E
与 :e 相同。 警告:某些系统将 ^V 用作特殊字面字符。 在这些系统中,您可能无法使用 ^V。
:n 检查下一个文件(来自命令行中给出的文件列表)。 如果指定了数字 N,则检查第 N 个下一个文件。
:p 检查命令行列表中的上一个文件。 如果指定了数字 N,则检查第 N 个上一个文件。
:x 检查命令行列表中的第一个文件。 如果指定了数字 N,则检查列表中的第 N 个文件。
:d 从文件列表中删除当前文件。
t 如果当前标签有多个匹配项,则转到下一个标签。 有关标签的更多详细信息,请参见 -t 选项。
T 转到前一个标签,如果有多个匹配的标签。
^O^N 或 ^On
在文件中向前搜索第 N 个 OSC 8 超链接。
^O^P 或 ^Op
在文件中向后搜索第 N 个 OSC 8 超链接。
^O^L 或 ^Ol
跳转到当前选择的 OSC 8 超链接。
= 或 ^G 或 :f
打印有关正在查看的文件的一些信息,包括其名称以及显示的最后行的行号和字节偏移量。如果可能,它还会打印文件长度、文件中的行数以及最后显示的行以上的文件百分比。
- 后跟命令行选项字母之一(参见“选项”),这将更改该选项的设置并打印一条描述新设置的消息。如果输入 ^P(CONTROL-P)后立即输入,则会更改选项的设置,但不会打印任何消息。如果选项字母具有数值(例如 -b 或 -h),或者字符串值(例如 -P 或 -t),则可以在选项字母后输入一个新值。如果未输入新值,则会打印一条描述当前设置的消息,并且不会更改任何内容。
-- 类似于 - 命令,但它接受一个长选项名称(参见“选项”),而不是单个选项字母。您必须在键入选项名称后按 ENTER 或 RETURN。在第二个破折号后立即输入 ^P 会抑制打印描述新设置的消息,如 - 命令中一样。
-+ 后跟命令行选项字母之一,这将把选项重置为其默认设置,并打印一条描述新设置的消息。(“-+X”命令与命令行中的“-+X”命令执行相同的操作。)这不适用于具有字符串值的选项。
--+ 类似于 -+ 命令,但它接受一个长选项名称而不是单个选项字母。
-! 后跟命令行选项字母之一,这将把选项重置为其“相反”的默认设置,并打印一条描述新设置的消息。这不适用于数值或字符串值的选项。
--! 类似于 -! 命令,但它接受一个长选项名称而不是单个选项字母。
_ (下划线。)后跟命令行选项字母之一,这将打印一条描述该选项的当前设置的消息。该选项的设置不会更改。
__ (双下划线。)类似于 _(下划线)命令,但它接受一个长选项名称而不是单个选项字母。您必须在键入选项名称后按 ENTER 或 RETURN。
+cmd 导致每次检查新文件时都执行指定的 cmd。例如,+G 导致 less 最初从文件末尾而不是文件开头开始显示每个文件。
V 打印正在运行的 less 的版本号。
q 或 Q 或 :q 或 :Q 或 ZZ
退出 less。
以下七个命令可能有效也可能无效,具体取决于您的特定安装。
v 调用编辑器来编辑当前查看的文件。编辑器从环境变量 VISUAL 获取,如果 VISUAL 未定义,则从 EDITOR 获取,如果两者均未定义,则默认为 "vi"。请参阅以下关于 PROMPTS 部分中 LESSEDIT 的讨论。
! shell-command
调用 shell 来运行给定的 shell 命令。命令中的百分号 (%) 将被当前文件名替换。井号 (#) 将被先前查看的文件名替换。“!!” 重复执行上一个 shell 命令。“!” 不带任何 shell 命令,则仅调用 shell。如果输入 ! 后立即输入 ^P(CONTROL-P),则在执行 shell 命令后不会打印“完成”消息。在 Unix 系统上,shell 来自环境变量 SHELL,如果 SHELL 未定义,则默认为 "sh"。在 MS-DOS、Windows 和 OS/2 系统上,shell 是正常的命令处理器。
# shell-command
类似于“!”命令,但命令的扩展方式与提示字符串相同。例如,当前文件名将表示为 "%f"。
| <m> shell-command
<m> 代表任何标记字母。将输入文件的部分内容通过管道传递给给定的 shell 命令。传递到管道的文件部分是从标记位置到当前屏幕。无论标记位置是在当前屏幕之前还是之后,整个当前屏幕都包含在内。<m> 也可以是 ^ 或 $,以表示文件开头或结尾。如果输入 ! 后立即输入 ^P(CONTROL-P),则在执行 shell 命令后不会打印“完成”消息。
s filename
将输入保存到文件中。这仅适用于输入是管道时,而不是普通文件。
^O^O
运行 shell 命令以打开当前 OSC 8 超链接中的 URI,该超链接由先前的 ^O^N 或 ^O^P 命令选择。要查找 shell 命令,将读取名为 "LESS_OSC8_xxx" 的环境变量,其中 "xxx" 是 URI 中的模式(冒号之前的部分),或者如果没有冒号,则为空。然后,环境变量的值以与提示字符串相同的方式进行扩展(特别是,任何 "%o" 实例都将被 URI 替换),以生成 OSC 8“处理程序”shell 命令。处理程序的标准输出是“打开程序”shell 命令,然后执行该命令以打开 URI。
有两种特殊情况:
如果 URI 以 "\#" 开头,则将 URI 的其余部分视为同一文件中另一个 OSC 8 链接中 id 参数的值,并且 ^O^O 将简单地跳转到该链接。
如果打开程序以字符 ":e" 开头,后跟空格和文件名,则不将打开程序作为 shell 命令运行,而是打开当前 less 实例中指定的 文件名。
在简单的情况下,如果打开程序接受完整的 URI 作为命令行参数,则处理程序可以很简单:
echo mybrowser '%o'
在其他情况下,可能需要修改 URI,因此处理程序可能需要对 %o 值进行一些操作。
如果未设置 LESS_OSC8_xxx 变量,则尝试 LESS_OSC8_ANY 变量。如果未设置 LESS_OSC8_xxx 或 LESS_OSC8_ANY,则无法打开使用“xxx”方案的链接。但是,对于“man”(当未设置 LESS_OSC8_man 时使用)和“file”(当未设置 LESS_OSC8_file 时使用)方案,存在默认处理程序,这些处理程序应在提供 sed(1) 命令和具有与 Bourne shell sh(1) 兼容语法的 shell 的系统上工作。如果使用 LESS_OSC8_ANY 来覆盖 LESS_OSC8_file,则必须将 LESS_OSC8_file 设置为“-”,以指示不应使用默认值,并且对于 LESS_OSC8_man 也是如此。
通过 %o 传递给 OSC8 处理程序的 URI 保证不包含任何单引号或双引号字符,但它可能包含任何其他 shell 元字符,例如分号、美元符号、与符号等。处理程序应注意适当地引用打开程序命令中的参数,以防止在打开包含 shell 元字符的 URI 时执行意外的 shell 命令。此外,由于处理程序命令的扩展方式类似于命令提示符,因此任何由提示符扩展解释的元字符(例如百分号、句点、冒号、反斜杠等)都必须使用反斜杠进行转义(请参见 PROMPTS 部分以获取详细信息)。
^X 当显示“正在等待数据”消息时,例如在 F 命令期间,按下 ^X 将停止 less 等待并返回到提示符。这可能会导致 less 认为文件在当前位置结束,因此可能需要使用 R 或 F 命令才能查看更多数据。可以使用 --intr 选项来指定要使用的其他字符,而不是 ^X。此命令仅适用于支持 poll(2) 函数的系统。在没有 poll(2) 的系统上,可以使用中断字符(通常是 ^C)。
选项
以下是命令行选项的描述。大多数选项可以在 less 运行时通过“-”命令进行更改。
某些选项可以采用两种形式之一:一个破折号后跟一个字母,或两个破折号后跟一个长选项名称。长选项名称可以缩写,只要缩写不产生歧义。例如,--quit-at-eof 可以缩写为 --quit,但不可以缩写为 --qui,因为 --quit-at-eof 和 --quiet 都以 --qui 开头。某些长选项名称是大写的,例如 --QUIT-AT-EOF,与 --quit-at-eof 区分。此类选项名称只需将第一个字母大写;其余名称可以是大写或小写。例如,--Quitat-eof 等效于 --QUIT-AT-EOF。
选项也可以从环境变量“LESS”中获取。例如,为了避免每次调用 less 时都输入“less -options ...”,您可以告诉 csh:
setenv LESS "-options"
或者,如果您使用 sh:
LESS="-options"; export LESS
在 MS-DOS 和 Windows 上,您不需要使用引号,但您应该小心,以防止选项字符串中的任何百分号被解释为环境变量扩展。
环境变量在命令行之前被解析,因此命令行选项会覆盖 LESS 环境变量。如果某个选项出现在 LESS 变量中,可以通过在命令行选项的开头使用“-+”来将其重置为默认值。
某些选项(如 -k 或 -D)需要一个字符串来跟在选项字母之后。该选项的字符串被认为在找到美元符号 ($) 时结束。例如,您可以设置两个 -D 选项,如下所示:
LESS="Dnwb$Dsbw"
如果 --use-backslash 选项出现在选项字符串的较早位置,那么美元符号或反斜杠可以通过在其前面添加反斜杠来在选项字符串中按字面意义包含。如果未启用 --use-backslash 选项,则反斜杠不会被特殊处理,并且没有办法在选项字符串中包含美元符号。
-? 或 --help
此选项显示 less 接受的命令的摘要(与 h 命令相同)。(根据您的 shell 如何解释问号,可能需要引用问号,如下所示:“-\?”。)
-a 或 --search-skip-screen
默认情况下,前向搜索从显示的屏幕的顶部开始,后向搜索从显示的屏幕的底部开始(除通过 n 或 N 命令调用的重复搜索外,它从或在“目标”行之后或之前开始;有关目标行的更多信息,请参阅 -j 选项)。-a 选项导致前向搜索改为从屏幕的底部开始,后向搜索从屏幕的顶部开始,从而跳过屏幕上显示的所有行。
-A 或 --SEARCH-SKIP-SCREEN
导致所有前向搜索(不仅仅是非重复搜索)都从目标行之后开始,所有后向搜索都从目标行之前开始。因此,前向搜索将跳过显示的屏幕的一部分(从第一行到包括目标行在内的行)。类似地,后向搜索将跳过显示的屏幕,从最后一行到包括目标行在内的行。这是 less 441 之前的版本的默认行为。
-bn 或 --buffers=n
指定 less 将为每个文件使用的缓冲区大小,以千字节(1024 字节)为单位。默认情况下,每个文件使用 64 KB 的缓冲区空间(除非该文件是管道;请参阅 -B 选项)。-b 选项指定相反,应为每个文件使用 n 千字节的缓冲区空间。如果 n 为 -1,则缓冲区空间为无限;也就是说,可以读取整个文件到内存中。
-B 或 --auto-buffers
默认情况下,当从管道读取数据时,会根据需要自动分配缓冲区。如果从管道读取大量数据,这可能会导致分配大量内存。-B 选项会禁用管道的自动缓冲区分配,因此仅使用 64 KB(或通过 -b 选项指定的量)用于管道。警告:使用 -B 可能会导致显示错误,因为只有最近查看的管道数据部分会保存在内存中;较早的数据将会丢失。丢失的字符显示为问号。
-c 或 --clear-screen
导致全屏重绘从顶部行开始进行。默认情况下,全屏重绘是通过从屏幕底部向上滚动来完成的。
-C 或 --CLEAR-SCREEN
与 -c 相同,用于与旧版本的 less 兼容。
-d 或 --dumb
-d 选项会抑制通常在终端缺少某些重要功能(例如,清除屏幕或向后滚动的能力)时显示的错误消息。-d 选项不会改变 less 在低端终端上的其他行为。
-Dxcolor 或 --color=xcolor
更改显示的文本的不同部分的颜色。x 是一个单字符,用于选择要设置颜色的文本类型:
B 二进制字符。
C 控制字符。
E 错误和信息消息。
H 通过 --header 选项设置的标题行和列。
M 状态列中的标记字母。
N 通过 -N 选项启用的行号。
P 提示。
R rscroll 字符。
S 搜索结果。
W 通过 -w 选项启用的高亮显示。
15 匹配第一个到第五个带括号的子模式的搜索结果中的文本。子模式着色仅在 less 使用以下正则表达式库之一(posix、pcre 或 pcre2)构建时才有效。
d 粗体文本。
k 闪烁文本。
s 突出显示文本。
u 下划线文本。
大写字母和数字只能在启用 --use-color 选项时使用。当文本颜色同时由大写字母和小写字母指定时,大写字母优先。例如,错误消息通常显示为突出显示文本。因此,如果 "s" 和 "E" 都被赋予颜色,则 "E" 颜色应用于错误消息,而 "s" 颜色应用于其他突出显示的文本。小写字母指的是通过使用退格符进行覆盖(请参见 -U 选项)形成的粗体和下划线文本,以及非内容文本(例如行号和提示),但不适用于使用 ANSI 转义序列格式化的文本(带有 -R 选项)(但请参见下面关于 Windows 和 MS-DOS 上的不同行为)。
小写字母可以后跟一个 +,以指示应同时使用正常的格式更改和指定的颜色。例如,-Dug 将绿色显示为下划线文本,而没有下划线;绿色已取代通常的下划线格式。但是,-Du+g 将下划线文本同时显示为绿色和下划线格式。
颜色可以是 4 位颜色字符串或 8 位颜色字符串:
4 位颜色字符串是一个或两个字符,其中第一个字符指定前景色,第二个字符指定背景色,如下所示:
b 蓝色
c 青色
g 绿色
k 黑色
m 品红色
r 红色
w 白色
y 黄色
相应的字母大写表示更亮的颜色。例如,-DNGk 将行号显示为亮绿色文本,背景为黑色,-DEbR 将错误消息显示为蓝色文本,背景为亮红色。如果任一字符为“-”或省略,则相应的颜色设置为正常文本的颜色。
8 位颜色字符串是一个或两个十进制整数,用句点分隔,其中第一个整数指定前景色,第二个整数指定背景色。每个整数都是 0 到 255 之间(包括 0 和 255)的值,用于选择“CSI 38;5”颜色值(参见 [https://en.wikipedia.org/wiki/ANSI_escape_code#SGR](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR))。如果任一整数为“-”或省略,则相应的颜色设置为正常文本的颜色。
4 位或 8 位颜色字符串可以后跟以下一个或多个字符,以设置除颜色之外的文本属性。
s 或 ~ 突出显示(反显)
u 或 _ 下划线
d 或 * 粗体
l 或 & 闪烁
在 MS-DOS 和 Windows 上,--color 选项的行为与上述描述不同,具体如下:
在颜色字符串末尾的粗体(d 和 *)和闪烁(l 和 &)文本属性不受支持。
小写颜色选择器字母指的是通过 ANSI 转义序列使用 -R 格式化的文本,以及重叠文本和非内容文本(但请参见 -Da)。
出于历史原因,当小写颜色选择器字母后跟数字颜色值时,该数字不会被解释为上述“CSI 38;5”颜色值,而是被解释为 0 到 15 之间的 4 位 `CHAR_INFO.Attributes` 值(参见 [https://learn.microsoft.com/en-us/windows/console/char-info-str](https://learn.microsoft.com/en-us/windows/console/char-info-str))。
为了避免混淆,建议在 MS-DOS/Windows 上,在小写颜色选择器之后使用等效的字母,而不是数字。
在早于 Windows 10 的系统上,不Supported 大写颜色选择器字母后跟数字颜色值(“CSI 38;5”颜色)。
只有一组有限的 ANSI 转义序列才能正确设置内容中的颜色。4 位颜色序列有效,但“CSI 38;5”颜色序列无效。
-Da 选项通过(1)使小写颜色选择器字母不再影响使用 ANSI 转义序列格式化的文本,以及(2)允许“CSI 38;5”颜色序列在内容中工作,方法是将它们传递到终端(仅在 Windows 10 及更高版本上;在早期 Windows 系统上,无论 -Da 的设置如何,此类序列均不起作用),从而使 --color 选项的行为更类似于其在非 MS-DOS/Windows 系统上的行为。
-e 或 --quit-at-eof
导致 less 在第二次到达文件末尾时自动退出。默认情况下,退出 less 的唯一方法是使用“q”命令。
-E 或 --QUIT-AT-EOF
导致 less 在第一次到达文件末尾时自动退出。
-f 或 --force
强制打开非普通文件。(非普通文件是目录或设备特殊文件。)同时,还抑制了打开二进制文件时的警告消息。默认情况下,less 将拒绝打开非普通文件。请注意,某些操作系统即使设置了 -f,也不允许读取目录。
-F 或 --quit-if-one-screen
如果整个文件可以显示在第一个屏幕上,则导致 less 自动退出。
-g 或 --hilite-search
通常,less 会突出显示与上次搜索命令匹配的所有字符串。-g 选项更改了此行为,仅突出显示上次搜索命令找到的特定字符串。这可能会导致 less 比默认情况下运行得更快。
-G 或 --HILITE-SEARCH
-G 选项会抑制所有通过搜索命令找到的字符串的突出显示。
-hn 或 --max-back-scroll=n
指定最大反向滚动行数。如果需要反向滚动超过 n 行,则屏幕将以正向方式重新绘制。(如果终端没有反向滚动的能力,则隐含 -h0。)
-i 或 --ignore-case
导致搜索忽略大小写;也就是说,大写和小写被认为是相同的。如果搜索模式中包含任何大写字母,则忽略此选项;换句话说,如果模式包含大写字母,则该搜索不忽略大小写。
-I 或 --IGNORE-CASE
类似于 -i,但即使模式包含大写字母,搜索也会忽略大小写。
-jn 或 --jump-target=n
指定屏幕上“目标”行的位置。目标行是指定任何搜索模式、跳转到行号、跳转到文件百分比或跳转到标签的命令所指定的行。屏幕行可以用数字指定:屏幕上的第一行是 1,下一行是 2,依此类推。数字可以是负数,以指定相对于屏幕底部的行:屏幕底部的行是 -1,倒数第二行是 -2,依此类推。或者,屏幕行可以指定为屏幕高度的百分比,以小数点开头:.5 位于屏幕中间,.3 位于从第一行向下三十分之一的位置。如果将行指定为小数,则如果调整终端窗口大小,将重新计算实际行号。如果使用 --header 选项并且通过 -j 指定的目标行将被标题遮挡,则目标行将移动到标题后的第一行。在使用 --header 选项时,将忽略 -S 选项,并且较长于屏幕宽度的行将被截断。
如果使用了任何形式的 -j 选项,则重复的前向搜索(通过 "n" 或 "N" 启动)将从目标行之后的一行开始,重复的后向搜索将从目标行开始,除非通过 -a 或 -A 进行了更改。例如,如果使用了 "-j4",则目标行是屏幕上的第四行,因此前向搜索将从屏幕上的第五行开始。但是,非重复搜索(通过 "/" 或 "?" 启动)始终从当前屏幕的开头或结尾开始。
-J 或 --status-column
在屏幕的左边缘显示状态栏。状态栏中显示的字符可以是以下之一:
> 行被 -S 选项截断,并且被截断的超出屏幕右边缘的文本包含当前的搜索匹配项。
< 行被水平移动,并且被移动到屏幕左侧之外的文本包含当前的搜索匹配项。
= 行既被截断又被移动,并且两边都有匹配项。
* 匹配项位于行的可见部分,但不在其右侧或左侧。
a-z、A-Z
该行已通过 m 命令标记了相应的字母。
-kfilename 或 --lesskey-file=filename
使 less 打开并解释名为 filename 的文件作为 lesskey(1) 二进制文件。可以指定多个 -k 选项。如果设置了 LESSKEY 或 LESSKEY_SYSTEM 环境变量,或者在标准位置找到了 lesskey 文件(请参阅“键绑定”),它也会用作 lesskey 文件。请注意,下面是关于 "--lesskey-content" 的警告。
--lesskey-src=filename
使 less 打开并解释名为 filename 的文件作为 lesskey(1) 源代码文件。如果设置了 LESSKEYIN 或 LESSKEYIN_SYSTEM 环境变量,或者在标准位置找到了 lesskey 源代码文件,它也会用作 lesskey 源代码文件。在版本 582 之前,需要运行 lesskey 程序才能将 lesskey 源代码文件转换为 lesskey 二进制文件,然后 less 才能使用。较新版本的 less 直接读取 lesskey 源代码文件,如果存在源代码文件,则忽略二进制文件。请注意,下面是关于 "--lesskey-content" 的警告。
--lesskey-content=text
使 less 将指定的文本解释为 lesskey(1) 源代码文件的内容。在文本中,lesskey 行可以用换行符(如通常)或分号分隔。文字分号可以用反斜杠后跟分号来表示。
警告:某些环境变量,例如 LESS、LESSSECURE、LESSCHARSET 等,在启动时会尽早使用,因此无法在通过命令行选项(--lesskey、--lesskey-src 或 --lesskey-content)指定的文件中设置。当使用 lesskey 文件来设置环境变量时,最好使用默认的 lesskey 文件,或者使用 LESSKEYIN 或 LESSKEY_CONTENT 环境变量来指定文件,而不是使用命令行选项。
-K 或 --quit-on-intr
当输入中断字符(通常是 ^C)时,less 会立即退出(状态码为 2)。通常,中断字符会导致 less 停止当前操作并返回到命令提示符。请注意,使用此选项会使无法从“F”命令返回到命令提示符。
-L 或 --no-lessopen
忽略 LESSOPEN 环境变量(请参阅下面的“INPUT PREPROCESSOR”部分)。此选项可以从 less 内部设置,但它仅适用于随后打开的文件,而不适用于当前打开的文件。
-m 或 --long-prompt
使 less 提示更详细(类似于 more(1)),显示文件中已读取的百分比。默认情况下,less 使用冒号进行提示。
-M 或 --LONG-PROMPT
使 less 提示比 more(1) 更详细。
-n 或 --line-numbers
禁止显示行号。默认情况下(使用行号),less 在某些情况下可能会运行得更慢,尤其是在处理非常大的输入文件时。使用 -n 选项禁止显示行号可以避免此问题。使用行号意味着:行号将显示在详细提示中以及“=”命令中,并且“v”命令会将当前行号传递给编辑器(请参阅下面“PROMPTS”中对 LESSEDIT 的讨论)。
-N 或 --LINE-NUMBERS
在显示的每一行的开头显示行号。
-ofilename 或 --log-file=filename
使 less 将其输入复制到指定的文件中,同时进行查看。这仅适用于输入文件是管道的情况,而不适用于普通文件。如果文件已存在,less 会询问是否确认覆盖该文件。
-Ofilename 或 --LOG-FILE=filename
-O 选项类似于 -o,但它会在不询问确认的情况下覆盖现有文件。
如果没有指定日志文件,则可以从 less 内部使用 -o 和 -O 选项来指定日志文件。如果不带文件名,它们只会报告日志文件的名称。“s”命令等效于从 less 内部指定 -o。
-ppattern 或 --pattern=pattern
命令行中的 -p 选项等效于指定 +/pattern;也就是说,它告诉 less 从文件中模式的第一个出现位置开始。
-Pprompt 或 --prompt=prompt
提供了一种定制三种提示样式的方法,以满足您的偏好。通常,此选项应放在 LESS 环境变量中,而不是在每次使用 less 命令时键入。这样的选项必须是 LESS 变量中的最后一个选项,或者以美元符号结尾。
-Ps 后跟一个字符串会将默认的(短)提示更改为该字符串。
-Pm 更改中等(-m)提示。
-PM 更改长的(-M)提示。
-Ph 更改帮助屏幕的提示。
-P= 更改“=”命令打印的消息。
-Pw 更改在等待数据时(在“F”命令中)打印的消息。
所有提示字符串都由一系列字母和特殊转义序列组成。请参阅 PROMPTS 部分以获取更多详细信息。
-q 或 --quiet 或 --silent
导致“相对安静”的操作:如果尝试滚动到文件末尾或文件开头之前,则不会发出终端铃声。如果终端有“视觉铃声”,则会使用它。在某些其他错误情况下,将发出铃声,例如键入无效字符。默认情况下,在所有这些情况下都会发出终端铃声。
-Q 或 --QUIET 或 --SILENT
导致“完全安静”的操作:永远不会发出终端铃声。如果终端有“视觉铃声”,则会在所有将发出终端铃声的情况下使用它。
-r 或 --raw-control-chars
导致“原始”控制字符显示。默认情况下,使用插入符号表示法显示控制字符;例如,控制-A(八进制 001)显示为“^A”(有一些例外情况,如 -U 选项所述)。警告:如果使用 -r 选项,less 无法跟踪屏幕的实际外观(因为这取决于屏幕对每种控制字符的响应方式)。因此,可能会出现各种显示问题,例如长行在错误的位置被分割。
不建议使用 -r 选项。
-R 或 --RAW-CONTROL-CHARS
类似于 -r,但仅以“原始”形式输出 ANSI“颜色”转义序列和 OSC 8 超链接序列。与 -r 不同,只要文件中没有其他类型的转义序列,就可以正确维护屏幕外观。颜色转义序列仅在颜色在一个行内更改时才受支持,而不是跨行更改。换句话说,假定每行的开头都是正常的(非彩色),无论之前的行中是否有转义序列。为了跟踪屏幕外观,假定这些转义序列不会移动光标。
OSC 8 超链接是以下形式的序列:
ESC ] 8 ; ... \7
终止序列可以是响铃字符(\7),也可以是双字符序列“ESC \”。
ANSI 颜色转义序列是以下形式的序列:
ESC [ ... m
其中“...”是零个或多个颜色规范字符。您可以设置环境变量 LESSANSIENDCHARS 以指定可以结束 ANSI 颜色转义序列的字符列表,从而使 less 认为字符不必是“m”才能结束 ANSI 颜色转义序列。并且,您可以设置环境变量 LESSANSIMIDCHARS 以指定可以在 ESC 和 m 之间出现的字符列表,从而使 less 认为字符不必是标准字符才能出现。
-s 或 --squeeze-blank-lines
导致连续的空行压缩为单个空行。这在查看 nroff 输出时很有用。
-S 或 --chop-long-lines
导致长于屏幕宽度的行被截断(缩短)而不是换行。也就是说,不适合屏幕宽度的长行的部分在您按下右箭头之前不会显示。默认情况下,长行会换行;也就是说,其余部分显示在下一行。另请参见 --wordwrap 选项。
-ttag 或 --tag=tag
-t 选项后跟一个 TAG,将编辑包含该标签的文件。为此,必须提供标签信息;例如,当前目录中可能存在一个名为“tags”的文件,该文件先前由 ctags(1) 或等效命令生成。如果设置了环境变量 LESSGLOBALTAGS,则将其视为与 global(1) 兼容的命令的名称,并执行该命令以查找标签。(请参见 http://www.gnu.org/software/global/global.html)。-t 选项也可以从 less 内部指定(使用 - 命令),作为一种检查新文件的方式。命令“:t”等效于从 less 内部指定 -t。
-Ttagsfile 或 --tag-file=tagsfile
指定要使用的标签文件,而不是“tags”。
-u 或 --underline-special
使退格符和回车符被视为可打印字符;也就是说,当它们出现在输入中时,它们将被发送到终端。
-U 或 --UNDERLINE-SPECIAL
使退格符、制表符、回车符和“格式字符”(如 Unicode 定义)被视为控制字符;也就是说,它们将按照 -r 选项的规定进行处理。
默认情况下,如果既未指定 -u 也未指定 -U,则相邻的退格符将被特殊处理:带下划线的文本将使用终端的硬件下划线功能显示。此外,出现在两个相同字符之间的退格符将被特殊处理:带复写字符的文本将使用终端的硬件粗体功能打印。其他退格符将被删除,以及前面的字符。紧接着换行符的回车符将被删除。其他回车符将按照 -r 选项的规定进行处理。Unicode 格式字符(例如字节序标记)将被发送到终端。如果既未指定 -u 也未指定 -U,则可以搜索带下划线或带复写字符的文本。
另请参见 --proc-backspace、--proc-tab 和 --proc-return 选项。
-V 或 --version
显示 less 的版本号。
-w 或 --hilite-unread
在向前移动一整页后,临时高亮显示第一个“新”行。第一个“新”行是指紧跟在先前位于屏幕底部的行之后的行。此外,还高亮显示 g 或 p 命令的目标行。在下一次导致移动的命令处,高亮显示将被删除。如果启用了 --status-line 选项,则整个行(屏幕的宽度)将被高亮显示。否则,只有行中的文本将被高亮显示,除非启用了 -J 选项,在这种情况下,只有状态列将被高亮显示。
-W 或 --HILITE-UNREAD
类似于 -w,但临时高亮任何向前移动命令之后的新行,且移动的行数大于一行。
-xn,... 或 --tabs=n,...
设置制表位。如果仅指定一个 n,则制表位将设置为 n 的倍数。如果指定多个用逗号分隔的值,则制表位将设置为这些位置,然后继续使用与最后两个值相同的间距。例如,“-x9,17”将设置制表位在 9、17、25、33 等位置。n 的默认值为 8。
-X 或 --no-init
禁用向终端发送 termcap 初始化和反初始化字符串。在某些情况下,如果反初始化字符串执行不必要的操作(例如清除屏幕),这是必需的。
-yn 或 --max-forw-scroll=n
指定最大向前滚动行数。如果需要向前滚动超过 n 行,则会重新绘制屏幕。可以使用 -c 或 -C 选项从屏幕顶部重新绘制。默认情况下,任何向前移动都会导致滚动。
-zn 或 --window=n 或 -n
将默认滚动窗口大小更改为 n 行。默认值为一个屏幕。可以使用 z 和 w 命令来更改窗口大小。“z”可以省略,以与某些版本的 more(1) 兼容。如果数字 n 为负数,则表示当前屏幕大小的 n 行。例如,如果屏幕为 24 行,则 -z-4 将滚动窗口设置为 20 行。如果屏幕大小调整为 40 行,则滚动窗口将自动更改为 36 行。
-"cc 或 --quotes=cc
更改文件名引号字符。如果尝试命名包含空格和引号字符的文件,则可能需要这样做。后跟单个字符,将引号字符更改为该字符。包含空格的文件名应由该字符而不是双引号包围。后跟两个字符,将打开引号更改为第一个字符,并将关闭引号更改为第二个字符。文件名应以前面指定的打开引号字符开头,并以关闭引号字符结尾。请注意,即使在更改了引号字符之后,该选项仍然是 -“(一个连字符,后跟一个双引号)。
-~ 或 --tilde
通常,文件末尾后的行显示为单个波浪线(\~)。此选项使文件末尾后的行显示为空白行。
-# 或 --shift
指定 RIGHTARROW 和 LEFTARROW 命令中默认水平滚动的位数。如果指定的数字为零,则将默认数字设置为屏幕宽度的一半。或者,可以指定数字为屏幕宽度的分数,从小数点开始:.5 是屏幕宽度的一半,.3 是屏幕宽度的三十分之一,依此类推。如果数字指定为分数,则在调整终端窗口大小时,将重新计算实际的滚动位置数。
--exit-follow-on-close
在使用管道时,当按下“F”命令时,less 会自动停止等待更多数据,当管道的输入端关闭时。
--file-size
如果指定了 --file-size,less 会在打开文件后立即确定文件的大小。然后,“=”命令将显示文件中的行数。通常不这样做,因为如果输入文件不可寻址(例如管道)且很大,则可能会很慢。
--follow-name
通常,如果输入文件在执行“F”命令时被重命名,less 将继续显示原始文件的内容,即使文件名已更改。如果指定了 --follow-name,在执行“F”命令期间,less 将定期尝试按名称重新打开文件。如果重新打开成功,并且该文件与原始文件不同(这意味着已创建一个与原始文件(现在已重命名)同名的文件),则 less 将显示该新文件的内容。
--header=L,C,N
设置屏幕上显示的页眉行数和列数。页眉行数设置为 L。如果 L 为 0,则禁用页眉行。如果 L 为空或缺失,则页眉行数保持不变。页眉列数设置为 C。如果 C 为 0,则禁用页眉列。如果 C 为空或缺失,则页眉列数保持不变。第一行页眉设置为文件中的行号 N。如果 N 为空或缺失,则它将采用当前显示在屏幕第一行的行号(如果从 less 内部发出了 --header 命令),或 1(如果 --header 选项是在命令行中给出的)。特殊形式 "--header=-" 禁用页眉行和页眉列,等效于 "--header=0,0"。
当 L 非零时,屏幕顶部的前 L 行将被替换为从行 N 开始的文件中的 L 行,无论正在查看文件的哪个部分。当显示页眉行时,无法查看页眉行之前的任何文件内容。当 C 非零时,每行开头显示的第一个 C 个字符将被替换为该行的第一个 C 个字符,即使该行的其余部分水平滚动也是如此。
--incsearch
随后的搜索命令将是“增量”;也就是说,less 将在键入模式的每个字符时,前进到包含搜索模式的下一行。
--intr=c
使用字符 c 而不是 ^X 来中断读取,当显示“正在等待数据”消息时。c 必须是 ASCII 字符;也就是说,其值为 1 到 127(含)之间的数字。可以使用插入号(^)后跟单个字符来指定控制字符。
--line-num-width=n
当启用 -N 选项时,将行号字段的最小宽度设置为 n 个字符。默认值为 7。
--match-shift=n
当 -S 选项生效时,如果搜索匹配项由于位于当前可见屏幕的左侧或右侧而不可见,文本将水平移动以确保搜索匹配项可见。此选项选择搜索匹配项的第一个字符在移动后的位置所在的列。换句话说,屏幕左侧将有 n 个字符可见,且位于搜索匹配项的左侧。
或者,可以指定一个数字,表示屏幕宽度的分数,以小数点开头:.5 是屏幕宽度的二分之一,.3 是屏幕宽度的三分之一,依此类推。如果数字指定为分数,则实际的滚动位置数将在终端窗口大小调整时重新计算。
--modelines=n
在显示文件之前,less 将读取前 n 行,以尝试查找与 vim 兼容的模式行。如果 n 为零,less 不会尝试查找模式行。通过使用模式行,文件本身可以指定在查看文件时应使用的制表位。
模式行包含在行中的任何位置,包含一个程序名称(“vi”、“vim”、“ex”或“less”),后跟一个冒号,然后可能跟一个“set”关键字,最后跟零个或多个选项设置。如果使用“set”关键字,则选项设置用空格分隔,并在第一个冒号处结束。如果未使用“set”关键字,则选项设置可以用空格或冒号分隔。如果程序名称为“less”,则需要“set”关键字,如果使用其他三个名称中的任何一个,则该关键字是可选的。如果任何选项设置的形式为“tabstop=n”或“ts=n”,则制表位将自动设置,就好像使用了 --tabs=n 选项一样。请参阅 --tabs 说明,以了解 n 的允许值。
--mouse
启用鼠标输入:向下滚动鼠标滚轮会向前移动文件,向上滚动鼠标滚轮会向后移动文件,单击鼠标会将光标所在行的“#”标记设置为该行,并且右键单击(或任何其他单击)会返回到“#”标记位置。如果光标位于 OSC 8 超链接上并执行左键单击,则该超链接将选择,就好像使用了 ^O^N 命令一样。如果光标已位于 OSC 8 超链接上并执行左键单击,则该超链接将打开,就好像使用了 ^O^O 命令一样。滚动鼠标滚轮时移动的行数可以通过 --wheel-lines 选项进行设置。鼠标输入仅适用于支持 X11 鼠标报告的终端以及 Windows 版本的 less。
--MOUSE
与 --mouse 相同,只不过鼠标滚轮移动的方向相反。
--no-keypad
禁用将键盘初始化和反初始化字符串发送到终端。有时,如果键盘字符串使数字键盘以不期望的方式运行,这将很有用。
--no-histdups
此选项更改了行为,因此,如果键入搜索字符串或文件名,并且相同的字符串已在历史记录列表中,则在添加新字符串之前,现有的副本将从历史记录列表中删除。因此,给定的字符串将只出现在历史记录列表中一次。通常,一个字符串可能会出现多次。
`--no-number-headers`
标题行(通过 --header 选项定义)不分配行号。行号 1 分配给所有标题行之后的第一个行。
`--no-search-header-lines`
搜索不包括标题行,但仍包括标题列。
`--no-search-header-columns`
搜索不包括标题列,但仍包括标题行。
`--no-search-headers`
搜索不包括标题行或标题列。
`--no-vbell`
禁用终端的视觉铃声。
`--proc-backspace`
如果设置,退格符的处理方式就像既没有设置 -u 选项,也没有设置 -U 选项一样。也就是说,与下划线相邻的退格符会导致文本以带下划线的模式显示,并且在相同字符之间的退格符会导致文本以粗体模式显示。此选项会覆盖 -u 和 -U 选项,以便可以单独控制退格符的显示,而无需与制表符和回车符的显示分开控制。如果未设置,则退格符的显示由 -u 和 -U 选项控制。
`--PROC-BACKSPACE`
如果设置,退格符的处理方式就像设置了 -U 选项一样;也就是说,退格符被视为控制字符。
`--proc-return`
如果设置,回车符的处理方式就像既没有设置 -u 选项,也没有设置 -U 选项一样。也就是说,紧接在换行符之前的回车符将被删除。此选项会覆盖 -u 和 -U 选项,以便可以单独控制回车符的显示,而无需与退格符和制表符的显示分开控制。如果未设置,则回车符的显示由 -u 和 -U 选项控制。
`--PROC-RETURN`
如果设置,回车符的处理方式就像设置了 -U 选项一样;也就是说,回车符被视为控制字符。
`--proc-tab`
如果设置,制表符的处理方式就像没有设置 -U 选项一样。也就是说,制表符会被扩展为空格。此选项会覆盖 -U 选项,以便可以单独控制制表符的显示,而无需与退格符和回车符的显示分开控制。如果未设置,则制表符的显示由 -U 选项控制。
`--PROC-TAB`
如果设置,制表符的处理方式就像设置了 -U 选项一样;也就是说,制表符被视为控制字符。
`--redraw-on-quit`
在退出时,在发送终端去初始化字符串之后,重新绘制整个最后一个屏幕。对于其终端去初始化字符串导致终端从备用屏幕切换出来的终端,这使得 less 退出后,当前文件的最后一个屏幕仍然可见。
`--rscroll=c`
此选项更改用于标记被截断行的字符。它可以以类似于 LESSBINFMT 的双字符属性指示符开头。如果没有属性指示符,则使用突出显示。如果设置为“-” ,则不标记被截断的行。
--save-marks
在历史文件中保存标记,以便在不同的 less 调用之间保留标记。
--search-options=...
设置默认搜索修饰符。该值为一个或多个字符 E、F、K、N、R 或 W 的字符串。设置其中任何一个字符的效果与在每个搜索模式的开头键入该控制字符相同。例如,设置 --search-options=W 的效果与在每个模式的开头键入 ^W 相同。该值也可以包含 1 到 5 之间的数字,其效果与在每个搜索模式的开头键入 ^S,然后是该数字相同。该值也可以包含“-”,这将禁用所有默认搜索修饰符。
--show-preproc-errors
如果预处理器生成数据,然后以非零退出代码退出,less 将显示警告。
--status-col-width=n
当 -J 选项生效时,设置状态列的宽度。默认值为 2 个字符。
--status-line
如果某行已标记,则将突出显示整行(而不仅仅是状态列)。此外,由于 -w 选项突出显示的行也将突出显示整行。如果设置了 --use-color,则该行将以颜色显示,而不是突出显示。
--use-backslash
此选项更改后续选项的解释。在 --use-backslash 选项之后,选项字符串中的任何反斜杠都将被删除,并且将按字面意义解释下一个字符。这允许在选项字符串中包含美元符号。
--use-color
在各种位置启用彩色文本。可以使用 -D 选项来更改颜色。彩色文本仅在终端支持 ANSI 颜色转义序列(如 [https://www.ecma-international.org/publications-and-standards/standards/ecma-48](https://www.ecma-international.org/publications-and-standards/standards/ecma-48) 中定义)时才有效。
--wheel-lines=n
当 --mouse 或 --MOUSE 选项生效时,设置滚动鼠标滚轮时要滚动的行数。默认值为 1 行。
--wordwrap
如果未使用 -S 选项,则在空格或制表符处换行,如果可能的话,这样可以防止单词在两行之间拆分。默认情况下,将在任何字符处换行。
-- 命令行参数“--”表示选项参数的结束。任何后续的参数都将被解释为文件名。当要查看的文件名以“-”或“+”开头时,这非常有用。
+ 如果命令行选项以“+”开头,则该选项的其余部分将被视为 less 的初始命令。例如,+G 告诉 less 从文件的末尾而不是开头开始显示,而 +/xyz 告诉它从文件中第一个“xyz”的出现处开始显示。作为一种特殊情况,++ 告诉 less 将初始命令应用于要查看的每个文件,而不仅仅是第一个文件。之前描述的 + 命令也可以用于设置(或更改)应用于每个文件的初始命令。
行编辑
在屏幕底部的命令行中输入命令(例如,:e 命令的文件名,或搜索命令的模式)时,可以使用某些按键来操作命令行。 大多数命令都有一个备用形式,用 [] 括起来,如果特定键盘上没有该按键,则可以使用。 (请注意,以 ESC 开头的形式在某些 MSDOS 和 Windows 系统中不起作用,因为 ESC 是行清除字符。)可以使用“字面”字符(即 ^V 或 ^A)来输入这些特殊按键中的任何一个。 也可以通过输入两个反斜杠来字面上输入反斜杠。
LEFTARROW [ ESC-h ]
将光标向左移动一个空格。
RIGHTARROW [ ESC-l ]
将光标向右移动一个空格。
^LEFTARROW [ ESC-b 或 ESC-LEFTARROW ]
(即同时按下 CONTROL 和 LEFTARROW)。 将光标向左移动一个单词。
^RIGHTARROW [ ESC-w 或 ESC-RIGHTARROW ]
(即同时按下 CONTROL 和 RIGHTARROW)。 将光标向右移动一个单词。
HOME [ ESC-0 ]
将光标移动到行首。
END [ ESC-$ ]
将光标移动到行尾。
BACKSPACE
删除光标左侧的字符,或者如果命令行为空,则取消命令。
DELETE 或 [ ESC-x ]
删除光标下的字符。
^BACKSPACE [ ESC-BACKSPACE ]
(即同时按下 CONTROL 和 BACKSPACE)。 删除光标左侧的单词。
^DELETE [ ESC-X 或 ESC-DELETE ]
(即同时按下 CONTROL 和 DELETE)。 删除光标下的单词。
UPARROW [ ESC-k ]
检索上一个命令行。 如果首先输入一些文本,然后按 UPARROW,它将检索以该文本开头的上一个命令。
DOWNARROW [ ESC-j ]
检索下一个命令行。 如果首先输入一些文本,然后按 DOWNARROW,它将检索以该文本开头的下一个命令。
TAB 完成光标左侧的部分文件名。 如果匹配多个文件名,则将第一个匹配的文件名输入到命令行中。 重复按 TAB 键将循环显示其他匹配的文件名。 如果完成的文件名是目录,则在文件名后附加一个 `/`。 (在 MS-DOS 和 Windows 系统上,附加一个 `\`)。 可以使用环境变量 `LESSSEPARATOR` 来指定附加到目录名称的不同字符。
BACKTAB [ ESC-TAB ]
类似于 TAB,但以相反的方向循环显示匹配的文件名。
^L 完成光标左侧的部分文件名。 如果匹配多个文件名,则将所有匹配的文件名输入到命令行中(如果可以)。
^U(Unix 和 OS/2)或 ESC(MS-DOS 和 Windows)
删除整个命令行,或者如果命令行为空,则取消命令。 如果您已更改 Unix 中的行清除字符,使其不同于 `^U`,则使用该字符而不是 `^U`。
^G 删除整条命令,并返回主提示符。
键盘快捷键
您可以创建 lesskey 源代码文件来定义您自己的 less 命令。此文件指定
一组命令键以及与每个键关联的操作。您还可以更改行编辑键(参见行编辑),并设置 less 使用的环境变量。有关文件格式的详细信息,请参阅 lesskey(1) 手册页。
如果设置了环境变量 LESSKEYIN,less 将使用它作为 lesskey 源代码文件的名称。否则,less 会在标准位置查找 lesskey 源代码文件:在 Unix 系统上,less 会查找名为 $XDG_CONFIG_HOME/lesskey 或 $HOME/.config/lesskey 或 $HOME/.lesskey 的 lesskey 文件。在 MS-DOS 和 Windows 系统上,less 会查找名为 $HOME/_lesskey 的 lesskey 文件,如果未在该处找到,则会在 PATH 环境变量中指定的任何目录中查找名为 _lesskey 的 lesskey 文件。在 OS/2 系统上,less 会查找名为 $HOME/lesskey.ini 的 lesskey 文件,如果未找到,则会在 PATH 环境变量中指定的任何目录中查找名为 lesskey.ini 的 lesskey 文件。
还可以设置系统范围的 lesskey 源代码文件,以提供键盘快捷键。如果在本地 lesskey 文件和系统范围文件中都定义了某个键,则本地文件中的键盘快捷键优先。如果设置了环境变量 LESSKEYIN_SYSTEM,less 将使用它作为系统范围的 lesskey 文件的名称。否则,less 会在标准位置查找系统范围的 lesskey 文件:在 Unix 系统上,系统范围的 lesskey 文件为 /usr/local/etc/syslesskey。(但是,如果 less 是使用与 /usr/local/etc 不同的系统配置文件目录构建的,则系统文件位于该目录中。)在 MS-DOS 和 Windows 系统上,系统范围的 lesskey 文件为 c:\_syslesskey。在 OS/2 系统上,系统范围的 lesskey 文件为 c:\syslesskey.ini。
早期版本的 less(版本 582 之前)使用 lesskey 程序生成的二进制格式的 lesskey 文件。现在不再需要使用 lesskey 程序。
输入预处理器
您可以定义 less 的“输入预处理器”。在 less 打开文件之前,它首先会给您的输入预处理器一个机会来修改文件显示的方式。输入预处理器只是一个可执行程序(或 shell 脚本),它将文件的内容写入不同的文件,该文件称为“替换文件”。然后,将替换文件的内容显示在原始文件的内容的位置。但是,对于用户而言,好像打开的是原始文件;也就是说,less 会将原始文件名显示为当前文件的名称。
一个输入预处理器接收一个命令行参数,即用户输入的原始文件名。它应该创建替换文件,并在完成后将替换文件的名称打印到标准输出。如果输入预处理器没有输出替换文件名,less 将使用原始文件,就像通常那样。当查看标准输入时,不会调用输入预处理器。要设置输入预处理器,请将 LESSOPEN 环境变量设置为一条命令行,该命令行将调用您的输入预处理器。该命令行应包含一个 "%s" 字符串,该字符串将被文件名替换,以便在调用输入预处理器命令时使用。
当 less 关闭以这种方式打开的文件时,它将调用另一个程序,称为输入后处理器,该程序可以执行任何所需的清理操作(例如删除 LESSOPEN 创建的替换文件)。该程序接收两个命令行参数,即用户输入的原始文件名和替换文件的名称。要设置输入后处理器,请将 LESSCLOSE 环境变量设置为一条命令行,该命令行将调用您的输入后处理器。它可能包含两个 "%s" 字符串;第一个被原始文件名替换,第二个被替换文件的名称替换,该名称由 LESSOPEN 输出。
例如,在许多 Unix 系统上,以下两个脚本允许您以压缩格式保存文件,同时仍然允许 less 直接查看它们:
lessopen.sh:
#! /bin/sh
case "$1" in
*.Z) TEMPFILE=$(mktemp)
uncompress -c $1 >$TEMPFILE 2>/dev/null
if [ -s $TEMPFILE ]; then
echo $TEMPFILE
else
rm -f $TEMPFILE
fi
;;
esac
lessclose.sh:
#! /bin/sh
rm $2
要使用这些脚本,请将它们都放在可以执行的位置,并设置 LESSOPEN="lessopen.sh %s",以及 LESSCLOSE="lessclose.sh %s %s"。可以编写更复杂的 LESSOPEN 和 LESSCLOSE 脚本,以接受其他类型的压缩文件,等等。
也可以设置一个输入预处理器,以将文件数据直接通过管道传递给 less,而不是将数据放入替换文件中。这样可以避免在开始查看文件之前解压缩整个文件。以这种方式工作的输入预处理器称为输入管道。输入管道不输出替换文件的名称到其标准输出,而是将其标准输出写入替换文件的完整内容。如果输入管道没有在其标准输出上写入任何字符,则没有替换文件,less 将使用原始文件,就像通常那样。要使用输入管道,请将 LESSOPEN 环境变量中的第一个字符设置为垂直条 (|),以表明输入预处理器是输入管道。与非管道输入预处理器一样,该命令字符串必须包含一个 "%s",该字符串将被输入文件的文件名替换。
例如,在许多 Unix 系统上,此脚本将像之前的示例脚本一样工作:
lesspipe.sh:
#! /bin/sh
case "$1" in
*.Z) uncompress -c $1 2>/dev/null
;;
*) exit 1
;;
esac
exit $?
要使用此脚本,请将其放置在可以执行的位置,并设置 LESSOPEN="|lesspipe.sh %s"。
请注意,预处理器不能输出一个空文件,因为这会被解释为没有替换,并使用原始文件。 为了避免这种情况,如果 LESSOPEN 以两个垂直条开始,则脚本的退出状态决定了当输出为空时应该如何处理。 如果输出为空且退出状态为零,则将空输出视为替换文本。 如果输出为空且退出状态为非零,则使用原始文件。
为了与 less 的早期版本兼容,如果 LESSOPEN 仅以一个垂直条开始,则会忽略预处理器的退出状态。
当使用输入管道时,可以使用 LESSCLOSE 后处理器,但通常这不是必需的,因为没有需要清理的替换文件。 在这种情况下,传递给 LESSCLOSE 后处理器的替换文件名是“-”。
为了与 less 的早期版本兼容,如果 less 正在查看标准输入,则不会使用输入预处理器或管道。 但是,如果 LESSOPEN 的第一个字符是破折号 (-),则输入预处理器将用于标准输入以及其他文件。 在这种情况下,破折号不被视为预处理器命令的一部分。 如果正在查看标准输入,则传递给输入预处理器的文件名将是一个单独的破折号。 同样,如果 LESSOPEN 的前两个字符是垂直条和破折号(| -)或两个垂直条和一个破折号(|| -),则输入管道将用于标准输入以及其他文件。 同样,在这种情况下,破折号不被视为输入管道命令的一部分。
国家字符集
输入文件中存在三种类型的字符:
普通字符
可以直接显示在屏幕上。
控制字符
不应直接显示,但预期在普通文本文件中找到(例如退格和制表符)。
二进制字符
不应直接显示,并且预期不在文本文件中找到。
“字符集”只是对哪些字符应被视为普通字符、控制字符和二进制字符的描述。 可以使用 LESSCHARSET 环境变量来选择字符集。 LESSCHARSET 的可能值是:
ascii BS、TAB、NL、CR 和换页符是控制字符,所有值在 32 到 126 之间的字符都是普通字符,所有其他字符都是二进制字符。
iso8859
选择一个 ISO 8859 字符集。 这与 ASCII 相同,只是字符 160 到 255 之间的字符被视为普通字符。
latin1 与 iso8859 相同。
latin9 与 iso8859 相同。
dos 选择适用于 MS-DOS 的字符集。
ebcdic 选择 EBCDIC 字符集。
IBM-1047
选择 OS/390 Unix Services 使用的 EBCDIC 字符集。 这就是 EBCDIC 的 latin1 对应字符集。 您可以通过设置 LESSCHARSET=IBM-1047 或在您的环境中设置 LC_CTYPE=en_US 来获得类似的结果。
koi8-r 选择俄语字符集。
next 选择适用于 NeXT 计算机的字符集。
utf-8 选择 ISO 10646 字符集的 UTF-8 编码。 UTF-8 的特殊之处在于它支持输入文件中的多字节字符。 它是唯一支持多字节字符的字符集。
windows 选择适用于 Microsoft Windows(cp 1252)的字符集。
在极少数情况下,可能需要定制 less 以使用不同于可以通过 LESSCHARSET 定义的字符集的字符集。 在这种情况下,可以使用环境变量 LESSCHARDEF 来定义字符集。 应该将其设置为一个字符串,其中字符串中的每个字符代表字符集中的一个字符。 字符“.”用于表示普通字符,“c”用于表示控制字符,而“b”用于表示二进制字符。 可以使用十进制数字来表示重复。 例如,“bccc4b.”表示字符 0 是二进制,1、2 和 3 是控制字符,4、5、6 和 7 是二进制,而 8 是普通字符。 字符串中的所有后续字符都与最后一个字符相同,因此字符 9 到 255 将是普通字符。(这是一个示例,不一定代表任何实际字符集。)
下表显示了与 LESSCHARSET 的每个可能值等效的 LESSCHARDEF 值: ascii 8bcccbcc18b95.b dos 8bcccbcc12bc5b95.b. ebcdic 5bc6bcc7bcc41b.9b7.9b5.b..8b6.10b6.b9.7b 88.17b3.3b9.7b9.8b8.6b10.b.b.b. IBM-1047 4cbcbc3b9cbccbccbb4c6bcc5b3cbbc4bc4bccbc 19.b iso8859 8bcccbcc18b95.33b. koi8-r 8bcccbcc18b95.b128. latin1 8bcccbcc18b95.33b. next 8bcccbcc18b95.bb125.bb
如果既没有设置 LESSCHARSET,也没有设置 LESSCHARDEF,但任何字符串“UTF-8”、“UTF8”、“utf-8”或“utf8”都存在于 LC_ALL、LC_CTYPE 或 LANG 环境变量中,则默认字符集为 utf-8。
如果未找到该字符串,但您的系统支持 setlocale 接口,则 less 将使用 setlocale 来确定字符集。 setlocale 由设置 LANG 或 LC_CTYPE 环境变量来控制。
最后,如果 setlocale 接口也不可用,则默认字符集为 utf-8。
控制字符和二进制字符以醒目(反色)显示。 如果可能,每个此类字符都以插入符表示法显示(例如,^A 表示控制-A)。 仅当翻转 0100 位产生普通可打印字符时才使用插入符表示法。 否则,该字符将显示为带尖括号的十六进制数。 可以通过设置环境变量 LESSBINFMT 来更改此格式。 LESSBINFMT 可以以“*”开头,后跟一个字符,以选择显示属性:”*k”为闪烁,”*d”为粗体,”*u”为下划线,”*s”为醒目,而”*n”为普通。 如果 LESSBINFMT 不以“*”开头,则假定为普通属性。 LESSBINFMT 的其余部分是一个字符串,其中可以包含一个 printf 样式的转义序列(一个“%”后跟 x、X、o、d 等)。 例如,如果 LESSBINFMT 为“*u[%x]”,则二进制字符将以带下划线的十六进制形式显示在方括号中。 如果没有指定 LESSBINFMT,则默认值为“*s<%02X>”。 警告:通过 LESSBINFMT 扩展字符的结果必须少于 31 个字符。
当字符集为 utf-8 时,LESSUTFBINFMT 环境变量的行为类似于 LESSBINFMT,但它适用于已成功解码但不适合显示的 Unicode 代码点(例如,未分配的代码点)。其默认值为 <U+%04lX>。请注意,LESSUTFBINFMT 和 LESSBINFMT 共享其显示属性设置("*x"),因此指定其中一个会影响另一个;LESSUTFBINFMT 在 LESSBINFMT 之后读取,因此如果指定了,则它的设置将具有优先级。
UTF-8 文件中的问题字节(截断序列的字节、完整但非最短形式序列的字节、无效字节以及滞后字节)将单独显示,并使用 LESSBINFMT,以便便于诊断 UTF-8 文件为何格式不正确。
当字符集为 utf-8 时,在某些罕见情况下,您可能希望覆盖某些字符的 Unicode 定义。例如,私有使用区域中的字符通常被视为控制字符,但如果您使用带有该范围内的可打印字符的自定义字体,则您可能希望让 less 将此类字符视为可打印字符。可以通过将 LESSUTFCHARDEF 环境变量设置为以逗号分隔的字符类型定义列表来实现。每个字符类型定义由一个或两个十六进制代码点(由连字符分隔),后跟一个冒号和一个类型字符组成。每个十六进制代码点可以可选地以“U”或“U+”为前缀。如果给出了成对的代码点,则该类型将设置为两个值之间的所有字符(包括两个值)。如果存在多个以逗号分隔的代码点值,则它们必须按升序排列。类型字符可以是以下之一:
p 一个普通的、可打印的字符。
w 一个宽(2 个空格)的可打印字符。
b 一个二进制(不可打印的)字符。
c 一个组合(零宽度)字符。
例如,将 LESSUTFCHARDEF 设置为
E000-F8FF:p,F0000-FFFFD:p,100000-10FFFD:p
将使所有私有使用区域字符都视为可打印字符。
提示
-P 选项允许您根据自己的喜好定制提示。给定给 -P 选项的字符串将替换指定的提示字符串。字符串中的某些字符会被特殊解释。提示机制相当复杂,以提供灵活性,但普通用户无需了解构造个性化提示字符串的详细信息。
百分号后跟单个字符,会根据该字符进行扩展。(下面对输入文件大小的引用是指预处理后的文件大小,如果使用了输入预处理器。)
%bX 替换为当前输入文件中字节偏移量。b 后跟单个字符(如上所示,表示为 X),用于指定要使用的行的字节偏移量。如果字符是“t”,则使用显示中顶部行的字节偏移量;“m”表示使用中间行,“b”表示使用底部行,“B”表示使用紧邻底部行之后的行,“j”表示使用由 -j 选项指定的“目标”行。
%B 替换为当前输入文件的大小。
%c 替换为出现在屏幕第一列的文本的列号。
%dX 替换为输入文件中某行的页码。要使用的行由 X 确定,与 %b 选项相同。
%D 替换为输入文件中的页数,或者等效地,输入文件中最后一行的页码。
%E 替换为编辑器名称(来自 VISUAL 环境变量,如果未定义 VISUAL,则来自 EDITOR 环境变量)。请参阅下面对 LESSEDIT 功能的讨论。
%f 替换为当前输入文件的名称。
%F 替换为当前输入文件名称的最后一个组成部分。
%g 替换为当前输入文件的 shell 转义后的名称。当扩展后的字符串将在 shell 命令中使用时(例如在 LESSEDIT 中),这非常有用。
%i 替换为输入文件列表中当前文件的索引。
%lX 替换为输入文件中某行的行号。要使用的行由 X 确定,与 %b 选项相同。
%L 替换为输入文件中最后一行的行号。
%m 替换为输入文件的总数。
%o 替换为当前选定的 OSC 8 超链接的 URI,如果没有选择超链接,则替换为问号。这由 OSC 8 处理程序使用,如 ^O^O 命令的描述中所述。
%pX 替换为基于字节偏移量的当前输入文件中百分比。要使用的行由 X 确定,与 %b 选项相同。
%PX 替换为基于行号的当前输入文件中百分比。要使用的行由 X 确定,与 %b 选项相同。
%s 与 %B 相同。
%t 删除所有尾随空格。通常在字符串的末尾使用,但也可以出现在任何位置。
%T 通常扩展为单词“file”。但是,如果通过使用 -t 选项查看文件列表,则它扩展为单词“tag”。
%x 替换为下一个输入文件的名称。
如果任何项目未知(例如,如果输入是管道,则文件大小未知),则打印一个问号。
提示字符串的格式可以根据某些条件进行更改。 问号后跟单个字符的行为类似于“IF”:根据后面的字符,将评估一个条件。 如果条件为真,则在问号和条件字符之后的所有字符(直到句点为止)都将包含在提示中。 如果条件为假,则不包含这些字符。 可以在问号和句点之间使用冒号来建立“ELSE”:如果在“IF”条件为假时,将包含问号和冒号之间以及句点之间的所有字符。 条件字符(位于问号之后)可以是:
?a 如果到目前为止,提示中已包含任何字符,则为真。
?bX 如果指定行的字节偏移量已知,则为真。
?B 如果当前输入文件的大小已知,则为真。
?c 如果文本水平移动(%c 不为零),则为真。
?dX 如果指定行的页码已知,则为真。
?e 如果是文件结尾,则为真。
?f 如果存在输入文件名(即,如果输入不是管道),则为真。
?lX 如果指定行的行号已知,则为真。
?L 如果文件中最后一行行的行号已知,则为真。
?m 如果存在多个输入文件,则为真。
?n 如果这是新输入文件中的第一个提示,则为真。
?pX 如果基于字节偏移量,指定行在当前输入文件中所占的百分比已知,则为真。
?PX 如果基于行号,指定行在当前输入文件中所占的百分比已知,则为真。
?s 与“?B”相同。
?x 如果存在下一个输入文件(即,当前输入文件不是最后一个文件),则为真。
除特殊字符(问号、冒号、句点、百分号和反斜杠)之外的任何字符都将作为提示的字面部分。 可以通过在特殊字符前添加反斜杠来将其作为字面值包含在提示中。
一些示例:
?f%f:Standard input.
此提示打印文件名(如果已知);否则,打印字符串“Standard input”。
?f%f .?ltLine %lt:?pt%pt\%:?btByte %bt:-...
此提示将打印文件名(如果已知)。 文件名后跟行号(如果已知),否则是百分比(如果已知),否则是字节偏移量(如果已知)。 否则,将打印一个破折号。 请注意,每个问号都有一个匹配的句点,并且通过使用反斜杠对其进行转义,因此在%pt之后的%将被字面解释。
?n?f%f .?m(%T %i of %m) ..?e(END) ?x- Next\: %x..%t
如果这是文件中的第一个提示,则打印文件名,后跟“文件 N of N”消息(如果存在多个输入文件)。 然后,如果我们在文件结尾,则打印字符串“(END)”,然后打印下一个文件的名称(如果存在)。 最后,将截断所有尾随空格。 这是默认提示。 供参考,这是其他两个提示(分别为-m和-M)的默认值。 为了便于阅读,此处将其分成两行。
?n?f%f .?m(%T %i of %m) ..?e(END) ?x- Next\: %x.:
?pB%pB\%:byte %bB?s/%s...%t
?f%f .?n?m(%T %i of %m) ..?ltlines %lt-%lb?L/%L. :
byte %bB?s/%s. .?e(END) ?x- Next\: %x.:?pB%pB\%..%t
并且,提示扩展功能还用于另一个目的:如果定义了环境变量 LESSEDIT,则它用作调用 v 命令时要执行的命令。 LESSEDIT 字符串的扩展方式与提示字符串的扩展方式相同。 LESSEDIT 的默认值为:
%E ?lm+%lm. %g
请注意,这会扩展为编辑器名称,后跟一个 +,然后是行号,然后是 shell 转义后的文件名。 如果您的编辑器不支持“+行号”语法,或者在调用语法方面有其他差异,则可以更改 LESSEDIT 变量以修改此默认值。
安全性
当环境变量 LESSSECURE 设置为 1 时,less 以“安全”模式运行。 在此模式下,会禁用以下功能:
edit 编辑命令 (v)
examine 检查命令 (:e)
glob 文件名中的通配符(例如 *),以及文件名补全(TAB,^L)
history 历史文件
lesskey 使用 lesskey 文件(-k 和 --lesskey-src)
lessopen 输入预处理器(LESSOPEN 环境变量)
logfile 日志文件(s 和 -o)
osc8 打开 OSC 8 链接 (^O^O)
pipe 管道命令 (|)
shell shell 和 pshell 命令(! 和 #)
stop 通过 SIGSTOP 信号停止 less
tags 使用标签文件 (-t)
环境变量 LESSSECURE_ALLOW 可以设置为以逗号分隔的名称列表,这些名称指定在设置 LESSSECURE 时要选择性启用的功能。 每个功能名称是上述列表中每行的第一个单词。 只要缩写不含糊,就可以缩写功能名称。 例如,如果设置了 LESSSECURE=1 并且设置了 LESSSECURE_ALLOW=hist,edit,则上述所有功能都将被禁用,除了历史文件和编辑命令。
less 也可以编译为永久处于“安全”模式。 在这种情况下,将忽略环境变量 LESSSECURE 和 LESSSECURE_ALLOW。
与 MORE 的兼容性
如果环境变量 LESS_IS_MORE 设置为 1,或者如果通过名为“more”的文件链接调用程序,less 会(大致)按照 POSIX more(1) 命令规范运行。 在此模式下,less 的行为会有所不同,具体如下:
-e 选项的工作方式不同。 如果未设置 -e 选项,less 的行为就像设置了 -e 选项一样。 如果设置了 -e 选项,less 的行为就像设置了 -E 选项一样。
^ m 选项的作用方式不同。如果未设置 -m 选项,则使用中等提示符,并且该提示符会以字符串 --More-- 为前缀。如果设置了 -m 选项,则使用简短提示符。
^ n 选项的作用方式与 -z 选项相同。在这种模式下,-n 选项的正常行为不可用。
^ p 选项的参数被视为 less 命令,而不是搜索模式。
^ ESS 环境变量将被忽略,而是使用 MORE 环境变量。
环境变量
环境变量可以像通常那样在系统环境中指定,也可以在 lesskey(1) 文件中指定。如果在多个位置定义了环境变量,则在本地 lesskey 文件中定义的变量优先于在系统环境中定义的变量,而系统环境中的变量优先于在系统范围内的 lesskey 文件中定义的变量。
^ OLUMNS
设置屏幕上的列数。优先于 TERM 变量中指定的列数。(但是,如果您的系统具有支持 TIOCGWINSZ 或 WIOCGETD 的窗口系统,则窗口系统对屏幕大小的定义优先于 LINES 和 COLUMNS 环境变量。)
^ DITOR
编辑器的名称(用于 v 命令)。
^ OME
用户的主目录的名称(用于在 Unix 和 OS/2 系统上查找 lesskey 文件)。
^ OMEDRIVE, HOMEPATH
^ OMEDRIVE 和 HOMEPATH 环境变量的组合是用户的主目录名称(如果未设置 HOME 变量,则仅在 Windows 版本中)。
^ NIT
用户的初始化目录的名称(用于在 OS/2 系统上查找 lesskey 文件)。
^ ANG
用于确定字符集的语言。
^ C_CTYPE
用于确定字符集的语言。
^ ESS
要自动传递给 less 的选项。
^ ESSANSIENDCHARS
可能结束 ANSI 颜色转义序列的字符(默认为“m”)。
^ ESSANSIMIDCHARS
可能出现在 ANSI 颜色转义序列中 ESC 字符和结束字符之间的字符(默认为“0123456789:;[?!'#%()*+ ”)。
^ ESSBINFMT
用于显示非可打印、非控制字符的格式。
^ ESSCHARDEF
定义字符集。
^ ESSCHARSET
选择预定义的字符集。
^ ESSCLOSE
用于调用(可选)输入后处理器的命令行。
^ ESSECHO
^ essecho 程序的名称(默认为“lessecho”)。lessecho 程序需要用于扩展 Unix 系统中文件名中的元字符,例如 * 和 ?。
^ ESSEDIT
编辑器原型字符串(用于 v 命令)。请参阅“提示符”下的讨论。
^ ESSGLOBALTAGS
用于通过 -t 选项查找全局标签的命令的名称。通常应设置为“global”,如果您的系统具有 global(1) 命令。如果未设置,则不使用全局标签。
^ ESSHISTFILE
用于在 less 的不同调用之间记住搜索命令和 shell 命令的历史文件。如果设置为“-”或“/dev/null”,则不使用历史文件。默认值取决于操作系统,但通常为:
Linux 和 Unix "$XDG_STATE_HOME/lesshst" 或 "$HOME/.local/state/lesshst" 或 "$XDG_DATA_HOME/lesshst" 或 "$HOME/.lesshst"。
Windows 和 MS-DOS "$HOME/_lesshst"。
OS/2 "$HOME/lesshst.ini" 或 "$INIT/lesshst.ini"。
LESSHISTSIZE
保存到历史文件中的最大命令数。 默认值为 100。
LESSKEYIN
默认 lesskey 源代码文件的名称。
LESSKEY
默认 lesskey 二进制文件的名称。(如果存在 "$LESSKEYIN",则不使用。)
LESSKEY_CONTENT
该值将被解析,就像它是 `--lesskey-content` 选项的参数一样。
LESSKEYIN_SYSTEM
默认的系统范围 lesskey 源代码文件的名称。
LESSKEY_SYSTEM
默认的系统范围 lesskey 二进制文件的名称。(如果存在 "$LESSKEYIN_SYSTEM",则不使用。)
LESSMETACHARS
shell 认为的“元字符”列表。
LESSMETAESCAPE
less 将在发送到 shell 的命令中每个元字符之前添加的前缀。 如果 LESSMETAESCAPE 是一个空字符串,则不将包含元字符的命令传递到 shell。
LESSOPEN
用于调用(可选)输入预处理器的命令行。
LESSSECURE
以“安全”模式运行 less。 请参阅“安全性”部分。
LESSSECURE_ALLOW
启用通常由 LESSSECURE 禁用的各个功能。 请参阅“安全性”部分。
LESSSEPARATOR
附加到文件名补全中的目录名称的字符串。
LESSUTFBINFMT
用于显示不可打印的 Unicode 代码点的格式。
LESSUTFCHARDEF
覆盖指定 Unicode 字符的类型。
LESS_COLUMNS
设置屏幕上的列数。 与 COLUMNS 不同,它优先于系统对屏幕大小的了解,因此可用于使 less 使用的屏幕宽度小于整个屏幕宽度。 如果设置为负数,则将用于的列数设置为实际屏幕宽度减去此值。
LESS_LINES
设置屏幕上的行数。 与 LINES 不同,它优先于系统对屏幕大小的了解,因此可用于使 less 使用的屏幕高度小于整个屏幕高度。 如果设置为负数,则将用于的行数设置为实际屏幕高度减去此值。 设置后,less 会在每次移动命令时重新绘制整个屏幕,因此滚动可能会变慢。
LESS_DATA_DELAY
在开始读取输入数据后,持续多长时间(以毫秒为单位),才会显示“正在等待数据”消息。 默认值为 4000(4 秒)。
LESS_IS_MORE
模拟 more(1) 命令。
LESS_OSC8_xxx
其中“xxx”是 URI 方案,例如“http”或“file”,为打开包含该方案 URI 的 OSC 8 链接设置 OSC 8 处理程序。
LESS_OSC8_ANY
为打开没有为“xxx”方案设置特定 LESS_OSC8_xxx 处理程序的 OSC 8 链接设置 OSC 8 处理程序。
LESS_TERMCAP_xx
其中 "xx" 是任意两个字符,用于覆盖终端的 "xx" 功能的 termcap 定义。
LESS_UNSUPPORT
一个空格分隔的命令行选项列表。如果这些选项出现在命令行或 LESS 环境变量中,则会被忽略(不会显示错误消息)。列在 LESS_UNSUPPORT 中的选项仍然可以通过 - 和 -- 命令进行更改。LESS_UNSUPPORT 中的每个选项都是一个以连字符开头的单个字符选项字母,或者是以两个连字符开头的长选项名称。
LINES 设置屏幕上的行数。它优先于 TERM 变量中指定的行数。(但是,如果您的窗口系统支持 TIOCGWINSZ 或 WIOCGETD,则窗口系统对屏幕大小的定义优先于 LINES 和 COLUMNS 环境变量。)
MORE 选项,这些选项在以 more 兼容模式运行时,会自动传递给 less。
PATH 用户搜索路径(用于在 MS-DOS、Windows 和 OS/2 系统上查找 lesskey 文件)。
SHELL 用于执行 ! 命令以及扩展文件名的 shell。
TERM 正在运行 less 的终端类型。
VISUAL 编辑器的名称(用于 v 命令)。
XDG_CONFIG_HOME
lesskey 文件的可能位置;请参阅“键绑定”部分。
XDG_DATA_HOME
历史文件的可能位置;请参阅 LESSHISTFILE 环境变量的说明。
XDG_STATE_HOME
历史文件的可能位置;请参阅 LESSHISTFILE 环境变量的说明。
参见
lesskey(1), lessecho(1)
版权
版权所有 (C) 1984-2024 Mark Nudelman
less 是 GNU 项目的一部分,并且是自由软件。您可以根据 (1) Free Software Foundation 发布的标准 GNU 通用公共许可证;或 (2) Less 许可证的条款重新分发和/或修改它。有关重新分发的更多详细信息,请参阅 less 分发包中的 README 文件。您应该已经收到了 GNU 通用公共许可证的副本,以及源代码;请参阅 COPYING 文件。如果没有,请写信给 Free Software Foundation,地址为:59 Temple Place, Suite 330, Boston, MA 02111-1307, USA。您还应该已经收到了 Less 许可证的副本;请参阅 LICENSE 文件。
less 的分发是希望它对您有所帮助,但不提供任何保证;甚至不提供适销性和特定用途适用性的暗示保证。请参阅 GNU 通用公共许可证以获取更多详细信息。
作者
Mark Nudelman 请在 https://github.com/gwsw/less/issues 上报告错误。 有关更多信息,请访问 less 主页: https://greenwoodsoftware.com/less。