在Linux系统中,less是一个用于查看文件内容的命令行工具,它的设计目标是高效浏览体积较大的文本文件。与cat一次性将全部内容输出到终端不同,less采用按需加载机制,只读取当前需要显示的部分,因此即使面对几个GB的日志文件也能瞬间打开。

less这个名字其实带有一些自嘲意味,它最初是作为more命令的增强版出现的,作者开玩笑说“less is more”,意思是功能比more更少束缚、更灵活。实际上less支持前后双向翻页,而早期的more只能向前翻页,这也是两者最核心的区别之一。
less的基础调用方式
最基础的用法非常简单,只需要在终端输入less加上文件名即可。例如我们要查看系统的认证日志,可以执行下面的命令。打开之后,终端会进入less的交互界面,此时文件内容分页展示,底部通常会出现一个冒号提示符等待用户输入指令。
# 查看系统认证日志 less /var/log/auth.log # 查看某个大文件并忽略换行(方便横向阅读长行) less -S /var/log/nginx/access.log
在less界面中,常用的移动操作包括:按空格键或PageDown翻到下一页,按b或PageUp翻到上一页,按方向键上下移动一行,按g跳到文件开头,按G跳到文件末尾。这些操作不需要把整个文件读入内存,因此响应非常快。
除了直接跟文件名,less也常配合管道使用。比如我们想查看某个进程的输出并且要分页浏览,就可以用命令生成内容后通过管道交给less。这种写法在排查实时日志或过滤结果时特别实用,避免终端被海量输出淹没。
# 配合grep过滤后分页查看 ps aux | grep nginx | less # 查看压缩日志(利用zless,本质也是less的变体) zless access.log.gz
less中的搜索与高亮
在浏览大文件时,人工翻页找关键字效率极低,less内置了强大的搜索功能。在交互界面中按斜杠(/)然后输入要搜索的词,回车即可向下查找;按问号(?)加关键字则向上查找。搜索到的内容会被高亮显示,方便快速定位。
# 在less交互模式中操作(非命令行输入,仅为示意) /ERROR # 向下搜索ERROR ?timeout # 向上搜索timeout n # 跳到下一个匹配 N # 跳到上一个匹配
如果希望启动时直接定位到第一个匹配项,可以在调用less时加上加号和大写G以及搜索词,或者使用-p参数。这样打开文件后无需手动输入搜索指令,就能直接停在关键内容附近,对巡检固定错误模式很有帮助。
另外,less支持正则表达式搜索。比如想找所有以日期开头且包含500状态码的行,就可以用正则表达。这对开发者和运维来说,在分析复杂日志格式时减少了额外写脚本的成本,直接在查看器里完成粗略筛选。
less与more、cat的核心差异
很多初学者会混淆cat、more和less。cat适合把小文件完整打印出来或做重定向;more只能向前翻页且功能较少;less不仅可前后翻,还支持搜索、标记、多文件切换。下面的表格总结了三者常见区别。
| 命令 | 双向翻页 | 大文件性能 | 搜索功能 | 退出后清屏 |
|---|---|---|---|---|
| cat | 不支持 | 差(全加载) | 无 | 否 |
| more | 仅向前 | 较好 | 基础 | 是 |
| less | 支持 | 优(按需读) | 强(正则) | 否 |
从表格可以看出,less在综合体验上明显优于more。并且less退出后不会清除屏幕已有内容,这一点在需要对照前后命令输出时非常友好。cat虽然快,但遇到大文件就是灾难,所以日常查看日志优先选less。
还有一点容易忽略:less打开文件时并不会立刻读取整个文件,它利用缓冲机制,只在用户翻页时读取对应块。这意味着你可以用less打开一个正在被其他程序写入的日志,结合-F参数还能实现类似tail -f的跟踪效果,不过那是进阶用法。
实用参数与配置建议
less有一组很实用的启动参数。比如-N可以显示行号,方便和报错栈信息对照;-i让搜索忽略大小写;-S禁止自动换行,长行可用左右方向键横向查看;-F如果内容不足一屏则直接输出并退出,适合写脚本判断。
# 显示行号并忽略大小写打开文件 less -Ni /etc/nginx/nginx.conf # 不换行查看,适合宽表日志 less -S app.log
如果经常使用某些参数,可以通过环境变量LESS来统一设置,这样就不用每次敲命令都带一堆选项。例如把LESS设为-NiS,以后直接less file就会默认带行号、忽略大小写且不换行,对个人工作环境定制非常方便。
# 在bashrc或zshrc中加入 export LESS="-NiS"
最后提醒,less本身只是一个查看器,默认不会修改文件内容。如果不小心按到v键,它会调用系统默认的编辑器(通常是vim)来编辑当前文件,这时退出编辑器回到less即可。理解这一点能避免新手误以为less也能改文件而产生恐慌。
小结
总体来说,linux中less是什么意思,可以概括为一个“轻量但强大的文本浏览器”。它解决的是大文件查看卡顿、无法回溯、难以搜索等痛点。只要记住基础翻页、斜杠搜索、管道配合这几个核心点,就能覆盖绝大多数运维与开发场景。
当你下次再面对几十万行的日志时,别急着cat或者vim,先less一下,用搜索直奔主题,用行号对齐上下文,效率提升立竿见影。这也是为什么几乎所有Linux发行版都默认自带less,而不是只留一个more的原因。