# more.1

LESS(1)

LESS(1)

FreeBSD General Commands Manual

LESS(1)

## [名称](#__u540D___u79F0_)

less - 与 more 相反

## [概要](#__u6982___u8981_)

**less -?**- **less --help**- **less -V**- **less --version**- **less \[-\[+]aABcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX\~]**- **\[-b&#x20;*****space*****] \[-h&#x20;*****lines*****] \[-j&#x20;*****line*****] \[-k&#x20;*****keyfile*****]**- **\[-{oO}&#x20;*****logfile*****] \[-p&#x20;*****pattern*****] \[-P&#x20;*****prompt*****] \[-t&#x20;*****tag*****]**- **\[-T&#x20;*****tagsfile*****] \[-x&#x20;*****tab*****,...] \[-y&#x20;*****lines*****] \[-\[z]&#x20;*****lines*****]**- **\[-#&#x20;*****shift*****] \[+\[+]*****cmd*****] \[--] \[*****filename*****]...**- (有关具有长选项名称的替代选项语法，请参阅 OPTIONS 部分。)

## [描述](#__u63CF___u8FF0_)

*Less* 是一个类似于 *more*(1), 的程序，但它允许在文件中向后移动以及向前移动。 此外， *less* 在启动之前不必读取整个输入文件，因此对于大型输入文件，它比 *vi*(1) 等文本编辑器启动得更快。 *Less* 使用 termcap（或某些系统上的 terminfo），因此它可以在各种终端上运行。 对硬拷贝终端的支持甚至有限。 （在硬拷贝终端上，应在屏幕顶部打印的行以插入符号为前缀。）

命令基于 *more* 和 *vi* 。 命令前面可能有一个十进制数，在下面的描述中称为 N。 如图所示，该数字由某些命令使用。

## [命令](#__u547D___u4EE4_)

在以下描述中，^X 表示 control-X。 ESC 代表 ESCAPE 键；例如 ESC-v 表示两个字符序列 "ESCAPE" ，然后是 "v"。

h 或 H

帮助：显示这些命令的摘要。 如果您忘记了所有其他命令，请记住此命令。

SPACE or ^V or f or ^F

向前滚动 N 行，默认为一个窗口（参见下面的选项 -z)。 如果 N 大于屏幕大小，则仅显示最终的屏幕大小。 警告：某些系统使用 ^V 作为特殊的文字化字符。

z

与 SPACE 类似，但如果指定了 N，它将成为新的窗口大小。

ESC-SPACE

与 SPACE 类似，但滚动全屏，即使在此过程中到达文件结尾。

ENTER or RETURN or ^N or e or ^E or j or ^J

向前滚动 N 行，默认为 1。 即使 N 大于屏幕大小，也会显示整个 N 行。

d or ^D

向前滚动 N 行，默认为屏幕大小的一半。 如果指定了 N，它将成为后续 d 和 u 命令的新默认值。

b or ^B or ESC-v

向后滚动 N 行，默认一个窗口（参见下面的选项 -z ）。 如果 N 大于屏幕大小，则仅显示最终的屏幕大小。

w

与 ESC-v 类似，但如果指定了 N，则成为新的窗口大小。

y 或 ^Y 或 ^P 或 k 或 ^K

向后滚动 N 行，默认为 1。 即使 N 大于屏幕大小，也会显示整个 N 行。 警告：某些系统使用 ^Y 作为特殊的作业控制字符

u or ^U

向后滚动 N 行，默认为屏幕大小的一半。 如果指定了 N，它将成为后续 d 和 u 命令的新默认值。

J

与 j 类似，但继续滚动到文件末尾之外。

K or Y

与 k 类似，但继续滚动到文件开头之外。

ESC-) 或 RIGHTARROW

水平向右滚动 N 个字符，默认为屏幕宽度的一半（参见 -# 选项）。 如果指定了数字 N，它将成为未来 RIGHTARROW 和 LEFTARROW 命令的默认值。 滚动文本时，它就像 -S 选项(chop lines) 生效一样。

ESC-( or LEFTARROW

水平向左滚动 N 个字符，默认为屏幕宽度的一半（参见 -# 选项）。 如果指定了数字 N，它将成为未来 RIGHTARROW 和 LEFTARROW 命令的默认值。

ESC-} or ^RIGHTARROW

水平向右滚动以显示最长显示行的末尾。

