如何在'less' (GNU)中显示行号

804

如何使用命令使得less在左侧列显示行号?


96
less是一个Linux命令行实用程序,程序员常用它查看文本文件。这个问题在"程序员使用的工具"领域下坚定地属于Stack Overflow的主题,就像所有关于使用git的问题一样。当搜索"less show line numbers"时,它也是谷歌的第一个搜索结果。这个问题不应该被关闭。 - John Dibling
5
这个问题更适合在 Unix & Linux Stack Exchange 上提问。仅仅因为程序员使用 less 工具并不代表它是适合在这里讨论的话题。铅笔也是“程序员使用的工具”,但是有关如何削铅笔的问题在这里也不合适。 - augurar
26
@augurar 我认为你确实知道这里的tools指的是软件工具。你故意将tools的含义超出了上下文。顺便说一句,我也认为这个问题适合在Unix & Linux Stack Exchange上提问,但这并不妨碍这个问题在SO上出现 :) - Gab是好人
7个回答

1141

手册中得知:

-N 或 --LINE-NUMBERS 导致在显示器屏幕上每行的开头显示一行号。

您也可以通过键入 -N 在不退出 less 的情况下切换行号。

以这种方式可以切换 less 的任何命令行选项。


7
当我将一个巨大的文件往下滚动到“G”的底部时,即使它没有显示行号,它也会显示“计算行号...(中断以取消)”。我想知道如何在不退出并使用“-N”重新启动的情况下查找当前所在的行。我正在承受惩罚,那么奖励在哪里呢? - Bruno Bronosky
109
哇,我已经查看了不下数十次 less 的帮助文档,希望找到答案。我总是忽略了“-<flag> 切换命令行选项 [参见下面的 OPTIONS]”...这意味着你可以在 less 中键入“-N”。我已经被这个问题困扰了约十年。好时光! - Bruno Bronosky
2
能否以不同的颜色显示行号? - greg
3
嗨@greg,您可以使用 sed 为行号上色,并使用选项 -Rless 显示颜色:cat -n file.txt | sed 's/^[ 0-9]*[0-9]/\o033[34m&\o033[0m/' | less -R。 您还可以定制 LESSOPEN... 祝好运;) - oHo
3
请注意,less -N <filename> 是可行的,但 less <filename> -N 不行。 - 林果皞
显示剩余5条评论

161

在打开 less 的情况下,您还可以按下=键,以显示当前屏幕的信息(包括行号)(在屏幕底部),具体格式如下:

myfile.txt lines 20530-20585/1816468 byte 1098945/116097872 1%  (press RETURN)

所以,例如,在这里,屏幕当前显示的是第20530-20585行,而文件总共有1816468行。


49

在将文件传输到 less 前,您可以通过 cat -n 对文件进行筛选:

cat -n file.txt | less

或者,如果你的 less 版本支持,可以使用 -N 选项:

less -N file.txt

6
你知道哪个版本的 less 不支持它? - Russia Must Remove Putin
1
我通常使用nl而不是cat -n。 - ychaouche

38

命令行标志-N--LINE-NUMBERS会导致在显示中每行开头显示一行号。

您还可以通过键入-N<return>来切换行号,而不必退出less。你可以用这种方式切换less的任何命令行选项。


1
使用 -N 或 --LINE-NUMBERS 参数在 CentOS 5.3 中只会显示日期,但在启动 less 后使用 -N 则正常。 - Mike Miller

37

您可以设置一个环境变量,以使这些选项始终适用于所有的less文件:

export LESS='-RS#3NM~g'

2
.bashrc中添加了别名alias less="LESS='-RS#3NM~g' less",让我的一天变得更美好!谢谢! - Jury
8
这个咒语的解释将非常受欢迎 :) - minexew
9
选项如下: R = 更好地处理文件中原始颜色代码。 S = 滚动超长行而不是自动换行。 #3 = 一次向左/右滚动三个位置。 N = 显示行号。 M = 更长的提示符。 ~ = 文件以 ~ 结尾时,显示空白处而非空格。 g = 使用 'g' 进行搜索时,仅突出显示当前匹配项,而不是所有匹配项。 - Bryan
这也会给 man 分配行号,有可能防止它并仅将其保留在文件中吗? - alper
我猜通过为有问题的命令设置别名,或更简单地说,使用less仅为每个调用设置变量。 - Pysis

24
如果您按下 = 键,希望看到行号,但只看到字节计数,则表示行号已关闭。按下 -n 以打开行号,并确保 $LESS 不包含 'n'。
默认情况下关闭行号(例如,设置 LESS=n)可加速在非常大的文件中搜索。如果您经常搜索大型文件,但通常不关心所在行,则这很方便。
我通常使用 LESS=RSXin(启用转义代码、截断长行、退出时不清空屏幕、忽略所有小写搜索的大小写和默认情况下不计算行号),并根据需要仅从 less 内部使用 -n-S

0
上述答案展示了如何在启用行号的情况下初始化一个less, 但对于那些想要知道如何在已经在less中查看的文件中切换行号开关的人来说,以下是方法:
在查看器内部 您还可以在less查看器内部切换行号,就像您正在查看文件内容一样。这对于您已经在查看器内部或者想要移除行号显示的情况非常有用。与大多数less命令行选项一样,您也可以在查看器内部使用它...
当文件内容被显示时,只需使用键盘输入-N,然后按Enter键以显示行号。您可以通过在查看器内部再次输入-N(或-n),然后按Enter键来隐藏行号。这是一种快速切换行号的方式,比命令行选项更方便。
来源:lostsaloon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接