less 是什么
less 是交互式分页浏览器,用来读大文件与日志。它按需读取、不把整个文件载入内存,所以打开 GB 级日志也不会拖垮机器。除了翻页与搜索,它还能直接打开 .gz 压缩文件、跟随正在增长的文件、在多文件之间跳转,是「cat 会刷爆终端、编辑器会吃满内存」时的正确选择。
基本信息
| 适用平台 | Linux、Unix、macOS 通用;Windows 上随 Git for Windows 等工具附带 |
|---|---|
| 命令语法 | less [选项] 文件... ;命令 | less |
| 常用选项 | -N 显示行号 / -S 不折行 / -R 原样显示颜色转义 / +F 直接进入跟随模式 / -p 模式 打开即跳到首个匹配 / -X 退出时不清屏 |
| 与 more 的区别 | less 可回翻、可搜索、可横向滚动;more 只能向前翻页 |
典型使用场景
- 阅读 GB 级日志:less -N 打开后按 /ERROR 直接定位报错行
- 实时盯日志的起手式:less +F app.log,需要回看时 Ctrl+C 退回浏览模式
- 查看压缩日志:less app.log.gz 自动解压,相当于 zless
- 看宽表不折行:less -S -N,长行左右滚动而不是被折成多行
- 翻看长输出:history、diff 输出或命令结果通过管道交给 less 分页
常用示例
常用示例
less /var/log/syslog # 打开大文件
less -N app.conf # 显示行号
less -S access.log # 不折行,左右滚动看宽表
less +F app.log # 从跟随模式开始(类 tail -f)
less -p 'ERROR' app.log # 打开即跳到第一个 ERROR
less app.log.1.gz # 直接打开 .gz(自动解压)
history | less # 管道输出也能分页常用按键
| 按键 | 作用 |
|---|---|
| 空格 / b | 向下 / 向上翻一页 |
| /模式 或 ?模式 | 向下 / 向上搜索 |
| n / N | 跳到下一个 / 上一个匹配 |
| g / G | 跳到文件头 / 文件尾 |
| F,Ctrl+C | 进入跟随模式 / 退出跟随回到浏览 |
| q | 退出 |
less 能直接打开 .gz,靠的是发行版预置的 lesspipe 前置处理器;.bz2、.xz、.zst 是否自动解开取决于 lesspipe 的配置,不确定时先解压再读更稳。
多个文件一起给(less a.log b.log)时,按 :n 与 :p 在文件间切换,:e 文件名 可以临时换一个文件打开。
不要用 less 打开二进制文件:先 file 判断类型,需要看二进制内容改用 hexdump、xxd 或 strings。
与同类工具的分工
| 工具 | 适合 | 不适合 |
|---|---|---|
| cat | 小文件一次性输出、管道拼接 | 大文件会刷爆终端 |
| more | 只需向前翻页的最小场景 | 需要搜索与回翻 |
| less | 大文件、日志、搜索、跟随、看压缩包 | 需要修改文件内容 |
| tail -f | 只看新增内容 | 需要回看历史记录 |
进入后常做的动作
- 按 G 跳到文件尾、按 g 回到开头,比一页页翻快得多
- 用 /ERROR 搜索后连按 n 遍历所有匹配,N 反向查找
- 按 F 进入跟随模式盯着增长,Ctrl+C 退回可翻阅状态
- 用 :e 文件名 直接换一个文件打开,不必退出重进
- 按 -N 在命令行区切换行号显示,配合编辑器快速跳行
搜索默认区分大小写,/ERROR 只匹配大写;想忽略大小写用 less -i 启动,或进入后按 -i 在命令行切换该开关。
退出后终端可能残留上一屏内容,可用 -X 关闭这项行为;脚本里需要干净输出时尤其要注意,必要时执行 tput rmcup 恢复屏幕。
less 打开大文件时是按需读取的,底部出现等待提示说明还在从磁盘取数据;文件放在慢速网络存储上时打开会明显变慢,先复制到本地再读往往更省时间。
把 less 设成默认分页器很常见:export PAGER=less 与 export LESS='-R -N' 一次把常用选项固定下来,git、man 等命令都会沿用这套配置;副作用是个别程序会跟着显示行号或颜色,遇到不符合预期的输出可以临时 unset LESS 再试。
搜索时想直接带上上下文行数,可以在搜索前用 -j 指定高亮行位置,或搜索后按回车再按 g 与 G 手动定位;真正需要「关键字前后各几行」的成块阅读,用 grep -C 先筛出片段再交给 less 更省事。