如何在 Linux 上使用 less 命令

less
命令可让您翻阅文本文件,每次显示一屏文本。乍一看,它似乎是最简单的 Linux 命令之一,但实际上远不止这些。
更少的历史
Linux 和 Unix 中的一切都有历史,这不是双关语。 less
程序基于 more
程序,该程序最初于 1978 年在 Berkeley Software Distribution Unix (3.0BSD) 的 3.0 版中发布。 more
允许您逐步翻阅文本文件,一次显示一屏文本。
需求是发明之母,more
的早期版本无法向后滚动文件,这促使 Mark Nudelman 开发了 less
并克服了这个特定问题。那项工作始于 1983 年,第一个版本于 1985 年在他工作的公司之外发布。截至 2019 年 10 月,他仍然是 less
的维护者。
不知有没有Linux用户没有用过less
?即使他们没有使用它来翻阅选定的文本文件,他们也有可能使用过 man
命令。 man
在后台调用 less
来显示 man
页面。
这是一个有很多技巧的命令。
为什么少比多好
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

行号可用于引导您返回到日志文件和其他未以标准散文编写的文件中的特定行或部分。

搜索更少
要搜索文件的文本,请按“/”,然后键入您的搜索词组。搜索区分大小写。您的搜索短语显示在显示屏的底行。点击“Enter”执行搜索。
在此示例中,搜索词是“Enfield”,可以在显示屏底部看到。

搜索从当前页面开始到文本文件的末尾。要搜索整个文件,请在搜索前移至文件顶部。
如果没有匹配项,您将被告知。如果找到匹配项,显示屏将移动以显示找到的项目。

要查找下一个匹配项,请按“n”。要搜索上一个匹配项,请按“N”。

要从文件中的当前位置向文件开头向后搜索,请按“?”键并输入您的搜索词。要查找下一个匹配项,请按“n”。要搜索上一个匹配项,请按“N”。
请注意,当您向后搜索时,下一个匹配项目(用“n”找到)是下一个更接近文件顶部的项目,而“N”代表前一个匹配项目查找靠近文件底部 的匹配项目。换句话说,当您向后搜索时,“n”和“N”会反转它们的搜索方向。
使用搜索词打开文件
您可以使用 -p
(模式)选项让 less
搜索文本文件并找到第一个匹配项。然后它将显示其中包含匹配搜索项的页面,而不是文件的第一页。当然,除非在文件的第一页上找到搜索项。
请注意 -p
和搜索词之间没有空格。
less -pEnfield Dr-Jekyll-and-Mr-Hyde-001.txt

文件显示时突出显示第一个匹配的搜索词。

精简导航:最有用的键
使用这些键移动和搜索文本文件。
- 向前移动行:向下箭头、Enter、e 或 j
- 向后移动一行:向上箭头、y 或 k
- 前进一页:空格键或 Page Down
- 向后移动一页:Page Up或b
- 滚动到右边:向右箭头
- 滚动到左:向左箭头
- 跳到文件的顶部:Home或g
- 跳到文件的结尾:结束或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
可以显示以管道文本流形式出现的信息,就好像它是一个文件一样容易。
dmesg
命令显示内核环形缓冲区消息。我们可以使用以下命令将 dmesg
的输出通过管道传输到 less
中:
dmesg | less

显示 dmesg
的输出。

您可以对管道输入进行分页和搜索,就好像它是一个文件一样。要查看最新消息,请点击“结束”以转到文件底部。

当新消息到达时,您必须一直按“结束”以强制 less
显示文件的底部。这不是很方便。要让 less
始终显示文本的底部,即使在添加新数据时,请使用 +F
(前进)选项。请注意使用 +
而不是 -
作为选项标志。
dmesg | less +F

+
选项标志告诉 less
将选项视为您在 inside less
中使用了该命令。因此,如果您忘记使用 +F
选项,请在 less
中按“F”。

less
显示文本的底部,显示来自 dmesg
的最新消息。它显示一条消息,表明它正在等待更多数据。当出现更多内核消息时,显示屏会滚动,以便您始终可以看到最新的消息。
您不能在此模式下滚动或翻页;它专门用于显示管道文本的底部。要退出他的模式,请按 Ctrl+c,您将返回到通常的 less
交互模式。
使用 less 编辑文件
您可以使用 less
编辑文件——嗯,有点。此命令不能编辑文件,但如果您在查看文件时键入“v”,该文件将传输到您的默认编辑器。当您离开编辑器时,您将返回到 less
。
在 less
中查看文件时点击“v”:

该文件被加载到默认编辑器中,在本例中为 nano
:

当您关闭编辑器时,您将转向 less
。
总之
尽管看起来有悖常理,但在本例中,less
> more
。
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts