摘要:
对 less 的各种用法做一次整顿,顺便也能够当作参考手册。
<!--MORE-->
引子
less
是一个 Linux 命令行实用程序,用于显示文件内容,它反对管道输出,所以可能被用于接管前一命令的规范输入病进行全屏展现。
less
是 more
的加强版本,它具备更全面的全文件导航能力,以及全文搜寻能力。less
在大文件关上方面有很好的优化,在即时显示、疾速加载等方面性能突出。less
还反对一次性关上多个文件,它将会逐个地显示这些文件的内容。
取名为 less
也因为一句名人名言:less is more
。这句名言曾经哲学化了。
根本应用
less 的根本应用办法有两种,一是关上一个或多个文件:
less /var/log/messages
二是作为管道操作的末端:
ps aux|less
在治理操作时,可能会经常用到 tail -f
等价的实时刷新模式:
dmsg|less +F
被嵌入地、隐含地应用
在很多场合中 less 被通过 PAGER 环境变量而悄悄地应用。
一个典型的例子是 man 命令。当:
man printf
时,printf 的手册页将被显示在 less 的浏览界面中,如同这样:
浏览界面操作
在 less 显示的浏览界面中,按键即命令。
你能够随时按下 h
显示帮忙屏,q
将退出帮忙屏。
其它最罕用的按键命令有:
按键 | 指令 |
---|---|
SPACE | 下一页 |
d | 下半页 |
b | 前一页 |
u | 前半页 |
v | 编辑内容 |
j 或 ↵ Enter | 下ㄧ行 |
k | 前ㄧ行 |
Home | 文件顶部 |
End | 文件结尾 |
F | 追随模式(供日志应用)。Follow Mode (for logs). Interrupt to abort. |
g 或 < | 第一行 |
G 或 > | 最初ㄧ行 |
⟨n⟩ G | 跳到第⟨n⟩ 行 |
/⟨text⟩ | 向前搜寻⟨text⟩ 。文字会被视为正则表达式。 |
?⟨text⟩ | 如同/,但为向后搜寻。 |
n | 下一个合乎的搜寻后果 |
N | 上一个合乎的搜寻后果 |
Escu | 敞开合乎突显(请见-g 命令行选项) |
-⟨c⟩ | 切换选项⟨c⟩ ,例如-i会切换是否要在搜寻时疏忽大小写 |
m⟨c⟩ | 设置标记⟨c⟩ |
'⟨c⟩ | 跳到标记⟨c⟩ |
= 或 Ctrl+G | 文件信息 |
:n | 下一个文件 |
:p | 上一个文件 |
h | 阐明。这会应用less 显示,q来到。 |
q | 来到 |
稍后键盘一节中咱们会残缺地介绍全副可用的按键命令。
搜寻
在 less 的浏览界面中,底部行被称作状态命令行。如果你在界面中按键,则该行的状态提醒临时被暗藏,带有 :
提示符的命令行输出会被显示。
当你按下 /
进入搜寻状态时,状态命令行期待你持续键入 pattern。
你能够在搜寻时应用正则式 pattern。
反复上一次搜寻是 n
。
如果你键入 -J
序列,那么浏览界面左侧将显示一列垂直的状态栏,而 pattern
匹配的行在这个状态栏中会有显示:
标记(Mark)
标记是一个字母,大小写敏感。标记等同于咱们在 Visual Studio Code 这样的图形化文字编辑器中的书签。
在浏览界面按下 ma 按键序列,m
命令将会为你的以后浏览地位建设一个名为 a
的标记。稍后你能够应用 'a
返回到这个地位。
如果你键入 -J
序列,那么浏览界面左侧将显示一列垂直的状态栏,而 a
标记在这个状态栏中会有显示:
选项
选项既能够从命令行指定,也能够在 less 浏览界面中通过前缀字符序列 -
或 --
间接键入和进行翻转。
例如你能够键入 -?
来显示帮忙屏(只管 h
来得更简便)。
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 容许从命令行间接键入命令,应用 +
前缀即可,所以 +F
代表着进入滚动刷新模式,例如:
less +F /var/log/messages
留神你依然能够应用 less 的命令行专有的选项,例如 -F
代表着文件内容不够一屏时立刻退出 less。
如果你应用了 ++
前缀,那么该命令将会被主动利用到每一个文件。
less
能够一次性关上多个文件并顺次显示。
次要的命令行选项
无效的命令行专有选项大体上如下表(因为形容文字很简略故保留原文):
-? ........ --help Display help (from command line). -a ........ --search-skip-screen Search skips current screen. -A ........ --SEARCH-SKIP-SCREEN Search starts just after target line. -b [N] .... --buffers=[N] Number of buffers. -B ........ --auto-buffers Don't automatically allocate buffers for pipes. -c ........ --clear-screen Repaint by clearing rather than scrolling. -d ........ --dumb Dumb terminal. -D [xn.n] . --color=xn.n Set screen colors. (MS-DOS only) -e -E .... --quit-at-eof --QUIT-AT-EOF Quit at end of file. -f ........ --force Force open non-regular files. -F ........ --quit-if-one-screen Quit if entire file fits on first screen. -g ........ --hilite-search Highlight only last match for searches. -G ........ --HILITE-SEARCH Don't highlight any matches for searches. -h [N] .... --max-back-scroll=[N] Backward scroll limit. -i ........ --ignore-case Ignore case in searches that do not contain uppercase. -I ........ --IGNORE-CASE Ignore case in all searches. -j [N] .... --jump-target=[N] Screen position of target lines. -J ........ --status-column Display a status column at left edge of screen. -k [file] . --lesskey-file=[file] Use a lesskey file. -K --quit-on-intr Exit less in response to ctrl-C. -L ........ --no-lessopen Ignore the LESSOPEN environment variable. -m -M .... --long-prompt --LONG-PROMPT Set prompt style. -n -N .... --line-numbers --LINE-NUMBERS Don't use line numbers. -o [file] . --log-file=[file] Copy to log file (standard input only). -O [file] . --LOG-FILE=[file] Copy to log file (unconditionally overwrite). -p [pattern] --pattern=[pattern] Start at pattern (from command line). -P [prompt] --prompt=[prompt] Define new prompt. -q -Q .... --quiet --QUIET --silent --SILENT Quiet the terminal bell. -r -R .... --raw-control-chars --RAW-CONTROL-CHARS Output "raw" control characters. -s ........ --squeeze-blank-lines Squeeze multiple blank lines. -S ........ --chop-long-lines Chop (truncate) long lines rather than wrapping. -t [tag] .. --tag=[tag] Find a tag. -T [tagsfile] --tag-file=[tagsfile] Use an alternate tags file. -u -U .... --underline-special --UNDERLINE-SPECIAL Change handling of backspaces. -V ........ --version Display the version number of "less". -w ........ --hilite-unread Highlight first new line after forward-screen. -W ........ --HILITE-UNREAD Highlight first new line after any forward movement. -x [N[,...]] --tabs=[N[,...]] Set tab stops. -X ........ --no-init Don't use termcap init/deinit strings. -y [N] .... --max-forw-scroll=[N] Forward scroll limit. -z [N] .... --window=[N] Set size of window. -" [c[c]] . --quotes=[c[c]] Set shell quote characters. -~ ........ --tilde Don't display tildes after end of file. -# [N] .... --shift=[N] Horizontal scroll amount (0 = one half screen width) ........ --no-keypad Don't send termcap keypad init/deinit strings. ........ --follow-name The F command changes files if the input file is renamed. ........ --use-backslash Subsequent options use backslash as escape char.
罕用选项
其中或者会被经常用到的可能有:
选项 | 能力 |
---|---|
-X ........ --no-init | 不应用 termcap 的 init/deinit 性能。退出 less 时不清屏。 |
-x [N[,...]] --tabs=[N[,...]] | 设置 TAB 字符的显示宽度 |
-n -N .... --line-numbers --LINE-NUMBERS | 显示/不显示行号。行号被显示在状态命令行中 |
-m -M .... --long-prompt --LONG-PROMPT | 切换状态命令行的提示符的格调 |
-J ........ --status-column | 在左侧显示一列垂直的状态行,搜寻后果行能够在这一列提供一个标记显示 |
-F ........ --quit-if-one-screen | 如果内容显示有余一屏则立刻退出 less |
-e -E .... --quit-at-eof --QUIT-AT-EOF | 当首次到达文件结尾地位时立刻退出 less |
状态命令行有两种格调:short, medium。前者显示一个 :
提示符,后者显示一系列文档状态信息如行号、显示地位百分比等等。
如果在浏览界面中应用 -N
,则行号会被显示在状态命令行中。
如果在命令行应用了 -N
,那么行号能够被显示在每一行的左侧。对于:
less -N /var/log/syslog
会有:
键盘
快捷键(less
)
在手册页浏览界面中,能够应用快捷键来帮忙浏览。
因为手册页的显示是应用操作系统 Shell 环境中的默认 PAGER 来实现的,所以快捷键遵循相应 PAGER 的性能映射。
大多数零碎中当初默认采纳 less
作为默认 PAGER,因而上面介绍 less
快捷键,但针对 manpage 修改形容文字。
基本操作
按键 | 能力 |
---|---|
h | 显示帮忙屏幕 |
q | 退出 |
e ^E J ^N CR | 后退一行(或 N 行) |
y ^Y k ^K ^P | 后退一行(或 N 行) |
f ^F ^V SPACE | 后退一屏 |
b ^B ESC-v | 后退一屏 |
z | 后退一屏(设置屏高为 N) |
w | 后退一屏(设置屏高为 N) |
ESC-SPACE | 后退一屏,在文末容许上滚 |
d ^D | 后退半屏 |
u ^U | 后退半屏 |
ESC-) RightArrow | 向右卷动半屏 |
ESC-( LeftArrow | 向左卷动半屏 |
ESC-} ^RightArrow | 向右卷动到最右侧 |
ESC-{ ^LeftArrow | 向左卷动到第一列 |
F | 继续滚动后退,如同 tail -f 那样 |
ESC-F | 继续滚动后退,但在查找关键字匹配时进行滚动 |
r ^R ^L | 从新绘制屏幕 |
R | 重绘屏幕,废除曾经缓存的输出 |
带有 N
的命令,容许 N
cmd
的输出办法。
以 f
命令为例,简略地键入 f
则屏幕向下卷滚,内容上移一行;但你能够键入 31f
使得内容一次性地向上滚动 31 行。与其相同的是 b
命令,能够使屏幕向上卷滚,内容下移一行。
F 命令具备即时刷新文件内容的能力,它相当于增强版的 tail -f
性能,岂但能够随时刷新和显示最新的文件内容,也可能临时进行刷新,在已有的内容中导航和检索,而且还能持续再次地应用 F 进入即时刷新的状态。
搜寻
按键 | 能力 |
---|---|
/pattern | 向前搜寻关键词 pattern |
?pattern | 向后搜寻关键词 pattern |
n | 反复上一次搜寻(反复 N 次) |
N | 反向地反复上一次搜寻 |
ESC-n | 反复上一搜寻,容许逾越多个文件 |
ESC-N | 反复上一搜寻,反向,容许逾越多个文件 |
ESC-u | 放弃、还原、翻转搜寻高亮状态 |
&pattern | 只显示匹配行文字 |
一个 pattern
能够由以下按键(ASCII字符)进行前缀润饰:
按键 | 能力 |
---|---|
^N or ! | 搜寻非匹配行 |
^E or * | 搜寻多个文件(越过以后主题的文件开端) |
^F or @ | 从第一个文件(/ )或者最初一个文件(? )开始搜寻 |
^K | 高亮匹配文字,但不挪动(放弃以后浏览地位不变) |
^R | 不应用正则式 |
跳转
按键 | 能力 |
---|---|
g < ESC-< | 文件第一行(或第 N 行) |
G > ESC-> | 文件最初一行(或最初第 N 行) |
p % | 转到文件开始(或者按百分比定位到 N) |
t | 转到下一个标记(反复 N 次) |
T | 转到前一个标记(反复 N 次) |
[ ( { | 查找闭括号 } ) ] |
} ) ] | 查找开括号 [ ( { |
ESC-^F (c1) (c2) | 查找闭括号 (c2) |
ESC-^B (c1) (c2) | 查找开括号 (c1) |
g 这样的按键,在浏览界面能够间接失效。但你也能够间断按键,例如 1 3 g 能够转到第 13 行。
按键 | 能力 |
---|---|
m<letter> | 标记以后地位为 <letter> |
'<letter> | 跳转到前一个标记地位(以 <letter> 为索引) |
'' | 跳转到前一个标记地位 |
^X^X | 等同于 ' |
一个标记地位(mark)是一个大写字母或者小写字母。另外,上面是预约义的标记地位:
^
文件开始$
文件结尾
切换文件
按键 | 能力 |
---|---|
:e [file] | 装载一个新文件 |
^X^V | 等同于 :e |
:n | 列表中下一个(后 N 个)文件 |
:p | 列表中上一个(上 N 个)文件 |
:x | 列表中第一个(第 N 个)文件 |
:d | 从命令行列表中删除以后文件 |
= ^G :f | 打印以后文件名 |
杂项
按键 | 能力 | |
---|---|---|
-<flag> | 翻转一个命令行选项 | |
--<name> | 翻转一个选项 | |
_<flag> | 显示一个命令行选项 | |
__<name> | 显示一个选项 | |
+cmd | 每当载入解释一个新文件时,执行 less 命令 cmd | |
!command | 执行 Shell 命令 command | |
\ | Xcommand | 管道操作,从以后地位和标记地位 X 到 Shell 命令 command |
s file | 保留输出到文件 | |
v | 编辑以后文件(应用 $VISUAL 或 $EDITOR ) | |
V | 打印 less 版本号 |
环境变量
PAGER
less
当初是大多数 Linux 发行版的 PAGER 默认值。因而当 PAGER 没有显式设定时,零碎总是应用它。
export PAGER=less
LESS
你能够为 less
指定预设的命令行选项,例如:
LESS="-X"; export LESS
这使得 less 退出之后不会清屏。
行编辑
less 浏览界面中,按键输出会显示在屏幕最上面一行,同时进入行编辑模式。有时候你能够像 vi 一样按下 :
进入到命令的行编辑模式。
上面是这个行编辑的键盘操作方法(因为形容文字很简略故保留原文)。
RightArrow ..................... ESC-l ... Move cursor right one character. LeftArrow ...................... ESC-h ... Move cursor left one character. ctrl-RightArrow ESC-RightArrow ESC-w ... Move cursor right one word. ctrl-LeftArrow ESC-LeftArrow ESC-b ... Move cursor left one word. HOME ........................... ESC-0 ... Move cursor to start of line. END ............................ ESC-$ ... Move cursor to end of line. BACKSPACE ................................ Delete char to left of cursor. DELETE ......................... ESC-x ... Delete char under cursor. ctrl-BACKSPACE ESC-BACKSPACE ........... Delete word to left of cursor. ctrl-DELETE .... ESC-DELETE .... ESC-X ... Delete word under cursor. ctrl-U ......... ESC (MS-DOS only) ....... Delete entire line. UpArrow ........................ ESC-k ... Retrieve previous command line. DownArrow ...................... ESC-j ... Retrieve next command line. TAB ...................................... Complete filename & cycle. SHIFT-TAB ...................... ESC-TAB Complete filename & reverse cycle. ctrl-L ................................... Complete filename, list all.
参考
man less
- less (Unix) - Wikipedia)