ESC-{ or ^LEFTARROW

水平向左滚动回到第一列。

r or ^R or ^L

重新绘制屏幕。

R

重新绘制屏幕，丢弃任何缓冲的输入。如果在查看文件时文件正在更改，则很有用。

F

向前滚动，并在到达文件末尾时继续尝试阅读。 通常，该命令已经在文件末尾时使用。 这是一种监视正在查看时正在增长的文件的尾部的方法。 （行为类似于 "tail -f" 命令。）

ESC-F

与 F 类似，但一旦找到与最后一个搜索模式匹配的行，终端铃声就会响起并且向前滚动停止。

g or < or ESC-<

转到文件中的第 N 行，默认为 1（文件开头）。 （警告：如果 N 很大，这可能会很慢。）

G or > or ESC->

转到文件中的第 N 行，默认为文件末尾。 （警告：如果 N 很大，或者没有指定 N 并且正在读取标准输入而不是文件，这可能会很慢。）

ESC-G

与 G 相同，除非未指定数字 N 并且输入是标准输入，否则转到当前缓冲的最后一行。

p or %

转到文件中 N% 的位置。 N 应介于 0 和 100 之间，并且可以包含小数点。

P

转到文件中包含字节偏移 N 的行。

{

如果左大括号出现在屏幕上显示的第一行，{ 命令将转到匹配的右大括号。 匹配的右花括号位于屏幕的底部。 如果顶行有多个左花括号，则可以使用数字 N 来指定行上的第 N 个括号。

}

如果右大括号出现在屏幕显示的底行，} 命令将转到匹配的左大括号。 匹配的左花括号位于屏幕的顶行。 如果顶行有多个右花括号，则可以使用数字 N 来指定行上的第 N 个括号。

(

与 { 类似，但适用于括号而不是大括号。

)

与 } 类似，但适用于括号而不是大括号。

\[

与 { 类似，但适用于方括号而不是大括号。

]

与 } 类似，但适用于方括号而不是大括号。

ESC-^F

后跟两个字符，作用类似于 {，但将这两个字符分别用作左括号和右括号。 例如， For example, "ESC ^F < >" 可用于前进到与顶部显示行中的 < 匹配的 >。

ESC-^B

后跟两个字符，作用类似于 }，但将这两个字符分别用作左括号和右括号。 例如，"ESC ^B < >" 可用于返回到与底部显示行中的 > 匹配的 <。

m

后跟任何小写或大写字母，用该字母标记显示的第一行。 如果通过 -J 选项启用状态列，则状态列显示标记的行。

M

与 m 类似，除了最后显示的行被标记而不是第一个显示的行。

'

后跟任何小写或大写字母，返回到之前用该字母标记的位置。 后跟另一个单引号，返回到执行最后一个 "large" 移动命令的位置。 后跟 ^ 或 $，分别跳转到文件的开头或结尾。 检查新文件时会保留标记，因此可以使用 ' 命令在输入文件之间切换。

^X^X

与单引号相同。

ESC-m

后跟任何小写或大写字母，清除由该字母标识的标记。

/pattern

在文件中向前搜索包含该模式的第 N 行。 N 默认为 1。 该模式是一个正则表达式，由您的系统提供的正则表达式库识别。 搜索从显示的第一行开始（但请参阅 -a 和 -j 选项，它们会改变这一点）。

如果在模式的开头输入某些字符是特殊的；他们修改了搜索的类型，而不是成为模式的一部分：

^N or !

搜索与模式不匹配的行。

^E or \*

搜索多个文件。 也就是说，如果搜索到达当前文件的 END 却没有找到匹配项，则在命令行列表中的下一个文件中继续搜索。

^F or @

从命令行列表中第一个文件的第一行开始搜索，无论屏幕上当前显示什么或 -a 或 -j 选项的设置。

^K

突出显示与当前屏幕上的模式匹配的任何文本，但不要移动到第一个匹配项（保持当前位置）。

^R

不要解释正则表达式元字符；也就是做一个简单的文字比较

?pattern

在文件中向后搜索包含该模式的第 N 行。 搜索从显示的最后一行开始（但请参阅 -a 和 -j 选项，它们会改变这一点）。

某些字符在 / 命令中是特殊的：

^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

仅显示与模式匹配的行；不显示与模式不匹配的行。 如果 pattern 为空（如果您键入 & 紧跟 ENTER），则关闭任何过滤，并显示所有行。 过滤生效时，提示符开头会显示一个 & 符号，以提醒文件中的某些行可能被隐藏。

某些字符在 / 命令中是特殊的：

^N or !

仅显示与模式不匹配的行。

^R

不要解释正则表达式元字符；也就是做一个简单的文字比较。

:e \[filename]

检查一个新文件。 如果缺少文件名，则重新检查命令行中文件列表中的 "current" 文件（参见下面的 :n 和 :p 命令）。 文件名中的百分号 (%) 将替换为当前文件的名称。 井号 (#) 将替换为先前检查的文件的名称。 但是，两个连续的百分号只是简单地替换为一个百分号。 这允许您输入名称中包含百分号的文件名。 同样，两个连续的井号被替换为一个井号。 文件名被插入到文件的命令行列表中，以便后续的 :n 和 :p 命令可以看到它。 如果文件名由多个文件组成，则将它们全部插入文件列表并检查第一个文件。 如果文件名包含一个或多个空格，则整个文件名应该用双引号引起来（另请参见 -" 选项）。

^X^V or E

与:e 相同。警告：某些系统使用 ^V 作为特殊的文字化字符。 在此类系统上，您可能无法使用 ^V。

:n

检查下一个文件（从命令行中给出的文件列表中）。 如果指定了数字 N，则检查第 N 个下一个文件。

:p

检查命令行列表中的前一个文件。 如果指定了数字 N，则检查前第 N 个文件。

:x

检查命令行列表中的第一个文件。 如果指定了数字 N，则检查列表中的第 N 个文件。

:d

从文件列表中删除当前文件。

t

如果当前标签有多个匹配项，则转到下一个标签。 有关标签的更多详细信息，请参阅 -t 选项。

T

如果当前标签有多个匹配项，请转到上一个标签。

\= or ^G or :f

打印有关正在查看的文件的一些信息，包括其名称以及正在显示的底行的行号和字节偏移量。 如果可能，它还会打印文件的长度、文件中的行数以及最后显示的行上方的文件百分比。

\-

后跟一个命令行选项字母（请参阅下面的选项），这将更改该选项的设置并打印一条描述新设置的消息。 如果在破折号后立即输入 ^P (CONTROL-P)，则选项的设置会更改，但不会打印任何消息。 如果选项字母有数字值（如 -b 或 -h)或字符串值（如 -P 或 -t), 则可以在选项字母后输入新值。 如果没有输入新值，则会打印一条描述当前设置的消息，并且不会进行任何更改。

\--

与 - 命令类似，但需要一个长选项名称（请参阅下面的选项）而不是单个选项字母。 输入选项名称后，您必须按 ENTER 或 RETURN。 紧跟在第二个破折号之后的 ^P 禁止打印描述新设置的消息，如在 - 命令中。

-+

后跟一个命令行选项字母，这会将选项重置为其默认设置并打印一条描述新设置的消息。 （ "-+*X*" 命令与命令行中的 "-+*X*" 做同样的事情。） 这不适用于字符串值选项。

\--+

与 -+ 命令类似，但采用长选项名称而不是单个选项字母。

-!

后跟一个命令行选项字母，这会将选项重置为其默认设置的 "opposite" ，并打印一条描述新设置的消息。 这不适用于数字或字符串值选项。

\--!

像 -! 命令，但需要一个长选项名称而不是单个选项字母。

\_

（下划线。） 后跟一个命令行选项字母，这将打印一条消息，描述该选项的当前设置。 选项的设置不会改变。

\_\_

（双下划线。） 与 \_（下划线）命令类似，但需要一个长选项名称而不是单个选项字母。 输入选项名称后，您必须按 ENTER 或 RETURN。

+cmd

每次检查新文件时都会执行指定的 cmd。 例如，+G 导致 *less* 最初显示每个文件从末尾开始而不是开头。

V

打印 *less* 正在运行的版本号。

q or Q or :q or :Q or ZZ

退 *less* 。

以下四个命令可能有效也可能无效，具体取决于您的特定安装。

v

调用编辑器来编辑正在查看的当前文件。 如果已定义，则编辑器取自环境变量 VISUAL，如果未定义 VISUAL，则取自 EDITOR，如果既未定义 VISUAL 也未定义 EDITOR，则默认为 "vi" 。 另请参见下面关于 PROMPTS 的部分对 LESSEDIT 的讨论。

! shell-command

