Skip to content

less 与 more 命令详解:分页慢慢翻大文件 ​

本文是 Linux 命令速查 中 less 与 more 的从 0 到 1 详解,本篇一次讲清 less / more 两个分页查看器。 目标:把两个命令的用法讲清楚,多看几遍后,你在服务器上看大日志时就知道该怎么翻页、怎么搜索。 环境依据:less 590(属 less 包,Ubuntu 22.04 自带);more 来自 util-linux 2.37.2(RHEL/Rocky 自带版本用法一致)。

一、命令是干什么的 ​

看一个几十 MB 的日志文件,直接 cat 会一口气刷屏、根本来不及看。这时就需要分页查看器:它一次只显示一屏,等你按键再往下走,还能往上回翻、能搜索。

  • more:老牌分页器,只能往后翻,功能简单;
  • less:more 的增强版(名字是个调侃——"less is more"),能前能后、能搜索、能跳行,是服务器上看大文件的主力。

类比:cat 像一口气把整本书读给你听;more 像每次只读一页、听完你喊"下一页";less 则像给你一本带目录、能前后翻、能 Ctrl+F 搜索的电子书。看大文件一律用 less,more 知道个大概即可。

二、命令语法 ​

bash
less [选项]... 文件...
more [选项]... 文件...
  • [选项]:可选,主要是命令行启动时的偏好设置;
  • 文件:要分页看谁;也常接在管道后面(如 ls -R | less)。

启动后进入交互界面,靠键盘按键操作,按 q 退出。

三、选项全表(对照帮助) ​

1. less 的常用命令行选项 ​

less 的大部分功能是启动后用按键完成的,命令行选项只是"开局偏好"。下面是最常用的:

选项中文含义什么场景用
-N显示行号想对照报错行号时(很实用)
-i搜索时忽略大小写搜关键词不分大小写时
-S超长行截断不换行日志每行很长,不想被折行打乱时
-M显示更详细的状态栏(带百分比、行号)想知道看到哪了
-X退出后不清空屏幕,内容保留在终端退出后还想留着刚才看到的内容
-F内容不足一屏时直接退出不进入交互配合脚本/管道自动判断

2. less 里的交互按键(启动后最该背的) ​

这才是 less 的核心——按 h 可随时调出完整帮助。

按键作用
空格 / f / PageDown往后翻一屏
b / PageUp往前翻一屏
↓ / Enter往后翻一行
↑往前翻一行
/关键词向下搜索关键词,回车定位
?关键词向上搜索关键词
n跳到下一个匹配
N跳到上一个匹配
g跳到文件开头(第 1 行)
G跳到文件末尾(最后一行)
F进入"实时跟踪"模式(相当于 tail -f)
h调出帮助
q退出 less

搜索是 less 的灵魂:进去后敲 /error 回车,就跳到下一个 error,再按 n 继续找下一个。

3. more 的选项 ​

more 功能少,主要选项如下(对照 more --help):

选项中文含义什么场景用
-数字,-n 数字每屏显示多少行控制一屏行数
-d底部显示提示(空格继续、q 退出)而不是响铃给不熟的人用更友好
-s把多个空行压成一个空行太多时
+数字从第数字行开始显示直接跳到某行
+/关键词从第一个匹配关键词的位置开始显示直接定位到关键词
-c / -p不滚动、清屏后重绘某些终端下刷新更舒服

在 more 里:空格往后翻一屏,Enter 翻一行,b 往前翻(部分终端支持),q 退出。它不能像 less 那样自由前后搜,这就是为什么现在大家都用 less。

四、由浅入深的典型示例 ​

演示文件在 /tmp/sre_shard_txt,long.txt 是 1 到 50 的 50 行数字。

示例 1:分页看一个大文件 ​

bash
less long.txt

进入后一次只显示一屏,按空格往下翻、b 往上翻,看完按 q 退出。

示例 2:带行号打开 ​

bash
less -N long.txt
text
      1  1
      2  2
      3  3
      4  4
      5  5

每行前面多了行号。看日志报错说"第 120 行有错"时,less -N 直接对照。

示例 3:进去后搜索关键词 ​

启动 less app.log 后,在界面里输入:

text
/ERROR

回车后跳到下一个含 ERROR 的行;按 n 找下一个,按 N 找上一个。这是查日志最常用的动作。

示例 4:跳到开头和结尾 ​

在 less 界面里按:

text
g        (跳到第 1 行)
G        (跳到最后一行)

看大日志想直接到末尾看最新报错,按 G 即可,不用一直按空格。

示例 5:在 less 里实时跟踪新日志 ​

在界面里按大写 F:

text
F

这里按的大写 F 是 less 界面里的"实时跟踪"命令(不是命令行的 -F 选项),效果等于 tail -f;按 Ctrl+C 回到普通浏览,再按 q 退出。

示例 6:接在管道后面 ​

bash
ls -R /etc | less

任何命令的输出太长时,末尾加 | less 就能慢慢翻,不会刷屏。

示例 7:more 的基本用法 ​

bash
more long.txt

一次显示一屏,底部会提示 --More--(xx%);按空格翻下一页,按 q 退出。它只能往后翻,翻过头了就得重新打开。

示例 8:more 直接跳到关键词处 ​

bash
more +/ERROR app.log

启动时直接定位到第一个 ERROR 出现的位置开始显示。

五、高频组合速记 ​

命令用途
less 文件分页看大文件(首选)
less -N 文件分页看 + 行号
命令 | less把超长输出接进来慢慢翻
less +F 日志启动即实时跟踪
界面里 /词 n N搜索 / 下一个 / 上一个
界面里 g G跳到开头 / 结尾
q退出

六、RHEL 系与 Debian 系差异 ​

  • less:两系都自带、按键操作完全一致;less 包名就叫 less。
  • more:两系都属 util-linux,用法一致;RHEL 的 more 和 Debian 同源。
  • 实际差别不大:记住"看大文件用 less"即可,more 很多人一年用不到几次。

七、新手易错点 ​

  1. 进去后出不来很慌:永远记住按 q 退出,不是 Ctrl+C(虽然也能退,但 q 才是正道)。
  2. more 翻不回去:在 more 里按 b 不一定管用,想要自由前后翻就用 less。
  3. 搜索时 / 后面直接打词再回车:不要输完就以为会自动跳,要敲回车。
  4. -N 是命令行参数,不是界面按键:行号要在启动时加 -N 打开。
  5. 别用 cat 看大文件:会刷屏;改用 less。
  6. less 是只读查看器,不会改文件,可放心翻。

八、相关命令与文档 ​

  • 速查页:Linux 命令速查
  • 打印整个小文件:cat(详解见 cat)
  • 只看头 / 尾:head(head)、tail(tail)
  • 实时跟踪日志:tail -f(详解见 tail)
  • 从日志里筛关键词:grep(详解见 grep)