主题
less 与 more 命令详解:分页慢慢翻大文件
本文是 Linux 命令速查 中
less与more的从 0 到 1 详解,本篇一次讲清less/more两个分页查看器。 目标:把两个命令的用法讲清楚,多看几遍后,你在服务器上看大日志时就知道该怎么翻页、怎么搜索。 环境依据:less590(属 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.txttext
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很多人一年用不到几次。
七、新手易错点
- 进去后出不来很慌:永远记住按
q退出,不是 Ctrl+C(虽然也能退,但q才是正道)。 more翻不回去:在more里按b不一定管用,想要自由前后翻就用less。- 搜索时
/后面直接打词再回车:不要输完就以为会自动跳,要敲回车。 -N是命令行参数,不是界面按键:行号要在启动时加-N打开。- 别用
cat看大文件:会刷屏;改用less。 less是只读查看器,不会改文件,可放心翻。