调用一个 shell 来运行给定的 shell 命令。 命令中的百分号 (%) 将替换为当前文件的名称。 井号 (#) 将替换为先前检查的文件的名称。 "!!" 重复最后一个 shell 命令。 "!" 没有 shell 命令只是调用一个 shell。 在 Unix 系统上，shell 取自环境变量 SHELL，或默认为 "sh"。 在 MS-DOS 和 OS/2 系统上，shell 是普通的命令处理器。

\| shell-command

代表任何标记字母。 将输入文件的一部分通过管道传递给给定的 shell 命令。 要传送的文件部分位于字母标记的位置和当前屏幕之间。 包括整个当前屏幕，无论标记的位置是在当前屏幕之前还是之后。 也可以是 ^ 或 $ 分别表示文件的开始或结束。 如果 是 . 或换行符，当前屏幕是管道。

s filename

将输入保存到文件中。 这仅在输入是管道而不是普通文件时才有效。

## [选项](#__u9009___u9879_)

命令行选项如下所述。 通过 "-" 命令可以在 *less* 运行时更改大多数选项。

大多数选项可以以以下两种形式之一给出：一个短划线后跟一个字母，或者两个短划线后跟一个长选项名称。 长选项名称可以缩写，只要缩写是明确的。 例如， --quit-at-eof 可以缩写为 --quit, 但不能缩写为 --qui, 因为 --quit-at-eof 和 --quiet 都以 --qui。 一些长选项名称是大写的，例如 --QUIT-AT-EOF, 与 --quit-at-eof 不同。 此类选项名称只需将首字母大写即可；名称的其余部分可能是任何一种情况。 例如， --Quit-at-eof 等价于 --QUIT-AT-EOF。

选项也取自环境变量 "LESS"。 例如，为了避免每次调用 *less* 时都输入 "less -options ..." ，你可以告诉 *csh*:

setenv LESS "-options"

或者如果你使用 *sh*:

LESS="-options"; export LESS

在 MS-DOS 上，您不需要引号，但您应该用双百分号替换选项字符串中的任何百分号。

环境变量在命令行之前被解析，所以命令行选项会覆盖 LESS 环境变量。 如果一个选项出现在 LESS 变量中，可以通过以 "-+" 开头的命令行选项将其重置为命令行上的默认值。

一些选项，如 -k 或 -D 需要一个字符串跟随选项字母。 当找到美元符号 ($) 时，该选项的字符串被视为结束。 例如，您可以像这样在 MS-DOS 上设置两个 -D 选项：

LESS="Dn9.1$Ds4.1"

如果 --use-backslash 选项出现在选项的前面，则美元符号或反斜杠可以通过在选项字符串前面加上反斜杠而直接包含在选项字符串中。 如果 --use-backslash 选项无效，则不会对反斜杠进行特殊处理，并且无法在选项字符串中包含美元符号。

-? or --help

此选项显示 *less* 接受的命令的摘要（与 h 命令相同）。 （根据您的 shell 如何解释问号，可能需要引用问号，例如： "-\\?"。)

-a or --search-skip-screen

默认情况下，向前搜索从显示屏幕的顶部开始，向后搜索从显示屏幕的底部开始（由 n 或 N 命令调用的重复搜索除外，它们分别在 "target" 行之后或之前开始；请参阅 -j 选项以获取有关目标行的更多信息）。 -a 选项导致向前搜索从屏幕底部开始，向后搜索从屏幕顶部开始，从而跳过屏幕上显示的所有行。

-A or --SEARCH-SKIP-SCREEN

使所有向前搜索（不仅仅是非重复搜索）在目标行之后开始，所有向后搜索在目标行之前开始。 因此，向前搜索将跳过显示屏幕的一部分（从第一行到目标行并包括目标行）。 类似地，向后搜索将从最后一行跳过显示的屏幕，并包括目标行。 这是 441 之前较少版本的默认行为。

-b\_n\_ or --buffers=*n*

指定 *less* 将为每个文件使用的缓冲区空间数量，单位为千字节(1024字节)。 默认情况下，每个文件使用 64 KB 的缓冲区空间（除非文件是管道；请参阅 -B 选项）。 -b 选项指定应为每个文件使用 *n* 千字节的缓冲区空间。 如果 *n* 为 -1，则缓冲区空间是无限的；即可以将整个文件读入内存。

-B or --auto-buffers

默认情况下，当从管道读取数据时，会根据需要自动分配缓冲区。 如果从管道中读取大量数据，则会导致分配大量内存。 -B 选项禁用为管道自动分配缓冲区，因此只有 64 KB（或 -b 选项指定的空间量）用于管道。 警告：使用 -B 可能会导致错误显示，因为只有最近查看的管道数据部分保存在内存中；任何早期的数据都会丢失。

-c or --clear-screen

导致从顶行向下绘制全屏重绘。 默认情况下，全屏重绘是通过从屏幕底部滚动来完成的。

-C or --CLEAR-SCREEN

与 -c 相同，用于与 *less* 的旧版本兼容。

-d or --dumb

-d 选项在终端哑时抑制正常显示的错误消息；也就是缺少一些重要的能力，比如清屏或者向后滚动的能力。 -d 选项不会改变 *less* 在哑终端上的行为。

-D**x***color* or --color=**x***color*

\[仅限 MS-DOS] 设置显示文本的颜色。 **x** 是单个字符，用于选择设置颜色的文本类型：n=正常，s=突出，d=粗体，u=下划线，k=闪烁。 *color* 是一对由句点分隔的数字。 第一个数字选择前景色，第二个数字选择文本的背景色。 单个数字 *N* 与 *N.M* 相同，其中 *M* 是正常的背景颜色。 如果系统支持，颜色可以以 **u** 开头或结尾以使用下划线（如果单独使用，则使用正常颜色）（仅限 Windows）。 **x** 也可以是 **a** 来切换严格的ANSI序列呈现(SGR模式)。

-e or --quit-at-eof

导致 *less* 在第二次到达文件末尾时自动退出。 默认情况下，退出 *less* 唯一方法是通过 "q" 命令。

-E or --QUIT-AT-EOF

导致 *less* 在第一次到达文件末尾时自动退出。

-f or --force

强制打开非常规文件。 （非常规文件是目录或设备专用文件。） 打开二进制文件时也禁止显示警告消息。 默认情况下， *less* 会拒绝打开非常规文件。 请注意，即使设置了 -f ，某些操作系统也不允许读取目录。

-F or --quit-if-one-screen

如果整个文件可以显示在第一个屏幕上，则导致 *less* 自动退出。

-g or --hilite-search

通常， *less* 将突出显示与最后一个搜索命令匹配的所有字符串。 -g 选项更改此行为以仅突出显示最后一个搜索命令找到的特定字符串。 这可能会导致 *less* 的运行速度比默认值快一些。

-G or --HILITE-SEARCH

-G 选项禁止突出显示由搜索命令找到的字符串。

-h\_n\_ or --max-back-scroll=*n*

指定向后滚动的最大行数。 如果需要向后滚动多于 *n* 行，则改为向前重新绘制屏幕。 （如果终端没有向后滚动的能力，则隐含 -h0 。)

-i or --ignore-case

导致搜索忽略大小写；也就是说，大写和小写被认为是相同的。 如果搜索模式中出现任何大写字母，则忽略此选项；换句话说，如果一个模式包含大写字母，那么该搜索不会忽略大小写。

-I or --IGNORE-CASE

与 -i 类似，但即使模式包含大写字母，搜索也会忽略大小写。

-j\_n\_ or --jump-target=*n*

指定屏幕上要放置 "target" 行的行。 目标行是任何命令指定的用于搜索模式、跳转到行号、跳转到文件百分比或跳转到标签的行。 屏幕行可以由一个数字指定：屏幕上的第一行是 1，下一行是 2，依此类推。 该数字可以是负数，以指定相对于屏幕底部的一行：屏幕底部的行是 -1, 倒数第二行是 -2,，依此类推。 或者，屏幕行可以指定为屏幕高度的一部分，从小数点开始： .5 位于屏幕中间， .3 位于第一行的十分之三处，依此类推。如果将行指定为分数，则在调整终端窗口大小时重新计算实际行号，以便目标行保持在屏幕高度的指定分数处。 如果使用任何形式的 -j 选项，重复的向前搜索（用 "n" 或 "N" 调用）从紧接着目标行的行开始，重复的向后搜索从目标行开始，除非被 -a 更改或 -A 。 例如，如果使用 "-j4" ，则目标行是屏幕上的第四行，因此向前搜索从屏幕上的第五行开始。 然而，非重复搜索（用 "/" 或 "?" 调用）总是分别从当前屏幕的开头或结尾开始。

