less
命令允许你浏览文本文件,每次显示一屏内容。乍一看,这似乎是 Linux 中最简单的命令之一,但实际上它的功能远比表面看起来的要强大。
less
的历史
在 Linux 和 Unix 世界中,一切都有其渊源,这里并非双关。 less
程序起源于 more
程序,后者最初在 1978 年随 3.0 版本的 伯克利软件发行版 Unix (3.0BSD) 发布。 more
允许你逐页浏览文本文件,每次显示一屏内容。
需求是发明之母,more
的早期版本无法向后滚动文件,这促使 Mark Nudelman 开发 less
并解决了这个问题。这项工作始于 1983 年,第一个版本于 1985 年在他所在的公司之外发布。截至 2019 年 10 月,他仍然是 less
的维护者。
难道有不使用 less
的 Linux 用户吗?即使他们没有直接使用它来浏览文本文件,他们很可能也使用了 man
命令。man
在后台调用 less
来显示手册页。
这是一个功能强大的命令,其中隐藏着许多技巧。
为何 less
比 more
好
多年来,less
的功能不断增强。它拥有数量惊人的命令行选项和应用程序内快捷键。快速比较一下less
的手册页和more
的手册页,你就会发现 less
绝对优于 more
。
虽然 more
已经克服了最初无法向后翻页的缺陷,但它仍然不能通过管道输入进行向后翻页。而 less
可以做到这一点。
凭借其在文件导航、查看多个文件、搜索文本、添加和返回书签以及处理管道输入方面的灵活性,less
完胜。选择 less
而不是 more
。
使用 less
读取文件
要在 less
中加载文件,只需在命令行中提供文件名:
less Dr-Jekyll-and-Mr-Hyde-001.txt
文件已加载并显示。文件的顶部(或“开头”)显示在终端窗口中。你可以使用鼠标滚轮在文本中前后滚动。
在键盘上,使用空格键或 Page Down 键在文本中向前移动一屏内容。
Page Up 键会在文件中向后移动(朝向文件的“开头”)。 Home 和 End 键将分别直接将你带到文本文件的开头和结尾。
文件名显示在屏幕的左下角。当你开始在文件中移动时,底线会被清除。它用于显示消息并输入命令。
按“q”退出 less
。
显示行号
要为文本文件的行编号,请使用 -N
(行号) 选项。
less -N Dr-Jekyll-and-Mr-Hyde-001.txt
行号有助于你回到日志文件或其他非标准文本中的特定行或部分。
在 less
中搜索
要搜索文件的文本,请按“/”键,然后输入你的搜索词组。搜索区分大小写。你的搜索词组显示在屏幕的底部。点击“Enter”执行搜索。
在此示例中,搜索词是“Enfield”,你可以在屏幕底部看到。
搜索从当前页面到文本文件的末尾进行。要搜索整个文件,请在搜索前移至文件顶部。
如果没有匹配项,系统会通知你。如果找到匹配项,则屏幕将移动以显示找到的项目。
要查找下一个匹配项,请按“n”。要搜索上一个匹配项,请按“N”。
要从文件中的当前位置向后搜索到文件的开头,请按“?” 键并输入你的搜索词。要查找下一个匹配项,请按“n”。要搜索上一个匹配项,请按“N”。
请注意,当你向后搜索时,下一个匹配项(用“n”找到)是下一个更靠近文件顶部的项,上一个匹配项的“N”查找更接近文件底部的匹配项。换句话说,当你向后搜索时,“n”和“N”会反转它们的搜索方向。
打开带有搜索词的文件
你可以使用 -p
(模式)选项使 less
搜索文本文件并找到第一个匹配项。然后它将显示包含匹配搜索项的页面,而不是文件的第一页。当然,除非在文件的第一页上找到了搜索项。
请注意,-p
和搜索词之间没有空格。
less -pEnfield Dr-Jekyll-and-Mr-Hyde-001.txt
文件显示时会突出显示第一个匹配的搜索词。
less
导航:最有用的按键
使用这些按键来移动和搜索文本文件。
向前移动一行:向下箭头、Enter、e 或 j
向后移动一行:向上箭头、y 或 k
前进一页:空格键或 Page Down
向后移动一页:Page Up 或 b
向右滚动:右箭头
向左滚动:左箭头
跳转到文件顶部:Home 或 g
跳转到文件末尾:End 或 G
跳转到特定行:键入行号,然后按“g”
跳转到文件的百分比位置:键入百分比,然后按“p”或“%”。 (你甚至可以输入十进制值,例如,要跳到文件的 27.2%,输入“27.2”,然后按“p”或“%”。为什么要使用小数?确实不知道。)
向前搜索:点击“/”并输入你的搜索,例如“/Jekyll”,然后按 Enter
向后搜索:点击“?” 并输入你的搜索,例如“/Hyde”,然后按 Enter
下一个匹配的搜索项:n
上一个匹配的搜索项:N
退出:q
挤压空白行
-s
(挤压空白行) 选项会删除一系列空白行,并用单个空白行替换它们。
我们的示例文件中有一些连续的空行,让我们看看在使用 -s
选项时 less
是如何处理它们的:
less -s Dr-Jekyll-and-Mr-Hyde-001.txt
在每种情况下,所有双(或更多)空行都被替换为单个空行。
查看多个文件
less
可以为你打开多个文件。你可以在文件之间来回跳转。less
会记住你在每个文件中的位置。
less Dr-Jekyll-and-Mr-Hyde-001.txt Dr-Jekyll-and-Mr-Hyde-002.txt
文件被打开,并且显示第一个文件。你会看到当前正在查看的文件以及已加载的文件数量。这在下面突出显示。
要查看下一个文件,请按“:”键,然后按“n”。
屏幕将更改为显示第二个文件,并且底行的信息会更新以显示你正在查看第二个文件。这在下面突出显示。
要移至上一个文件,请键入“:”键,然后按“p”。
使用标记
less
可以让你放置标记,以便你可以轻松回到标记的段落。每个标记由一个字母表示。要在当前显示的行上放置一个标记,请按“m”键,然后点击你想使用的字母,例如“a”。
当你按下“m”键时,屏幕的底行会显示一个提示,等待你按下字母键。
只要你按下字母,提示就会被删除。
从文件中的任何其他位置,你可以通过按撇号(或单引号)“’”,然后按要返回的标记的字母轻松返回到标记。当你按下“’”键时,系统会提示你输入想要去的标记。
按下你要返回的标记的字母,文本文件的该部分将显示给你。
使用 less
的管道输入
less
可以显示以管道文本流形式出现的信息,就像它是一个文件一样容易。
dmesg
命令显示内核环形缓冲区消息。我们可以使用以下命令将 dmesg
的输出通过管道传输到 less
中:
dmesg | less
显示 dmesg
的输出。
你可以对管道输入进行分页和搜索,就像它是一个文件一样。要查看最新消息,请点击“结束”键以转到文件的底部。
当新消息到达时,你必须按住“结束”键以强制 less
显示文件的底部。这不是很方便。即使在添加新数据时也不总是显示文本的底部,请使用 +F
(前进) 选项。请注意使用 +
而不是 -
作为选项标志。
dmesg | less +F
+
选项标志告诉 less
将该选项视为你在 less
中使用了该命令。因此,如果你忘记使用 +F
选项,请在 less
中按“F”键。
less
显示文本的底部,显示来自 dmesg
的最新消息。它会显示一条消息,表明它正在等待更多数据。当出现更多内核消息时,屏幕会滚动,以便你始终可以看到最新消息。
你不能在此模式下滚动或翻页;它专门用于显示管道文本的底部。要退出此模式,请按 Ctrl+c,你将返回到通常的交互模式。
用 less
编辑文件
你可以用 less
来编辑文件 – 嗯,有点。此命令不能编辑文件,但是如果你在查看文件时键入 “v”,则该文件将被传输到你的默认编辑器。当你离开编辑器时,你将返回 less
。
在 less
中查看文件时按 “v”:
该文件被加载到默认编辑器中,在本例中是 nano
:
当你关闭编辑器时,你将返回 less
。
总结
尽管看起来有悖常理,但在这种情况下 less
> more
。