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类似,但是支持向上翻页。less在打开文件之前不需要读取整个文件,所以 less打开大文件比vi之类的编辑器要快。
less的命令基于more和vi。命令前面可能有一个十进制数,在下面的描述中称为 N。该 数字由某些命令使用。
命令
SPACE 或 ^V 或 f 或 ^F
向下滚动N行,默认一屏(参考 -z)。
z 类似SPACE,但是当N已指定时,N就作为一屏的行数。
ESC-SPACE
类似SPACE,最后会滚动到只有最后一行,且最后一行在屏幕最上边。
ENTER 或 RETURN 或 ^N 或 e 或 ^E 或 j 或 ^J
向下滚动N行,默认1。
d 或 ^D 向下滚动N行,默认半屏。如果指定了 N,它将成为后续 d 和 u 命令的新默 认值。
b 或 ^B 或 ESC-v
向上滚动N行,默认一屏(参考 -z)。
w 类似 ESC-v,但如果指定了N,它就成为新的屏幕行数。
y 或 ^Y 或 ^P 或 k 或 ^K
向上滚动N行,默认1。
u 或 ^U 向上滚动N行,默认半屏。如果指定了 N,它将成为后续 d 和 u 命令的新默 认值。
J 类似 j,但是可以滚动到最后一行出现在屏幕最上的状态。
K 或 Y 类似 k, 但是可以滚动到第一行出现在屏幕最下的状态。
ESC-) 或 右箭头
向右滚动N个字符,默认半屏(参考 -#)。如果指定了 N,它将成为后续右 方向键和左方向键的新默认值。文字在滚动时,就像在执行 -S。
ESC-( 或 左箭头
向左滚动N个字符,默认半屏(参考 -#)。如果指定了 N,它将成为后续右 方向键和左方向键的新默认值。
ESC-} 或 ^右箭头
向右滚动来展示最长的行的最后内容。
ESC-{ 或 ^左箭头
向左滚动到第一列。
r 或 ^R 或 ^L
刷新屏幕。
R 刷新屏幕。丢弃任何缓冲中的输入。当这个文件在查看时发生变化,这个 选项有用。
F 向下滚动,到底之后继续读取。用来监控持续增加的文件的尾部。这个选项 和tail -f 相似。
ESC-F 类似 F,当搜索的内容找到时,终端的蜂鸣器会响,停止滚动。
g 或 < 或 ESC-<
跳到第N行,默认1。
G 或 > 或 ESC->
跳到第N行,默认最后一行。
ESC-G 等于 G,但如果没有指定 N 且输入是标准输入时,跳到当前缓冲的最后一 行。
p 或 % 跳到文件的 N% 的位置,N 从 0 到 100,可以有小数部分。
P 跳到第 N 个字节的位置。
{ 如果一个左大括号出现在屏幕顶行,这个命令会跳到对应的右大括号。这个 右大括号会出现在屏幕尾行。 如果顶行有多个左大括号,选择第N个。
} 如果一个右大括号出现在屏幕顶行,这个命令会跳到对应的左大括号。这个 左大括号会出现在屏幕顶行。 如果尾行有多个右大括号,选择第N个。
( 类似 {,但是作用于小括号。
) 类似 },但是作用于小括号。
[ 类似 {,但是作用于中括号。
] 类似 },但是作用于中括号。
ESC-^F 后接两个字符,类似 {,但是使用这两个字符作为开关括号。例如,"ESC ^F < >" 表示跳到匹配顶行< 的 >。
ESC-^B 后接两个字符,类似 },但是使用这两个字符作为开关括号。例如,"ESC ^B < >" 表示跳到匹配尾行> 的 <。
m 后接任何字母,标志第一个有这个字母的行。如果状态列被 -J 激活了,状 态列会标示这一行。
M 类似m,除了最后显示的行被标记而不是第一个展示的行。
' 后接任何字母,返回到先前用该字母标记的位置。后接另一个单引号,返 回到上一次执行长选项的操作的位置。后接^或$,跳到文件的头或尾。检 查新文件时会保留标记,因此 ' 命令可用于在输入文件之间切换。
^X^X 等于单引号。
ESC-m 后接字母,清除由该字母标识的标记。
/pattern 在文件中向下搜索包含该 pattern 的第 N 行。N 默认等于 1。pattern是一 个正则表达式。如果在模式的开头输入,某些字符是特殊的; 他们修改搜 索类型而不是成为 pattern 的一部分:
^N 或 !
搜索不匹配 pattern 的行。
^E 或 *
搜索多行。如果在当前文件没有匹配到,则继续搜索下一个在命令行列表中 出现的文件。
^F 或 @
从第一个文件的第一行开始搜索。
^K 当前匹配 pattern 的文字进行高亮显示。但光标不跳到第一个匹配的位置。
^R 不进行正则匹配。
?pattern 在文件中向上搜索包含该 pattern 的第 N 行。从尾行开始搜索。特殊字 符的作用和/pattern中的一致:
^N 或 !
搜索不匹配 pattern 的行。
^E 或 *
搜索多行。如果在当前文件没有匹配到,则继续搜索上一个在命令行列表中 出现的文件。
^F 或 @
从最后一个文件的最后一行开始搜索。
^K 当前匹配 pattern 的文字进行高亮显示。但光标不跳到第一个匹配的位置。
^R 不进行正则匹配。
ESC-/pattern
等于 "/*"。
ESC-?pattern
等于"?*"。
n 重复执行前一个搜索操作。
N 反向重复执行前一个搜索操作。
ESC-n 重复跨文件执行前一个搜索操作。
ESC-N 反向重复跨文件执行前一个搜索操作。
ESC-u 搜索高亮开关切换。
&pattern 只展示搜索匹配的行。如果pattern为空,展示所有行。特殊字符 的作用和/pattern中的一致:
^N 或 !
只展示不匹配 pattern 的行。
^R 不进行正则匹配。
:e [filename]
检查一个新文件。如果文件不存在,重新检查当前文件。百分号会被当前文件名 替换。井号符会被前一个检查的文件名替换。但是两个连续的百分号会被一个百 分号替换。这里允许你输入一个包括百分号的文件名。同样的,两个井号符会被 一个井号符替换。文件名是用命令行输入到文件名列表中,所以使用 :n 或 :p 可 以看到。如果文件名包含空格,需要在文件名外边加上双引号。
^X^V 或 E
等于 :e。
:n 检查下一个文件,如果指定 N,检查往后数第 N 个文件。
:p 检查前一个文件,如果指定 N,检查往前数第 N 个文件。
:x 检查第一个文件,如果指定 N,检查第 N 个文件。
:d 从文件列表中删除当前文件。
t 跳到下一个标签。
T 跳到上一个标签。
= 或 ^G 或 :f
打印当前文件的一些信息,包括文件名、行号、展示的最末行的字节偏移量。如 果可能,也会打印文件长度、行数、最后一行之前的内容占整个文件的百分比。
- 后接命令行选项字母之一,这个选项会改变设置,然后打印新设置的描述。如果 在 - 之后输入 ^P,只改变设置,不输出消息。如果选项字母有数字值(比如 -b 或 -h),或一个字符串值(比如 -P 或 -t),一个新的值可能在选项字母之后输 入。如果没有新值输入,一个描述当前设置的消息会被打印,没有设置改变。
-- 类似 - 选项,但是使用长选项。
-+ 后接命令行选项字母,重置选项为默认值,打印描述。这个选项对字符串值不生 效。
--+ 类似 -+ 选项,但是使用长选项。
-! 后接命令行选项字母,设置选项的相反值,打印描述。这个选项对字符串值不生 效。
--! 类似 -! 选项,但是使用长选项。
_ 后接命令行选项字母,设置不变,打印描述。
__ 类似 _ 选项,但是使用长选项。
+cmd 每次检查新文件时执行cmd。
V 打印版本信息。
q 或 Q 或 :q 或 :Q 或 ZZ
退出。
下边四个命令可能不可用,跟安装版本有关。
v 打开一个编辑器来编辑当前文件。这个编辑器可以用 VISUAL 或 EDITOR 配置, 默认为 vi。
! shell-command
打开一个 shell 执行给定的 shell 命令。百分号会被当前文件名替换。井号符会被 前一个检查的文件名替换。两个叹号执行上一个执行的 shell 命令。一个不接命令 的叹号打开一个新 shell。在 Unix 系统中,shell 由 SHELL 指定,默认 sh。
| <m> shell-command
<m> 代表任意标志字母。把一个输入文件的一部分从管道传给指定的 shell 命令。 这个部分是在 <m> 和当前屏幕内容之间。如果 <m> 是 ^ 或 $,指定的是文件的 头或尾。如果 <m> 是 . 或换行符,被送进管道的就是当前屏幕所有内容。
s filename
保存文件的输入。只在输入是管道时生效。
选项
下边是命令行选项。选项也可以用环境变量 LESS 配置。如果使用 sh,使用 LESS="-options"; export LESS 。命令行选项可以覆盖 LESS。使用 "-+" 可以把LESS 中存在的选项设置成默认值。一些选项比如 -k 或 -D 需要接一个字符串。字符串用 $ 标 记为结尾。如果 --use-backslash 选项出现在选项的前面,那么美元符号或反斜杠可以 通过在选项字符串前面加上反斜杠来按字面意思包含在选项字符串中。 如果 --use-backslash 选项无效,则不会对反斜杠进行特殊处理,并且无法在选项字符串中 包含美元符号。
-? 或 --help
展示帮助文档。
-a 或 --search-skip-screen
从屏幕底部开始向下搜索,从屏幕顶部开始向上搜索。
-A 或 --SEARCH-SKIP-SCREEN
从目标行的后边开始向下搜索,从目标行的前边开始向上搜索。
-bn 或 --buffers=n
设置每个文件使用的缓冲区空间大小,单位是kb。默认 64。-b 选项指定应为每个 文件使用 n kb 的缓冲区空间。 如果 n 为 -1,则缓冲区空间是无限的; 也就是 说,整个文件都可以读入内存。
-B 或 --auto-buffers
从管道读取数据时,缓冲区默认自动按需分配。大的数据会分配大的内存空间。 -B 会阻止自动分配,所以 64 kb 或 -b 选项指定的值会被分配。注意:可能会有错 误显示,因为只有最近一次的管道数据会被保存在内存中。
-c 或 --clear-screen
从顶行向下全屏重绘。 默认情况下,全屏重绘是通过从屏幕底部滚动来完成的。
-C 或 --CLEAR-SCREEN
等于 -c。
-d 或 --dumb
压缩终端迟钝时的报错信息。
-e 或 --quit-at-eof
到达文件最后时退出less。
-E 或 --QUIT-AT-EOF
第一次到达文件最后时退出less。
-f 或 --force
强制打开不规范的文件(目录或设备文件)。当打开二进制文件时压缩警告消 息。即使使用了 -f ,有些操作系统也不会打开目录。
-F 或 --quit-if-one-screen
如果文件可以在一屏显示完全,自动退出。
-g 或 --hilite-search
less 默认高亮显示所有匹配搜索命令的字符串。这个命令使 less 只高亮显示上一 次找到的匹配字符串。
-G 或 --HILITE-SEARCH
不高亮显示。
--old-bot
恢复到屏幕行为的旧底部。 如果在向下滚动时到达终端底部时没有正确包裹长 行,有时这可能是可取的。
--hn 或 --max-back-scroll=n
指定向上滚动的最大行数。 如果需要向上滚动超过 n 行,则屏幕将改为向下重新 绘制。 (如果终端没有向下滚动的能力,则隐含 -h0。)
-i 或 --ignore-case
忽略大小写。如果 pattern 里边有大写字母,那么这个选项就无效了。
-I 或 --IGNORE-CASE
类似 -i,但是只有 pattern 中有大写字母时才忽略大小写。
-jn 或 --jump-target=n
指定屏幕上的一行作为"target"。目标行是被搜索的 pattern 指定的,或者是跳到 指定行号的行、跳到一个百分比的位置、跳到一个标签位置。屏幕中的行可以用 数字指定,顶行是1,下一行是2,以此类推。可以用负数指定从底部向上数的行 数,底行是-1,以此类推。也可以用屏幕高度的分数指定,.5 是屏幕中间位置,.3 是从顶行往下的十分之三的位置。
-J 或 --status-column
在屏幕左侧展示一个状态列。状态列上显示匹配的行,以及标记的行。
-kfilename 或 --lesskey-file=filename
打开命名文件并将其解释为 lesskey 文件。可以指定多个 -k 选项。如果环境变 量 LESSKEY 和 LESSKEY_SYSTEM 已经设置,或者一个 lesskey 文件出现在 标准位置(参考 KEY BINDINGS),它也被用作一个 lesskey 文件。
-K 或 --quit-on-intr
当中断字符(^C)键入时,less 立刻退出。
-L 或 --no-lessopen
忽略环境变量 LESSOPEN(参考下边的输入预处理器部分)。也可以在less中设 置,但只会对设置之后打开的文件生效,当前文件不会生效。
-m 或 --long-prompt
使less以百分比形式详细提示(与more类似)。less 默认用冒号提示。
-M 或 --LONG-PROMPT
使 less 提示更多,比 more 更多。
-n or --line-numbers
不显示行号。
-N or --LINE-NUMBERS
显示行号。
-ofilename or --log-file=filename
使less在查看命名文件时将其输入复制到该文件。这仅在输入文件是管道而不是 普通文件时适用。如果文件已经存在,less将在覆盖它之前请求确认。
-Ofilename or --LOG-FILE=filename
类似 -ofilename,但在覆盖时不会提示确认。
如果未指定日志文件,则可以从less中使用 -o 和 -O 选项来指定日志文件。如果没有 文件名,他们只会报告日志文件的名称。
-ppattern or --pattern=pattern
使 less 从第一个匹配 pattern 的位置开始。
-Pprompt or --prompt=prompt
提供了一种根据喜好定制三种提示样式的方法。这个选项一般是被配置在环境变 量 LESS 中,这个选项可以是配置在 LESS 的最后,也可以以 $ 结尾。
-Ps 后接字符串,把默认提示修改为这个字符串。
-Pm 改变中等提示
-PM 改变长提示
-Ph 改变帮助界面的提示
-P= 改变 = 命令打印的消息
-Pw 在 F 命令中,改变等待数据时打印的消息
参考 提示 部分,获得更多信息。
-q or --quiet or --silent
如果滚动到文件的边缘,不能继续滚动时,阻止蜂鸣器鸣响(默认鸣响)。
-Q or --QUIET or --SILENT
无论什么情况,都阻止蜂鸣器鸣响。
-r or --raw-control-chars
展示 "原始" 控制字符。默认是使用插入符号展示控制字符。注意:在使用 -r 选项 时,less无法跟踪屏幕的实际外观(因为这取决于屏幕如何响应每种类型的控制 字符)。因此,可能会导致各种显示问题,例如在错误的位置拆分很长的行。
-R or --RAW-CONTROL-CHARS
与 -r 类似,但只有 ANSI“颜色”转义序列以“原始”形式输出。与 -r 不一样的是,屏 幕表现在大多数情况下正确维护。ANSI“颜色”转义序列的格式是:
ESC [ ... m
其中 ... 是 0 或 更多的颜色规格字符。为了跟踪屏幕外观,假定 ANSI 颜色转义 序列不会移动光标。通过设置环境变量 LESSANSIENDCHARS,你可以让 less 认为 m 以外的字符可以结束 ANSI 颜色转义字符。通过设置环境变量 LESSANSIMIDCHARS,你也可以让 less 认为标准字符以外的字符可以出现在 ESC和 m 之间。
-s or --squeeze-blank-lines
连续空行展示为单独空行。
-S or --chop-long-lines
比屏幕宽度长的行被截断。默认是在下一行显示余下的内容。
-ttag or --tag=tag
给文件打标签。
-Ttagsfile or --tag-file=tagsfile
指定使用标签文件,而不是使用"标签"。
-u or --underline-special
把退格键和回车键看作可打印字符。
-U or --UNDERLINE-SPECIAL
把退格键、tab键、回车键、格式字符 看作控制字符。也就是说,它们按照 -r 选 项的指定进行处理。
-V or --version
打印版本信息。
-w or --hilite-unread
在一次满屏向下移动操作之后临时高亮显示第一行。在使用 a g 或 p 命令后的目 标行也高亮显示。下一次移动时取消高亮。如果没有使用 -J,整行都会高亮,否 则只有状态行高亮。
-W or --HILITE-UNREAD
类似 -w,但是是在多于一行的向下移动之后。
-xn,... or --tabs=n,...
设置制表位。 如果只指定了一个 n,则制表位设置为 n 的倍数。 如果指定了多个 以逗号分隔的值,则在这些位置设置制表位,然后以与最后两个相同的间距继 续。 例如,-x9,17 将在 9、17、25、33 等位置设置制表符。 n 的默认值为 8。
-X or --no-init
禁止将 termcap 初始化和取消初始化字符串发送到终端。 如果取消初始化字符串 做了一些不必要的事情,比如清除屏幕,这有时是可取的。
-yn or --max-forw-scroll=n
指定要向下滚动的最大行数。 如果需要向下滚动超过 n 行,则重新绘制屏幕。 如果需要,可以使用 -c 或 -C 选项从屏幕顶部重新绘制。 默认情况下,任何向下 移动都会导致滚动。
-zn or --window=n or -n
修改默认滚动窗口尺寸为 n 行,默认是一整屏。z 和 w 命令也可以修改窗口尺 寸。如果 n 是负数,则指定当前屏幕尺寸减去 n 的行数。
-"cc or --quotes=cc
更改文件名引用字符。 如果你试图命名一个同时包含空格和引号字符的文件,这 可能是必要的。后接一个单字符,修改引用字符为这个单字符。包含空格的文件 名应该被这个字符包围,而不是双引号。后接两个字符,使文件名被第一个字符 和第二个字符包围(一左一右)。
-~ or --tilde
使文件结束之后的行展示为空行,而不是默认的 ~ 。
-# or --shift
指定左箭头和右箭头左右滚动的默认距离。如果是 0 ,滚动半屏。可以是 分数,.5是半屏,.3是十分之三屏。
--follow-name
一般来说,如果输入文件被 F 命令重命名了,less 会继续展示源文件。如果使用 这个命令,less 会重新打开文件。如果重新打开成功并且该文件与原始文件不同 (这意味着已创建一个与原始(现已重命名)文件同名的新文件),则 less 将显 示该新文件的内容。
--mouse
允许鼠标输入:鼠标滚轮滚动屏幕。点击鼠标可以在指定行设置 "#" 标记。滚轮 滚动行数可以使用 --wheel-lines 选项设置。
--MOUSE
类似 --mouse,滚动方向与滚轮相反。
--no-keypad
禁止将键盘初始化和取消初始化字符串发送到终端。 如果小键盘字符串使数字小 键盘以不良方式运行,这有时很有用。
--no-histdups
此选项更改行为,以便如果键入搜索字符串或文件名,并且相同的字符串已在历 史列表中,则现有副本会在添加新副本之前从历史列表中删除。 因此,给定的字 符串在历史列表中只会出现一次。 通常,一个字符串可能会出现多次。
--rscroll
此选项更改用于标记截断行的字符。 它可以像 LESSBINFMT 那样以两个字符的 属性指示符开头。 如果没有属性指示符,则使用突出。 如果设置为“-”,则不会标 记截断的行。
--save-marks
将标记保存在历史文件中,因此标记会在不同的 less 调用中保留。
--use-backslash
此选项更改了此选项之后的选项的解释。 在 --use-backslash 选项之后,选项字 符串中的任何反斜杠都将被删除,后面的字符将按字面意思使用。 这允许在选项 字符串中包含美元符号。
--wheel-lines=n
设置滚动鼠标滚轮并且 --mouse 或 --MOUSE 选项有效时要滚动的行数。 默认值 为 1 行。
-- “--”的命令行参数标志着选项参数的结束。 此后的任何参数都被解释为文件名。 这在查看名称以“-”或“+”开头的文件时很有用。
+ 如果命令行选项以 + 开头,则该选项的其余部分将被视为小于的初始命令。 例 如,+G 告诉less 从文件末尾而不是开头开始,而+/xyz 告诉它从文件中第一次出 现“xyz”开始。 作为一种特殊情况,+<number> 的作用类似于 +<number>g; 也 就是说,它从指定的行号开始显示(但是,请参阅上面“g”命令下的警告)。 如果 选项以 ++ 开头,则初始命令适用于正在查看的每个文件,而不仅仅是第一个文 件。 前面描述的 + 命令也可用于为每个文件设置(或更改)初始命令。
行编辑
在屏幕底部输入命令行时(例如,:e 命令的文件名,或搜索命令的模式),可以使用某 些键来操作命令行。 大多数命令在 [ 方括号 ] 中有一个替代形式,如果特定键盘上不存 在某个键,则可以使用该形式。 (请注意,以 ESC 开头的形式在某些 MS-DOS 和 Windows 系统中不起作用,因为 ESC 是行擦除字符。)这些特殊键中的任何一个都可 以通过在其前面加上“文字”字符来逐字输入,或者 ^V 或^A。 反斜杠本身也可以通过输 入两个反斜杠按字面意思输入。
左箭头 [ ESC-h ]
光标左移一位。
右箭头 [ ESC-l ]
光标右移一位。
^左箭头 [ ESC-b 或 ESC-左箭头 ]
光标左移一个单词。
^右箭头 [ ESC-w 或 ESC-右箭头 ]
光标右移一个单词。
HOME [ ESC-0 ]
光标移动到行首。
END [ ESC-$ ]
光标移动到行尾。
退格键
删除一位,或当命令行空白时取消命令。
DELETE 或 [ ESC-x ]
删除光标处的字符。
^退格键 [ ESC-退格键 ]
删除一个单词。
^DELETE [ ESC-X 或 ESC-DELETE ]
删除光标处的单词。
上箭头 [ ESC-k ]
显示上一个命令。如果先输入一些文字再点击上箭头,找到上一个以这些文字开 头的命令。
下箭头 [ ESC-j ]
显示下一个命令。如果先输入一些文字再点击上箭头,找到下一个以这些文字开 头的命令。
TAB
完成光标左侧的部分文件名。 如果它匹配多个文件名,则将第一个匹配项输入命 令行。 重复的 TAB 将循环通过其他匹配的文件名。 如果完成的文件名是目录, 则在文件名后附加“/”。 (在 MS-DOS 系统上,附加了“\”。)环境变量 LESSSEPARATOR 可用于指定要附加到目录名的不同字符。
BACKTAB [ ESC-TAB ]
类似 TAB,反向匹配文件名。
^L 完成光标左侧的部分文件名。 如果它匹配多个文件名,则所有匹配项都会输入命 令行(如果它们适合)。
^U(Unix 和 OS/2) 或 ESC(MS-DOS)
删除整个命令行,如果命令行为空,则取消该命令。 如果您已将 Unix 中的 linekill字符更改为 ^U 以外的其他字符,则使用该字符而不是 ^U。
^G 删除整个命令行并返回到主提示符。
键绑定
你可以通过使用程序 lesskey 创建一个 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_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。
输入预处理器
你可以为 less 定义一个“输入预处理器”。 在less 打开文件之前,它首先让你的输入预 处理器有机会修改文件内容的显示方式。 输入预处理器只是一个可执行程序(或 shell 脚本),它将文件的内容写入另一个文件,称为替换文件。 然后显示替换文件的内容 来代替原始文件的内容。 但是,它在用户看来就像原始文件被打开一样; 也就是说, less 会将原始文件名显示为当前文件的名称。
输入预处理器接收一个命令行参数,即用户输入的原始文件名。 它应该创建替换文 件,完成后,将替换文件的名称打印到其标准输出。 如果输入预处理器不输出替换文 件名,则 less 像往常一样使用原始文件。 查看标准输入时不会调用输入预处理器。 要 设置输入预处理器,请将 LESSOPEN 环境变量设置为将调用输入预处理器的命令行。 此命令行应包含一次出现的字符串“%s”,当调用输入预处理器命令时,该字符串将被文 件名替换。
当less 关闭以这种方式打开的文件时,它将调用另一个程序,称为输入后处理器,该程 序可以执行任何所需的清理操作(例如删除由LESSOPEN 创建的替换文件)。该程序 接收两个命令行参数,用户输入的原始文件名和替换文件的名称。 要设置输入后处理 器,请将 LESSCLOSE 环境变量设置为将调用输入后处理器的命令行。它可能包含两 次出现的字符串“%s”; 第一个替换为文件的原始名称,第二个替换为 LESSOPEN 输 出的替换文件的名称。
例如,在许多 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 的前两个字符是竖线和短划线 (|-) 或两个竖线和短划线 (||-),则输入管道 用于标准输入以及其他文件。 同样,在这种情况下,破折号不被视为输入管道命令的 一部分。
使用以下文件来设置默认预处理器:
/etc/profile.d/less.sh
/etc/profile.d/less.csh
这些文件将 /usr/bin/lesspipe.sh 设置为默认过滤器。 可以在 ~/.lessfilter 中指定用户定 义的过滤器。 这个文件应该设置一个执行位并且只接受一个参数,它代表一个文件 名。 如果用户定义的过滤器处理文件,则应返回零。 否则 ~/.lessfilter 会尝试处理该 文件。国家字符集
输入文件中包括三种字符:
普通字符
可以直接显示。
控制字符
不能直接显示,但预计会出现在普通文本文件中(例如退格和制表符)。
二进制字符
不能直接显示,也不会出现在文本文件中。
“字符集”只是对哪些字符被视为正常、控制和二进制的描述。 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 服务使用的 EBCDIC 字符集。 这是 latin1 的 EBCDIC 类 似物。 通过在您的环境中设置 LESSCHARSET=IBM-1047 或 LC_CTYPE=en_US 可以获得类似的结果。
koi8-r 选择俄罗斯字符集。
next 选择适合NEXT计算机的字符集。
utf-8 选择 ISO 10646 字符集的 UTF-8 编码。 UTF-8 的特殊之处在于它支持输入 文件中的多字节字符。 它是唯一支持多字节字符的字符集。
windows 选择适合微软windows(cp 1251)的字符集。
在极少数情况下,可能需要减少使用 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.7b9.8b8.17b3.3b9.7b9.8b8.6b10.b.b.b. IBM-1047 4cbcbc3b9cbccbccbb4c6bcc5b3cbbc4bc4bccbc191.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 样式的转义序列(一个 % 后跟 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 文件格式错误。
提示符
-P 选项允许你根据自己的喜好定制提示。 提供给 -P 选项的字符串将替换指定的提示字 符串。 字符串中的某些字符被特殊解释。 提示机制比较复杂,提供了灵活性,但是普 通用户不需要了解构建个性化提示字符串的细节。
后跟单个字符的百分号根据以下字符进行扩展:
%bX 替换为当前输入文件的字节偏移量。 b 后面跟着一个字符(如上所示的 X),它指定要使用其字节偏移量的行。 如果字符是“t”,则使用显示中顶行 的字节偏移量,“m”表示使用中行,“b”表示使用底行,“B”表示使用行 就在底 线之后,“j”表示使用“目标”行,如 -j 选项所指定。
%B 由当前输入文件替换。
%c 由出现在屏幕中的第一列的列号替换。
%dX 由输入文件中一行的页码替换。 要使用的行由 X 决定,与 %b 选项一样。
%D 由输入文件的页数替换。
%E 替换为编辑器的名称(来自 VISUAL 环境变量,如果未定义 VISUAL,则来 自EDITOR 环境变量)。
%f 由当前输入文件名替换。
%F 替换为当前输入文件名称的最后一部分。
%g 由当前输入文件的shell转义名称替换。 当扩展字符串将用于 shell 命令中 时,这很有用,例如在 LESSEDIT 中。
%i 由当前文件在输入文件列表中的索引替换。
%lX 替换为输入文件中一行的行号。 要使用的行由 X 决定,与 %b 选项一样。
%L 替换为输入文件的最后一行的行号。
%m 替换为输入文件个数。
%pX 根据字节偏移量替换为当前输入文件的百分比。 使用的行由 X 决定,与 %b选项一样。
%PX 根据字行号替换为当前输入文件的百分比。 使用的行由 X 决定,与 %b 选项一样。
%s 等于%B。
%t 删除任何尾随空格。 通常用在字符串的末尾,但也可能出现在任何地方。
%T 通常扩展为“文件”一词。 但是,如果使用 -t 选项通过标签列表查看文件, 它会扩展为“标签”一词。
%x 替换为输入文件列表中的下一个文件名。
如果有任何项目未知(例如,如果输入是管道,则文件大小),则会打印一个问号。
提示字符串的格式可以根据某些条件进行更改。 问号后跟单个字符的作用类似于“IF”: 根据后面的字符,评估条件。 如果条件为真,则在问号和条件字符之后的任何字符 (最多一个句点)都包含在提示中。 如果条件为假,则不包括此类字符。 出现在问号 和句点之间的冒号可用于建立“ELSE”:当且仅当 IF 条件为假时,冒号和句点之间的任 何字符都包含在字符串中。 条件字符(跟在问号后面)可能是:
?a 如果提示符中包括任意字符,为真。
?bX 如果指定行的字符偏移量已知,为真。
?B 如果当前输入文件大小已知,为真。
?c 如果文本水平移动,为真。(%c不是0)
?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";
如果这是文件中的第一个提示,则打印文件名,如果有多个输入文件,则打印“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
请注意,这将扩展为编辑器名称,后跟一个 + 和行号,然后是 shell 转义的文件名。 如 果你的编辑器不接受“+linenumber”语法,或者在调用语法上有其他差异,则可以更改 LESSEDIT 变量以修改此默认值。
安全
当环境变量 LESSSECURE 设置为 1 时,less 会以“安全”模式运行。 这意味着这些功 能被禁用:
! shell 命令
| 管道命令
:e 检查命令
v 编辑命令
s -o 日志文件
-k lesskey 文件的使用
-t 标签文件的使用
文件名中的元字符,例如 *
文件名补全 (TAB, ^L)
less 也可以编译为永久处于“安全”模式。
兼容 more
如果环境变量 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 环境变量。
环境变量
环境变量可以像往常一样在系统环境中指定,也可以在 lesskey 文件中指定。 如果在 多个地方定义了环境变量,则本地lesskey文件中定义的变量优先于系统环境中定义的 变量,后者优先于系统范围lesskey文件中定义的变量。
COLUMNS
设置屏幕上的列数。 优先于 TERM 变量指定的列数。 (但如果您有一个支 持TIOCGWINSZ 或 WIOCGETD 的窗口系统,则窗口系统的屏幕尺寸概念 优先于LINES 和 COLUMNS 环境变量。)
EDITOR 编辑姓名(和 v 命令使用)
HOME 用户家目录的名称(在Unix 和 OS/2 系统中寻找lesskey 文件)
HOMEDRIVE,HOMEPATH
如果未设置 HOME 变量,则 HOMEDRIVE 和 HOMEPATH 环境变量的串 联是用户主目录的名称。(仅在 Windows 版本中)
INIT 用户初始化目录名称(在 OS/2 系统中寻找lesskey 文件)
LANG 决定字符集的语言。
LC_CTYPE
决定字符集的语言。
LESS 自动传给 less 的选项。
LESSANSIENDCHARS
可以结束 ANSI 颜色转义序列的字符(默认为“m”)。
LESSANSIMIDCHARS
可能出现在 ANSI 颜色转义序列中的 ESC 字符和结束字符之间的字符,默 认为“0123456789:;[?!”'#%()*+”。
LESSBINFMT
展示不能打印字符、非控制字符的格式。
LESSCHARDEF
定义一个字符集。
LESSCLOSE
选择一个预定义的字符集。
LESSECHO
lessecho 程序的名称(默认为“lessecho”)。 需要使用lessecho 程序来 扩展Unix 系统上文件名中的元字符,例如* 和?。
LESSEDIT
编辑器原型字符串(用于 v 命令)。 请参阅提示下的讨论。
LESSGLOBALTAGS
-t 选项用于查找全局标记的命令的名称。 如果您的系统有 global 命令, 通常应该设置为“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 文件的名称。
LESSKEY_SYSTEM
默认系统范围的 lesskey 文件的名称。
LESSMETACHARS
被 shell 认定为元字符的字符的列表。
LESSMETAESCAPE
将在发送到 shell 的命令中的每个元字符之前添加的前缀。 如果 LESSMETAESCAPE 是一个空字符串,则包含元字符的命令将不会传递 给 shell。
LESSOPEN
触发(可选的)输入预处理器的命令行。
LESSSECURE
在安全模式运行less。参考安全。
LESSSEPARATOR
在文件名补全中附加到目录名的字符串。
LESSUTFBINFMT
展示不可打印的 unicode 代码点的格式。
LESS_IS_MORE
模拟 more 命令。
LINES 设置屏幕上的行数。 优先于 TERM 变量指定的行数。 (但如果您有一个 支持 TIOCGWINSZ 或 WIOCGETD 的窗口系统,则窗口系统的屏幕尺寸 概念优先于 LINES 和 COLUMNS 环境变量。)
MORE 在兼容 more 模式下运行时自动传递给 less 的选项。
PATH 用户的搜索路径(在 MS-DOS 和 OS/2 系统中寻找 lesskey 文件)。
SHELL 用于执行 ! 命令,以及扩展文件名。
TERM 终端类型。
VISUAL 编辑姓名(和 v 命令使用)。