-J or --status-column

在屏幕左边缘显示状态栏。 状态列显示与当前搜索匹配的行，以及任何被标记的行（通过 m 或 M 命令）。 如果 -w 或 -W 选项有效，也会使用状态列。

-k\_filename\_ or --lesskey-file=*filename*

导致 *less* 打开命名文件并将其解释为 *lesskey*(1) 文件。 可以指定多个 -k 选项。 如果设置了LESSKEY 或LESSKEY\_SYSTEM 环境变量，或者如果在标准位置找到了lesskey 文件（参见KEY BINDINGS），它也用作 *lesskey* 文件。

-K or --quit-on-intr

当输入中断字符（通常是 ^C）时，导致 *less* 立即退出（状态为 2）。通常，中断字符会导致 *less* 停止正在执行的操作并返回到命令提示符。 请注意，使用此选项无法从 "F" 命令返回到命令提示符。

-L or --no-lessopen

忽略 LESSOPEN 环境变量（请参阅下面的 INPUT PREPROCESSOR 部分）。 此选项可以在 *less* 中设置，但它只适用于随后打开的文件，而不适用于当前打开的文件。

-m or --long-prompt

导致 *less* 以文件中的百分比详细提示（如 *more*）。 默认情况下， *less* 使用冒号提示。

-M or --LONG-PROMPT

导致 *less* 比 *more* 更冗长地提示。

-n or --line-numbers

禁止行号。 在某些情况下，默认值（使用行号）可能会导致 *less* 运行得更慢，尤其是对于非常大的输入文件。 使用 -n 选项抑制行号将避免此问题。 使用行号意味着：行号将显示在详细提示符和 = 命令中，而 v 命令会将当前行号传递给编辑器（另请参阅下面 PROMPTS 中对 LESSEDIT 的讨论）。

-N or --LINE-NUMBERS

使行号显示在显示屏中每行的开头。

-o\_filename\_ or --log-file=*filename*

导致 *less* 在查看时将其输入复制到命名文件。 这仅适用于输入文件是管道而不是普通文件的情况。 如果文件已经存在， *less* 会在覆盖之前要求确认。

-O\_filename\_ or --LOG-FILE=*filename*

-O 选项类似于 -o, 但它会覆盖现有文件而不要求确认。

如果未指定日志文件，则可以在 *less* 中使用 -o 和 -O 选项来指定日志文件。 如果没有文件名，他们只会报告日志文件的名称。 "s" 命令等同于在 *less* 中指定 -o 。

-p\_pattern\_ or --pattern=*pattern*

命令行上的 -p 选项相当于指定 +/*pattern*; 也就是说，它告诉 *less* 从文件中第一次出现模式开始。

-P\_prompt\_ or --prompt=*prompt*

提供一种根据您自己的喜好定制三种提示样式的方法。 此选项通常会放在 LESS 环境变量中，而不是在每个 *less* 命令中输入。 这样的选项必须要么是 LESS 变量中的最后一个选项，要么以美元符号终止。 -Ps 后跟一个字符串将默认（短）提示更改为该字符串。 -Pm 更改中等 (-m) 提示符。 -PM 更改长 (-M) 提示符。 -Ph 更改帮助屏幕的提示。 -P= 更改 = 命令打印的消息。 -Pw 更改等待数据时打印的消息（在 F 命令中）。

所有提示字符串都由一系列字母和特殊转义序列组成。 有关更多详细信息，请参阅关于 PROMPTS 的部分。

-q or --quiet or --silent

导致适度 "quiet" 的操作：如果尝试滚动到文件末尾或文件开头之前，终端铃声不会响起。 如果终端有 "visual bell", 则使用它。 某些其他错误会响铃，例如输入无效字符。 默认设置是在所有此类情况下敲响终端铃声。

-Q or --QUIET or --SILENT

导致完全 "quiet" 的操作：终端铃声永远不会响起。 如果终端有一个 "visual bell", 它会在终端铃响的所有情况下使用。

-r or --raw-control-chars

导致显示 "raw" 控制字符。 默认是使用插入符号显示控制字符；例如，控件-A（八进制 001）显示为 "^A"。 警告：当使用 -r 选项时， *less* 无法跟踪屏幕的实际外观（因为这取决于屏幕如何响应每种类型的控制字符）。 因此，可能会导致各种显示问题，例如长线在错误的位置被分割。

-R or --RAW-CONTROL-CHARS

与 -r 类似，但只有 ANSI "color" 转义序列以 "raw" f形式输出。 与 -r 不同，在大多数情况下，屏幕外观保持正确。 ANSI "color" 转义序列是以下形式的序列：

ESC \[ ... m

其中 "..." 是零个或多个颜色规范字符 为了跟踪屏幕外观，假定 ANSI 颜色转义序列不会移动光标。 通过将环境变量 LESSANSIENDCHARS 设置为可以结束颜色转义序列的字符列表，可以使 *less* 认为除 "m" 外的字符可以结束 ANSI 颜色转义序列。 通过将环境变量 LESSANSIMIDCHARS 设置为可以显示的字符列表，可以使 *less* 认为标准字符以外的字符可能出现在 ESC 和 m 之间。

-s or --squeeze-blank-lines

导致连续的空白行被压缩成一个空白行。 这在查看 *nroff* 输出时很有用。

-S or --chop-long-lines

导致长于屏幕宽度的行被截断（截断）而不是包裹。 也就是说，长线中不适合屏幕宽度的部分在您按下右箭头之前不会显示。 默认是换行；也就是说，在下一行显示余数。

-t\_tag\_ or --tag=*tag*

-t 选项后跟一个标签，将编辑包含该标签的文件。 为此，标签信息必须可用；例如，当前目录中可能有一个名为 "tags" 的文件，该文件以前由 *ctags*(1) 或等效命令构建。 如果设置了环境变量 LESSGLOBALTAGS，则将其视为与 *global*(1) 兼容的命令的名称，并执行该命令以查找标记。 (See <http://www.gnu.org/software/global/global.html)。> -t 选项也可以在 *less* 中指定（使用 - 命令）作为检查新文件的一种方式。 命令 ":t" 等价于在 *less* 中指定 -t 。

-T\_tagsfile\_ or --tag-file=*tagsfile*

指定要使用的标签文件而不是 "tags"。

-u or --underline-special

导致退格和回车被视为可打印字符；也就是说，当它们出现在输入中时，它们被发送到终端。

-U or --UNDERLINE-SPECIAL

导致退格、制表符、回车和 "formatting characters" （由 Unicode 定义）被视为控制字符；也就是说，它们按照 -r 选项的指定进行处理。

默认情况下，如果既没有给出 -u 也没有给出 -U ，出现在下划线字符旁边的退格会被特殊处理：带下划线的文本使用终端的硬件下划线功能显示。 此外，出现在两个相同字符之间的退格会被特殊处理：使用终端的硬件粗体功能打印过度的文本。 其他退格与前面的字符一起被删除。 后跟换行符的回车被删除。 其他回车按 -r 选项指定的方式处理。 如果 -u 和 -U 均无效，则可以搜索过度划线或下划线的文本。

-V or --version

显示 *less* 的版本号。

-w or --hilite-unread

在整页向前移动后临时突出显示第一个 "new" 行。 第一个 "new" l行是紧跟屏幕底部先前行的行。 在 ag 或 p 命令之后也会突出显示目标行。 在下一个导致移动的命令时，突出显示将被删除。 整行被突出显示，除非 -J 选项生效，在这种情况下，只有状态列被突出显示。

-W or --HILITE-UNREAD

与 -w 类似，但在任何大于一行的向前移动命令之后临时突出显示第一个新行。

-x\_n\_,... or --tabs=*n*,...

设置制表位。如果仅指定一个 *n* ，则制表位设置为 *n* 的倍数。 如果指定了多个用逗号分隔的值，则在这些位置设置制表位，然后以与最后两个相同的间距继续。 例如， *-x9,17* 将在位置 9、17、25、33 等处设置选项卡。 *n* 的默认值为 8。

-X or --no-init

禁用将 termcap 初始化和取消初始化字符串发送到终端。 如果去初始化字符串做了一些不必要的事情，比如清除屏幕，这有时是可取的。

-y\_n\_ or --max-forw-scroll=*n*

指定向前滚动的最大行数。 如果需要向前滚动多于 *n* 行，则改为重新绘制屏幕。 如果需要，可以使用 -c 或 -C 选项从屏幕顶部重新绘制。 默认情况下，任何向前移动都会导致滚动。

-z\_n\_ or --window=*n* or -*n*

将默认滚动窗口大小更改为 *n* 行。默认值为一屏。 z 和 w 命令也可用于更改窗口大小。 为了与 *more* 的某些版本兼容，可以省略 "z" 。如果 *n* 为负数，则表示比当前屏幕尺寸小 *n* 行。 例如，如果屏幕是 24 行， *-z-4* 将滚动窗口设置为 20 行。 如果屏幕大小调整为 40 行，滚动窗口会自动更改为 36 行。

-"*cc* or --quotes=*cc*

更改文件名引用字符。 如果您尝试命名包含空格和引号字符的文件，这可能是必要的。 后跟一个字符，这会将引号字符更改为该字符。 包含空格的文件名应该用该字符而不是双引号引起来。 后跟两个字符，将打开引号更改为第一个字符，将结束引号更改为第二个字符。 然后，包含空格的文件名前面应该是左引号字符，然后是右引号字符。 请注意，即使更改了引号字符，此选项仍保留为 -" （破折号后跟双引号）。

-\~ or --tilde

通常，文件末尾之后的行显示为单个波浪号 (\~)。 此选项导致文件末尾之后的行显示为空行。

-# or --shift

指定在 RIGHTARROW 和 LEFTARROW 命令中水平滚动的默认位置数。 如果指定的数字为零，则将默认位置数设置为屏幕宽度的一半。 或者，该数字可以指定为屏幕宽度的一部分，以小数点开头： .5 是屏幕宽度的一半， .3 是屏幕宽度的十分之三，依此类推。 如果数字指定为分数，则在调整终端窗口大小时重新计算实际滚动位置数，以便实际滚动保持在屏幕宽度的指定分数处。

\--follow-name

通常，如果在执行 F 命令时输入文件被重命名，尽管名称更改， *less* 仍将继续显示原始文件的内容。 如果指定了 --follow-name ，则在 F 命令期间， *less* 将定期尝试按名称重新打开文件。 如果重新打开成功并且该文件与原始文件不同（这意味着已创建一个与原始（现已重命名）文件同名的新文件）， *less* 将显示该新文件的内容。

\--mouse

启用鼠标输入：向下滚动鼠标滚轮在文件中向前移动，向上滚动鼠标滚轮在文件中向后移动，单击鼠标将 "#" 标记设置为鼠标单击的行。 移动轮子时滚动的行数可以通过 --wheel-lines 选项设置。 鼠标输入只适用于支持 X11 鼠标报告的终端，以及 Windows 版本的 *less* 。

\--MOUSE

与 --mouse 类似，只是鼠标滚轮移动时滚动的方向相反。

\--no-keypad

禁用向终端发送键盘初始化和取消初始化字符串。 如果小键盘字符串使数字小键盘以不希望的方式运行，这有时很有用。

\--no-histdups

此选项更改行为，以便如果输入了搜索字符串或文件名，并且相同的字符串已经在历史列表中，则在添加新副本之前从历史列表中删除现有副本。 因此，一个给定的字符串在历史列表中只会出现一次。 通常，一个字符串可能会出现多次。

\--rscroll

此选项更改用于标记截断行的字符。 它可以像 LESSBINFMT 一样以两个字符的属性指示符开头。 如果没有属性指示符，则使用突出显示。 如果设置为 "-"，则不标记截断的行。

\--save-marks

将标记保存在历史文件中，以便在 *less* 的不同调用中保留标记。

\--use-backslash

此选项更改了对该选项后面的选项的解释。 在 --use-backslash 选项之后，选项字符串中的任何反斜杠都将被删除，并按字面意思获取以下字符。 这允许在选项字符串中包含美元符号。

\--wheel-lines=*n*

设置滚动鼠标滚轮并且 --mouse 或 --MOUSE 选项生效时要滚动的行数。 默认值为 1 行。

\--

"--" 的命令行参数标志着选项参数的结束。 其后的任何参数都被解释为文件名。 这在查看名称以 "-" 或 "+" 开头的文件时很有用。

*

如果命令行选项以 **+** 开头，则该选项的其余部分将被视为 *less* 的初始命令。 例如，+G 告诉 *less* 从文件末尾而不是开头开始，而 +/xyz 告诉它从文件中第一次出现的 "xyz" 开始。 作为一种特殊情况，+ 的作用类似于 +g；也就是说，它从指定的行号开始显示（但是，请参阅上面 "g" 命令下的警告）。 如果选项以 ++ 开头，则初始命令适用于正在查看的每个文件，而不仅仅是第一个文件。 前面描述的 + 命令也可用于为每个文件设置（或更改）初始命令。

## [行编辑](#__u884C___u7F16___u8F91_)

在屏幕底部输入命令行时（例如，用于 :e 命令的文件名，或用于搜索命令的模式），可以使用某些键来操作命令行。 大多数命令在 \[ 括号 ] 中都有另一种形式，如果特定键盘上不存在键，则可以使用这种形式。 （请注意，以 ESC 开头的表格在某些 MS-DOS 和 Windows 系统中不起作用，因为 ESC 是行擦除字符。） 这些特殊键中的任何一个都可以通过在其前面加上 "literal" 字符（^V 或^A）来按字面意思输入。 也可以通过输入两个反斜杠来逐字输入反斜杠本身。

左箭头 \[ ESC-h ]

将光标向左移动一格。

右箭头 \[ ESC-l ]

将光标向右移动一格。

^LEFTARROW \[ ESC-b or ESC-LEFTARROW ]

（即 CONTROL 和 LEFTARROW 同时进行。） 将光标向左移动一个单词。

^RIGHTARROW \[ ESC-w or ESC-RIGHTARROW ]

（即 CONTROL 和 RIGHTARROW 同时进行。）将光标向右移动一个单词。

HOME \[ ESC-0 ]

将光标移动到行首。

END \[ ESC-$ ]

将光标移动到行尾。

BACKSPACE

删除光标左边的字符，如果命令行为空则取消命令。

DELETE or \[ ESC-x ]

删除光标下的字符。

^BACKSPACE \[ ESC-BACKSPACE ]

（即同时使用 CONTROL 和 BACKSPACE。）删除光标左侧的单词。

^DELETE \[ ESC-X or ESC-DELETE ]

（即 CONTROL 和 DELETE 同时进行。）删除光标下的单词。

UPARROW \[ ESC-k ]

检索上一个命令行。 如果您首先输入一些文本，然后按 UPARROW，它将检索以该文本开头的上一个命令。

DOWNARROW \[ ESC-j ]

检索下一个命令行。 如果您首先输入一些文本，然后按向下箭头，它将检索以该文本开头的下一个命令。

TAB

完成光标左侧的部分文件名。 如果它匹配多个文件名，则将第一个匹配项输入命令行。 重复的 TAB 将循环通过其他匹配的文件名。 如果完成的文件名是一个目录，则在文件名后附加一个 "/" 。 （在 MS-DOS 系统上，附加一个 "\\" 。） 环境变量 LESSSEPARATOR 可用于指定要附加到目录名称的不同字符。

BACKTAB \[ ESC-TAB ]

就像 TAB 一样，但是通过匹配的文件名以相反的方向循环。

^L

完成光标左侧的部分文件名。 如果它匹配多个文件名，则所有匹配项都将输入命令行（如果它们适合）。

^U (Unix and OS/2) or ESC (MS-DOS)

删除整个命令行，或者如果命令行为空则取消该命令。 如果您已将 Unix 中的行终止字符更改为 ^U 以外的字符，则使用该字符而不是 ^U。

^G

删除整个命令行并返回主提示符。

## [键绑定](#__u952E___u7ED1___u5B9A_)

可以通过使用程序 *lesskey*(1) 创建一个lesskey 文件来定义您自己的 *less* 命令。 此文件指定一组命令键和与每个键关联的操作。 您还可以使用 *lesskey* 更改行编辑键（请参阅行编辑），并设置环境变量。 如果设置了环境变量LESSKEY， *less* 使用它作为lesskey 文件的名称。 否则， *less* 会在标准位置查找 lesskey 文件：在 Unix 系统上， *less* 会查找名为 "$HOME/.less" 的 lesskey 文件。 在 MS-DOS 和 Windows 系统上， *less* 会查找名为 "$HOME/\_less" 的 lesskey 文件，如果在那里找不到，则在 PATH 环境变量中指定的任何目录中查找名为 "\_less" 的 lesskey 文件。 在 OS/2 系统上， *less* 查找名为 "$HOME/less.ini" 的 lesskey 文件，如果未找到，则在 INIT 环境变量中指定的任何目录中查找名为 "less.ini" 的 lesskey 文件，如果在那里找不到，则在 PATH 环境变量中指定的任何目录中查找名为 "less.ini" 的 lesskey 文件。 有关详细信息，请参阅 *lesskey* 手册页。

还可以设置系统范围的 lesskey 文件以提供键绑定。 如果在本地 lesskey 文件和系统范围文件中都定义了键，则本地文件中的键绑定优先于系统范围文件中的键绑定。 如果设置了环境变量LESSKEY\_SYSTEM， *less* 将其用作系统范围的lesskey 文件的名称。 否则， *less* 会在标准位置查找系统范围的 lesskey 文件：在 Unix 系统上，系统范围的 lesskey 文件是 /usr/local/etc/sysless。 （但是，如果 *less* 是使用与 /usr/local/etc 不同的 sysconf 目录构建的，则该目录就是找到 sysless 文件的位置。） 在 MS-DOS 和 Windows 系统上，系统范围的 lesskey 文件是 c:\\\_sysless 。 在 OS/2 系统上，系统范围的 lesskey 文件是 c:\sysless.ini。

## [输入预处理器](#__u8F93___u5165___u9884___u5904___u7406___u5668_)

您可以为 *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 的前两个字符是竖线和短划线 (|-) 或两个竖线和短划线 (||-), 则输入管道用于标准输入以及其他文件。 同样，在这种情况下，破折号不被视为输入管道命令的一部分。

## [国家字符集](#__u56FD___u5BB6___u5B57___u7B26___u96C6_)

输入文件中有三种类型的字符：

normal characters

可以直接显示在屏幕上。

control characters

不应该直接显示，但应该在普通文本文件中找到（例如退格和制表符）。

binary characters

不应直接显示，也不应在文本文件中找到。

"character set" 只是对哪些字符被视为正常、控制和二进制的描述。 LESSCHARSET 环境变量可用于选择字符集。 LESSCHARSET 的可能值为：

ascii

S、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 服务使用的 EBCDIC 字符集。 这是 latin1 的 EBCDIC 类似物。 通过在您的环境中设置 LESSCHARSET=IBM-1047 或 LC\_CTYPE=en\_US 可以获得类似的结果。

koi8-r

选择俄语字符集。

next

选择适合 NeXT 计算机的字符集。

utf-8

选择 ISO 10646 字符集的 UTF-8 编码。 UTF-8 的特殊之处在于它支持输入文件中的多字节字符。 它是唯一支持多字节字符的字符集。

windows

选择适用于 Microsoft Windows (cp 1251) 的字符集。

在极少数情况下，可能需要对 *less* 进行裁剪，以使用 LESSCHARSET 可定义的字符集以外的字符集。 在这种情况下，可以使用环境变量 LESSCHARDEF 来定义字符集。 它应该设置为一个字符串，其中字符串中的每个字符代表字符集中的一个字符。字符 "." 用于普通字符， "c" 用于控制， "b" 用于二进制。 十进制数可用于重复。 例如， "bccc4b." 表示字符 0 是二进制，1、2 和 3 是控制，4、5、6 和 7 是二进制，8 是正常的。 最后一个字符之后的所有字符都被视为与最后一个字符相同，因此字符 9 到 255 是正常的。 （这是一个示例，不一定代表任何真实的字符集。）

下表显示了 LESSCHARDEF 的值，它等效于 LESSCHARSET 的每个可能值：

ascii

8bcccbcc18b95.b

dos

8bcccbcc12bc5b95.b.

ebcdic

5bc6bcc7bcc41b.9b7.9b5.b..8b6.10b6.b9.7b

9.8b8.17b3.3b9.7b9.8b8.6b10.b.b.b.

IBM-1047

4cbcbc3b9cbccbccbb4c6bcc5b3cbbc4bc4bccbc

191.b

iso8859

8bcccbcc18b95.33b.

koi8-r

8bcccbcc18b95.b128.

latin1

8bcccbcc18b95.33b.

next

8bcccbcc18b95.bb125.bb

如果 LESSCHARSET 和 LESSCHARDEF 均未设置，但在 LC\_ALL、LC\_CTYPE 或 LANG 环境变量中找到任何字符串 "UTF-8"、 "UTF8"、 "utf-8" 或 "utf8" ，则默认字符集为 UTF-8。

如果没有找到该字符串，但您的系统支持 *setlocale* 接口, *less* 将使用 setlocale 来确定字符集。 setlocale 通过设置 LANG 或 LC\_CTYPE 环境变量来控制。

最后，如果 *setlocale* 接口也不可用，则默认字符集为 latin1。

控制和二进制字符以突出显示（反向视频）。 如果可能，每个这样的字符都以插入符号显示（例如， ^A 表示 control-A）。 仅当反转 0100 位导致正常的可打印字符时，才使用插入符号。否则，字符将显示为尖括号中的十六进制数字。 可以通过设置 LESSBINFMT 环境变量来更改此格式。 LESSBINFMT 可以以 "\*" 和一个字符开头以选择显示属性： "\*k" 为闪烁, "\*d" 为粗体, "\*u" 为下划线, "\*s" 为突出显示, "\*n" 是正常的。 如果 LESSBINFMT 不以 "\*" 开头，则假定为普通属性。 LESSBINFMT 的其余部分是一个字符串，其中可能包含一个 printf 样式的转义序列（a % 后跟 x、X、o、d 等）。 例如，如果 LESSBINFMT 为 "\*u\[%x]" ，则二进制字符以带下划线的十六进制显示，并用方括号括起来。 如果未指定 LESSBINFMT，则默认值为 "\*s<%02X>" 。 警告：通过 LESSBINFMT 扩展字符的结果必须少于 31 个字符。

当字符集为 utf-8 时，LESSUTFBINFMT 环境变量的作用类似于 LESSBINFMT，但它适用于已成功解码但不适合显示的 Unicode 代码点（例如，未分配的代码点）。 它的默认值为 "\<U+%04lX>" 。 请注意，LESSUTFBINFMT 和 LESSBINFMT 共享它们的显示属性设置 ("\*x") ，因此指定一个会影响两者；LESSUTFBINFMT 在 LESSBINFMT 之后读取，因此其设置（如果有）将具有优先权。 使用 LESSBINFMT 单独显示 UTF-8 文件中的有问题的八位字节（截断序列的八位字节、完整但非最短形式序列的八位字节、无效八位字节和杂散尾随八位字节），以便于诊断 UTF-8 如何文件格式不正确。

## [提示](#__u63D0___u793A_)

-P 选项允许您根据自己的喜好定制提示。 提供给 -P 选项的字符串替换指定的提示字符串。 字符串中的某些字符被特殊解释。 提示机制较为复杂以提供灵活性，但普通用户无需了解构建个性化提示字符串的细节。

百分号后跟单个字符根据以下字符进行扩展：

%b\_X\_

替换为当前输入文件的字节偏移量。 b 后跟一个字符（如上面的 *X* 所示），它指定要使用其字节偏移量的行。 如果字符是 "t"，则使用显示中顶行的字节偏移量， "m" 表示使用中间行, "b" 表示使用底行， "B" 表示使用行就在底线之后， "j" 表示使用 -j 选项指定的 "target" 行。

%B

替换为当前输入文件的大小。

%c

替换为出现在屏幕第一列中的文本的列号。

%d\_X\_

替换为输入文件中一行的页码。 要使用的行由 *X* 确定，与 %b 选项一样。

%D

替换为输入文件中的页数，或等效地，输入文件中最后一行的页码。

%E

替换为编辑器的名称（来自 VISUAL 环境变量，如果未定义 VISUAL，则为 EDITOR 环境变量）。 请参阅下面对 LESSEDIT 功能的讨论。

%f

替换为当前输入文件的名称。

%F

替换为当前输入文件名称的最后一个组成部分。

%g

替换为当前输入文件的外壳转义名称。 当扩展字符串将在 shell 命令中使用时，这很有用，例如在 LESSEDIT 中

%i

替换为输入文件列表中当前文件的索引。

%l\_X\_

替换为输入文件中一行的行号。 要使用的行由 *X* 确定，与 %b 选项一样。

%L

替换为输入文件中最后一行的行号。

%m

替换为输入文件的总数。

%p\_X\_

根据字节偏移量替换为当前输入文件的百分比。 使用的行由 *X* 确定，与 %b 选项一样。

%P\_X\_

根据行号替换为当前输入文件的百分比。 使用的行由 *X* 确定，与 %b 选项一样。

%s

与 %B 相同。

%t

导致删除任何尾随空格。 通常用在字符串的末尾，但也可能出现在任何地方。

%T

通常扩展为 "file" 一词。 但是，如果使用 -t 选项通过标签列表查看文件，它会扩展为 "tag" 一词。

%x

替换为列表中下一个输入文件的名称。

如果任何项目未知（例如，如果输入是管道，则文件大小），则会打印一个问号。

提示字符串的格式可以根据特定条件进行更改。 问号后跟单个字符的作用类似于 "IF": 根据后面的字符，评估条件。 如果条件为真，则在问号和条件字符之后的任何字符（最多一个句点）都将包含在提示中。 如果条件为假，则不包括此类字符。 出现在问号和句点之间的冒号可用于建立 "ELSE": 当且仅当 IF 条件为假时，冒号和句点之间的任何字符都包含在字符串中。 条件字符（跟在问号后面）可能是：

?a

如果到目前为止提示中包含任何字符，则为真。

?b\_X\_

如果指定行的字节偏移量已知，则为真。

?B

如果当前输入文件的大小已知，则为真。

?c

如果文本水平移动（%c 不为零），则为真。

?d\_X\_

如果指定行的页码已知，则为真。

?e

如果在文件末尾则为真。

?f

如果有输入文件名（即输入不是管道）则为真。

?l\_X\_

如果指定行的行号已知，则为真。

?L

如果文件中最后一行的行号已知，则为真。

?m

如果有多个输入文件，则为真。

?n

如果这是新输入文件中的第一个提示，则为真。

?p\_X\_

如果基于字节偏移量的指定行的当前输入文件的百分比是已知的，则为真。

?P\_X\_

如果根据行号，指定行的当前输入文件的百分比是已知的，则为真。

?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";

如果这是文件中的第一个提示，则打印文件名，如果有多个输入文件，则打印 "file 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

下面是 = 命令生成的默认消息：

?f%f .?m(%T %i of %m) .?ltlines %lt-%lb?L/%L. . byte %bB?s/%s. ?e(END) :?pB%pB\\%..%t

提示扩展功能还用于另一个目的：如果定义了环境变量 LESSEDIT，则将其用作调用 v 命令时要执行的命令。LESSEDIT 字符串的扩展方式与提示字符串相同。LESSEDIT 的默认值为：

%E ?lm+%lm. %g

请注意，这将扩展为编辑器名称，后跟一个 + 和行号，然后是外壳转义的文件名。 如果您的编辑器不接受 "+linenumber" 语法，或者在调用语法上有其他差异，则可以更改 LESSEDIT 变量以修改此默认值。

## [安全](#__u5B89___u5168_)

当环境变量 LESSSECURE 设置为 1 时， *less* 在 "安全" 模式下运行。这意味着这些功能被禁用：

!

shell 命令

|

管道命令

:e

检查命令。

v

编辑命令

s -o

日志文件

-k

使用 lesskey 文件

-t

标签文件的使用

文件名中的元字符，例如 \*

文件名补全 (TAB, ^L)

Less 也可以编译为永久处于 "安全" 模式。

## [兼容更多](#__u517C___u5BB9___u66F4___u591A_)

如果环境变量 LESS\_IS\_MORE 设置为 1，或者如果程序通过名为 "more" 的文件链接调用，则 *less* 的行为（大部分）符合 POSIX "more" 命令规范。 在这种模式下，less 在以下方面表现不同：

-e 选项的工作方式不同。 如果未设置 -e 选项， *less* 的行为就像设置了 -e 选项一样。 如果设置了 -e 选项， *less* 的行为就像设置了 -E 选项一样。

-m 选项的工作方式不同。 如果未设置 -m 选项，则使用中提示符，并以字符串 "--More--" 为前缀。 如果设置了 -m 选项，则使用简短提示。

-n 选项的作用类似于 -z 选项。 -n 选项的正常行为在此模式下不可用。

-p 选项的参数被视为 *less* 命令而不是搜索模式。

LESS 环境变量被忽略，而使用 MORE 环境变量代替它。

## [环境变量](#__u73AF___u5883___u53D8___u91CF_)

环境变量可以像往常一样在系统环境中指定，也可以在 *lesskey*(1) 文件中指定。 如果环境变量定义在多个位置，则本地 lesskey 文件中定义的变量优先于系统环境中定义的变量，后者优先于系统范围 lesskey 文件中定义的变量。

COLUMNS

设置屏幕上的列数。优先于 TERM 变量指定的列数。 （但如果您有一个支持 TIOCGWINSZ 或 WIOCGETD 的窗口系统，则窗口系统对屏幕大小的想法优先于 LINES 和 COLUMNS 环境变量。）

EDITOR

编辑器的名称（用于 v 命令）。

HOME

用户主目录的名称（用于在 Unix 和 OS/2 系统上查找 lesskey 文件）。

HOMEDRIVE, HOMEPATH

如果未设置 HOME 变量（仅在 Windows 版本中），则 HOMEDRIVE 和 HOMEPATH 环境变量的连接是用户主目录的名称。

INIT

用户的 init 目录的名称（用于在 OS/2 系统上查找 lesskey 文件）。

LANG

用于确定字符集的语言。

LC\_CTYPE

用于确定字符集的语言。

LESS

自动传递给 *less* 的选项。

LESSANSIENDCHARS

可能结束 ANSI 颜色转义序列的字符（默认为 "m")。

LESSANSIMIDCHARS

可能出现在 ANSI 颜色转义序列中的 ESC 字符和结束字符之间的字符（默认为 "0123456789:;\[?!"'#%()\*+ "。

LESSBINFMT

用于显示不可打印、非控制字符的格式。

LESSCHARDEF

定义一个字符集。

LESSCHARSET

选择一个预定义的字符集。

LESSCLOSE

调用（可选）输入后处理器的命令行。

LESSECHO

lessecho 程序的名称（默认为 “lessecho”）。在 Unix 系统的文件名中，需要使用 lessecho 程序来扩展元字符，例如 \* 和 ?。

LESSEDIT

编辑器原型字符串（用于 v 命令）。请参阅提示下的讨论。

LESSGLOBALTAGS

-t 选项用于查找全局标记的命令的名称。 如果您的系统有 *global*(1) 命令，通常应该设置为 "global" 。 如果未设置，则不使用全局标签。

LESSHISTFILE

用于记住 *less* 调用之间的搜索命令和shell 命令的历史文件的名称。 如果设置为 "-" 或 "/dev/null", 则不使用历史文件。 默认值在 Unix 系统上为 "$HOME/.lesshst" ，在 DOS 和 Windows 系统上为 "$HOME/\_lesshst" ，在 OS/2 系统上为 "$HOME/lesshst.ini" 或 "$INIT/lesshst.ini"。

LESSHISTSIZE

保存在历史文件中的最大命令数。 默认值为 100。

LESSKEY

默认 *lesskey*(1) 文件的名称。

LESSKEY\_SYSTEM

默认系统范围的 *lesskey*(1) 文件的名称。

LESSMETACHARS

被 shell 视为 "metacharacters" 的字符列表。

LESSMETAESCAPE

在发送到 shell 的命令中的每个元字符之前添加 less 的前缀。 如果 LESSMETAESCAPE 是一个空字符串，包含元字符的命令将不会被传递到 shell。

LESSOPEN

调用（可选）输入预处理器的命令行。

LESSSECURE

在“安全”模式下运行较少。请参阅安全下的讨论。

LESSSEPARATOR

要在文件名完成中附加到目录名的字符串。

LESSUTFBINFMT

用于显示不可打印的 Unicode 代码点的格式。

LESS\_IS\_MORE

模拟 *more*(1) 命令。

LINES

设置屏幕上的行数。 优先于 TERM 变量指定的行数。 （但如果您有一个支持 TIOCGWINSZ 或 WIOCGETD 的窗口系统，则窗口系统对屏幕大小的想法优先于 LINES 和 COLUMNS 环境变量。）

MORE

在 *more* 兼容模式下运行时自动传递给 *less* 的选项。

PATH

用户的搜索路径（用于在 MS-DOS 和 OS/2 系统上查找 lesskey 文件）。

SHELL

用于执行的 shell ! 命令，以及扩展文件名。

TERM

正在运行 *less* 的终端类型。

VISUAL

编辑器的名称（用于 v 命令）。

## [参见](#__u53C2___u89C1_)

**lesskey**(1)

## [版权](#__u7248___u6743_)

版权所有 (C) 1984-2020 Mark Nudelman

less 是 GNU 项目的一部分，并且是免费软件。 您可以根据 (1) 自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它；或 (2) Less 许可证。 有关重新分发的更多详细信息，请参阅 less 分发中的文件 README。您应该以更少的价格收到一份 GNU 通用公共许可证的副本以及源代码；请参阅文件复制。 如果没有，请写信给自由软件基金会，地址为 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA。 您还应该收到一份较少许可证的副本；请参阅文件许可证。

less 分发是希望它有用，但没有任何保证；甚至没有对适销性或特定用途适用性的默示保证。 有关详细信息，请参阅 GNU 通用公共许可证。

## [作者](#__u4F5C___u8005_)

Mark Nudelman- 在 <https://github.com/gwsw/less/issues> 报告错误。- 有关更多信息，请参阅 less 主页- <http://www.greenwoodsoftware.com/less。>

Version 563: 13 Jun 2020


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://man.bsdcn.org/man1/more.1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
