新闻详情

新闻详情

首页 / 资讯中心 / 详情

Linux大文件查看:less与more命令的区别与高效用法

发布时间:2026/9/3 5:31:54来源:尧图网络
Linux大文件查看:less与more命令的区别与高效用法
在 Linux 服务器上排查日志、分析数据集、查看配置文件时一个最常见的尴尬场景是文件太大用cat直接输出会把终端刷爆屏幕哗啦啦滚动几万行最后手忙脚乱按CtrlC回头想找刚才那几行报错早就不知道被冲到哪里去了。很多人知道要用less或more但这两兄弟到底有什么区别什么时候用哪个为什么面试官总喜欢问less和more的差异真正生产环境排查问题的时候有哪些不为人知的效率技巧这篇文章不打算只罗列参数表而是从实际运维和开发场景出发把less和more这两个命令彻底讲透。读完你不仅能用它们查看大文件还能学会搜索、定位、过滤、实时跟踪日志在几百 MB 甚至几个 GB 的文件里快速找到自己需要的内容。这几乎是每一个 Linux 使用者都会遇到的刚需技能也是面试题里高频出现的考点。1. 为什么大文件查看不能用 cat而要用 less 或 more先看一个问题为什么不能直接用cat查看大文件cat的设计目标是把文件内容全部输出到标准输出。文件小的时候没问题但文件一大问题就来了内存和终端压力大cat会尽量把内容塞给终端大量文本瞬间刷屏终端模拟器渲染压力极大远程连接时还会占用大量带宽。无法回溯查看虽然可以靠滚动条往回翻但如果你是通过 SSH 连接服务器终端缓冲区有限早期内容会被直接冲掉。无法按需加载cat是一次性输出哪怕你只想看文件中间的一小段它也把整个文件从头读到尾。CtrlC 不可控如果文件是持续写入的日志cat会一直输出到中断而中断时机不好控制容易误伤正在写入的进程。more和less的核心设计思想是分页查看按需加载。它们不会一次性把整个文件塞进终端而是先显示一屏内容等用户按键后才继续向下翻。这在面对大文件时能极大降低系统开销和人为误操作的风险。不过more是早期方案功能比较简单只能单向翻页less是more的增强替代品支持上下翻、搜索、跳转、标记甚至可以直接跟踪日志文件的变化。可以用一句话概括more 是入门级查看工具less 是大文件查看的瑞士军刀。2. more 命令基础分页查看的入门工具more命令的定位是“分页显示文件内容”。它允许用户一屏一屏地查看文件但操作方向有限主要只能向后翻。2.1 more 的基本用法more /var/log/syslog执行后终端会显示文件的第一屏内容底部出现提示--More--(35%)这表示当前已经显示了文件的 35%按空格键可以继续查看下一屏按b键可以回退一屏按q键退出。2.2 more 的常用交互按键按键功能空格键向下翻一屏Enter向下翻一行b向后上回退一屏显示当前行号h显示帮助信息q退出 more/pattern向下搜索指定模式按 n 继续搜索下一个.重复上次执行的命令2.3 more 的命令行选项more -num /var/log/syslog # 指定每屏显示的行数 more 100 /var/log/syslog # 从第 100 行开始显示 more /ERROR /var/log/syslog # 从第一个匹配 ERROR 的行开始显示 more -c /var/log/syslog # 先清屏再显示内容避免滚动混淆 more -s /var/log/syslog # 将连续多个空行压缩为一行其中-num在实际项目中比较实用。比如屏幕分辨率较高时默认 24 行一屏会浪费空间可以设置为more -50让每屏显示 50 行。2.4 more 的局限性more最大的问题是不支持向上翻页。虽然b可以回退一屏但粒度太粗无法逐行向上浏览。更麻烦的是more在管道场景下能力有限很多高级操作做不了。因此在现代 Linux 运维中more正逐渐被less取代。不过more也并没有完全退出历史舞台。有些最小化安装的 Linux 环境或者嵌入式 Linux 环境比如 BusyBox中可能只有more而没有less。在资源受限的设备上more占用内存更小仍然有它的用武之地。3. less 命令大文件查看的核心工具less是一个向上兼容more的分页工具名字的由来也很有意思——它不是 “less is more” 的意思而是 “more 的反义词”暗示它是more的替代品功能上比more更强大。less的设计目标非常明确让用户在查看大文件时有完全的控制权。它支持前后翻阅、定位、搜索、标记、环境变量定制、甚至是直接读取压缩文件。3.1 less 的基本用法less /var/log/syslog进入less后界面内容和more类似但底部不会出现进度条而是显示文件路径和当前行信息。less的交互更加灵活光标键、PageUp、PageDown 都可以直接使用。3.2 less 的核心交互按键按键功能空格键 / PageDown向下翻一屏b / PageUp向上翻一屏Enter / 向下方向键向下移动一行y / 向上方向键向上移动一行g跳到文件第一行G跳到文件最后一行N跳到第 N 行比如 100G 就是第 100 行/pattern向下搜索 pattern?pattern向上搜索 patternn继续搜索下一个匹配项N继续搜索上一个匹配项q退出 lessv用当前内容启动默认编辑器如 vi显示文件信息行数、字节数、位置F跟踪文件末尾类似 tail -f3.3 less 的命令行选项less -N /var/log/syslog # 显示行号 less -S /var/log/syslog # 关闭自动换行超长行横向滚动 less -i /var/log/syslog # 搜索时忽略大小写 less -m /var/log/syslog # 显示百分比进度 less -X /var/log/syslog # 退出时不清屏保留显示内容 less F /var/log/app.log # 进入后立即跟踪文件尾部 less 100 /var/log/syslog # 从第 100 行开始查看 less /ERROR /var/log/syslog # 从第一个 ERROR 开始查看 less -o /tmp/output.txt file.log # 将输入内容保存到文件这些选项中日常使用频率最高的是-N和-S。查看配置文件时less -N可以直接看到行号方便定位问题查看含有超长行的日志时less -S能避免自动换行导致的内容错乱。3.4 less 的三种常用场景示例场景一查看系统日志并搜索关键字less -N /var/log/syslog进入后输入/ERROR搜索第一个 ERROR按n继续搜索下一个按N回到上一个。这个操作在排障时非常高效不需要像grep那样先把结果输出到文件再查看。场景二实时跟踪日志文件less F /var/log/nginx/access.log进入后less会像tail -f一样持续读取文件新增内容。按CtrlC可以暂停跟踪回到普通浏览模式再按F恢复跟踪。场景三跳过文件头部从指定匹配行开始less /java.lang.OutOfMemoryError /opt/app/logs/error.log这个命令会直接跳转到第一个包含OutOfMemoryError的位置对于分析 Java 应用堆栈日志非常方便。4. less 和 more 的关键对比与选型建议作为一个 Linux 使用者理解了 less 和 more 的基本操作后最关心的就是实际项目中到底应该用哪个下面用一个表格直观对比两者的差异对比维度moreless向上翻页支持b回退一屏但不能逐行向上完全支持方向键、PageUp 均可搜索功能支持向后搜索支持向前和向后搜索且支持正则跳转定位只能从文件开头或指定匹配行进入可任意跳转行号、百分比、文件头部或尾部实时跟踪不支持支持F跟踪文件追加内容类似 tail -f文件信息查看简略丰富可显示字节数、行数、百分比资源占用相对较小相对稍高但可通过 -X 等优化管道配合能力有限强大适合与 grep、find 配合适合场景嵌入式环境、最小化系统日常开发、运维、日志分析、配置文件查看从选型建议来看在普通服务器或开发环境中优先使用less。学习成本低功能覆盖广长期收益高。在资源受限的嵌入式系统或 BusyBox 环境中保留more作为兜底工具因为它占用资源更少。在脚本中如果需要自动分页输出可以继续用more -d它有一个显著优点在屏底显示 “[Press space to continue, ‘q’ to quit.]” 提示交互意图更明确。在交互式排障场景中less F或less /关键字的组合用法比more有效得多。有一个常见误区需要特别说明很多人以为less一定比more快。实际上对于小文件两者差距不明显对于超大文件比如几个 GB 的日志less的优势主要体现在操作灵活性和搜索定位能力上而不是纯粹的速度。真正影响大文件查看速度的是文件系统的 IO 能力和终端渲染性能。5. 实际场景演练用 less 快速排查错误日志现在来看一个完整的上手案例。假设服务器上有一个 Java 应用日志文件/opt/app/logs/app.log大小为 1.2GB里面记录了大量正常业务日志但偶尔会出现异常。你需要在最短时间内找到最近的Exception以及相关上下文。5.1 第一步查看文件基本信息和规模ls -lh /opt/app/logs/app.log输出示例-rw-r--r-- 1 app app 1.2G Jun 12 20:45 /opt/app/logs/app.log确认文件是 1.2GB绝对不能用cat或vim直接打开。vim在这个场景下也会卡顿因为编辑器要建立交换文件并加载索引。5.2 第二步用 less 打开文件并跳到文件末尾附近less G /opt/app/logs/app.logG直接跳到文件的最后一行。最近的错误日志通常都在文件尾部这个动作可以让你第一时间看到新的日志输出省去了从头翻到尾的漫长等待。5.3 第三步向上搜索最近的异常关键字在less界面中输入?Exception?表示向上搜索从当前位置文件末尾往上查找最近的一个Exception。找到后按n可以继续往上搜索更早的异常按N可以往下搜索下一个异常。如果搜索时想忽略大小写可以在搜索前输入-i然后再次执行?exception大小写就不再敏感。5.4 第四步定位到具体行并查看上下文假设搜索到异常出现在第 4862150 行可以直接输入4862100G跳到该行附近然后按方向键上下翻动查看异常发生前后的日志上下文。如果某行日志太长导致自动换行后很难对齐格式可以按-S关闭自动换行模式超长行会横向滚动这样日志的原始时间戳和堆栈结构会清晰很多。5.5 第五步用行号定位并退出如果确认需要记录行号再退出可以按查看当前行信息或者直接按q退出。下次要重新定位时直接用less 4862100G /opt/app/logs/app.log精确跳转。这里还需要补充一个less的隐藏技巧当你在less中操作时可以随时输入:e /path/to/other/file来打开另一个文件不需要先退出再重新进入。这个特性在同时排查多个日志文件时很实用。6. 大数据场景下的效率技巧与高级用法当文件超过一定规模比如几个 GB 甚至更大时普通的分页浏览已经不能满足需求需要结合less的高阶用法来提高效率。6.1 结合 grep 过滤后再查看有时候文件太大直接进入后搜索仍然很慢可以先通过管道过滤再进入 lessgrep ERROR /opt/app/logs/app.log | less -N这样less看到的是只包含 ERROR 的有效内容体积大幅减小。如果还想频繁搜索可以使用grep -i exception /opt/app/logs/app.log | grep -v ExpectedException | less这个命令先匹配所有包含 exception 的行忽略大小写再排除包含 ExpectedException 的行因为有些业务异常是预期内的最后进入分页浏览。排查日志时这个组合比直接打开原始文件定位效率高很多。6.2 使用 tail 与 less 结合如果要查看的是实时追加的日志又希望在尾部操作可以组合使用tail -n 1000 /opt/app/logs/app.log | less或者直接tail -F /opt/app/logs/app.log | lesstail -F会持续跟踪文件但由于管道的原因less不会自动滚动。这个用法适合查看稳定输出的日志按CtrlC可以停止跟踪。6.3 使用 less 的 mark 标记功能less支持在文件的不同位置打标记。按m再按一个字母比如a就会在当前位置建立一个名为a的标记之后输入a单引号加 a可以快速回到这个位置。这个功能在大型日志文件中对比前后两次异常上下文时非常有用。具体操作流程在第一个异常附近按m再按a。继续向下翻找到第二个异常按m再按b。想回到第一处按a回到第二处按b。这样就不需要记住行号也能快速来回跳转。6.4 同时查看多个文件less允许一次打开多个文件less file1.log file2.log file3.log在less内部使用:n切换到下一个文件:p切换到上一个文件:e指定打开新文件使用:d可以删除文件列表中的当前文件。对于日志文件按天切分的场景这个特性非常高效不用反复退出重新打开。6.5 直接查看压缩文件less的一个隐藏能力是查看 gzip 压缩的日志文件less access.log.gzless会自动解压并分页显示内容不需要提前gunzip。这在高压缩比的日志归档场景中能省去不少磁盘空间和解压时间。7. 常见问题与排查思路在实际使用中less和more虽然简单但也有一批高频问题这里逐一定位排查方式。问题现象可能原因排查方式解决方案进入 less 后屏幕混乱退出后内容残留终端配置或环境变量不一致检查TERM环境变量设置export TERMxterm-256color使用less -X退出时保留内容搜索不到想要的内容但 grep 能查到搜索方向不对大小写敏感确认/和?的方向差异检查大小写使用-i忽略大小写换用?向上搜索大文件打开慢文件所在磁盘 IO 较慢或系统内存不足用iostat查看磁盘 IO用free -h查看内存优先使用grep过滤后再进入 less避免直接打开超大文件日志行太长导致格式错乱没有关闭自动换行按-S观察效果进入时使用less -S管道输入时 less 提示 “input is not a terminal”在脚本中直接调用 less但无法交互检查脚本调用方式用less -F让内容少时直接退出或在脚本中使用非交互方式按方向键出现字符而不是移动光标TERM环境变量设置不正确执行echo $TERM设置为正确的终端类型重新登录more 查看时无法向上翻more 的原生局限无换用 less或使用more -E在底部退出后重新进入对于第一个问题再补充说明一下less默认退出时会清空屏幕内容只保留最后一些行。这在某些终端模拟器中会让人觉得“显示异常”。如果希望退出后仍然保留所有浏览过的内容可以在启动时使用less -X或者在~/.bashrc中设置export LESS-X这个设置对日常使用影响很大尤其是从服务器复制输出内容时能避免退出后看不到之前文本的困扰。8. 最佳实践与工程建议less和more虽然只是两个基础命令但在工程实践中养成好的使用习惯能显著提高效率。8.1 在 shell 配置中固化常用选项推荐在~/.bashrc或~/.zshrc中加入export LESS-N -i -X -S解释一下-N显示行号排障时便于定位。-i搜索时忽略大小写省去反复切换大小写。-X退出时不清屏保留浏览痕迹。-S关闭自动换行适合日志和配置文件。如果你的终端宽度较窄-S可能会导致需要频繁横向滚动可以只在需要时临时加-S不用固化。8.2 区分日志文件与配置文件的查看方式查看日志文件优先less F实时跟踪配合grep、tail过滤。查看配置文件优先less -N方便记录行号。查看源代码优先less -S -N避免长行换行破坏缩进。查看二进制或超大文件尽量只用less的元信息功能不要随便翻页。8.3 搜索时注意正则特殊字符less的搜索支持正则表达式。如果你搜索的字符串中包含.、*、[、]等特殊字符需要进行转义。比如搜索 Java 异常类名?java\.lang\.OutOfMemoryError如果不转义.会匹配任意字符可能导致搜索到大量不相关的内容。8.4 脚本中使用 less 的安全性在 shell 脚本中如果less检测到输出不是终端它会直接退化为普通输出行为但为了保险推荐使用command | less -F -R-F如果输出内容少于一屏直接像 cat 一样输出并退出。-R保留 ANSI 颜色控制字符让彩色输出正常显示。这在自动化脚本中非常安全不会因为意外阻塞导致脚本卡住。8.5 注意权限和文件占用问题查看日志文件时如果文件正被其他进程写入使用less不会影响写入进程。但如果文件权限不对比如普通用户尝试查看/var/log/secure可能会看到 “Permission denied”。此时需要确认自己是否有 sudo 权限或者使用sudo less /var/log/secure需要注意用sudo查看敏感日志文件时操作记录同样会被系统审计应遵循最小权限原则不查看与工作无关的内容。8.6 组合使用从 less 无缝切换到编辑器less内置的v命令可以直接用默认编辑器打开当前文件。如果查看配置时发现需要修改直接按v进入vi改完退出再回到less整个过程非常流畅。这个功能在查看服务配置时尤其高效。9. 总结与后续学习方向less和more是从 Unix 时代流传至今的经典命令它们解决的核心问题是在大文件面前让用户拥有可控的阅读路径。more简单直接适合最小化环境less则在交互能力上实现了全面超越是日常开发、运维、日志分析中更推荐的选择。本文真正讲清楚的几个点是cat不适合大文件查看的根本原因以及more、less的分页设计思想。more和less在交互、搜索、跳转、实时跟踪方面的具体差异。less在超大日志文件场景下的定位流程进入尾部、向上搜索、行号跳转、关闭换行。less的高阶用法标记、多文件切换、直接查看压缩文件、结合 grep 和 tail 过滤。常见问题的排查方式以及 shell 配置中可固化的便捷选项。如果你想继续深入下面几个方向值得研究less与vim的键位对比很多操作习惯是互通的。tail -F、journalctl -f、multitail等实时日志工具与less的配合。在嵌入式 Linux 和 BusyBox 环境中more的替代方案和限制。用less查看二进制文件时的表现以及strings命令的配合使用。建议你在自己的服务器上找一个大日志文件按照本文的步骤实际演练一遍。先用less G跳到尾部再向上搜索一个错误关键字定位行号配合-S关闭换行最后用q退出。整个过程只要熟练操作一遍后续工作中遇到再大的日志文件都不会手足无措。把这个技巧记在心里遇到线上问题的时候就能比同事更快一步定位到问题根源。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

STM32 SPI+DMA高效驱动WS2812B LED灯带:原理、代码与避坑指南 2026/9/3 6:17:00

STM32 SPI+DMA高效驱动WS2812B LED灯带:原理、代码与避坑指南

简介:本资源是面向STM32F103C8T6初学者与嵌入式进阶开发者的WS2812B灯带高效驱动方案,聚焦解决传统GPIO模拟时序响应慢、CPU占用高、易受中断干扰等痛点。采用SPIDMA硬件协同方式精准复现WS2812B单线归零码时序,显著提升刷新率与稳定性&#…

阅读更多 →
一物一码防伪追溯系统源码:通用框架与二次开发实战指南 2026/9/3 6:17:00

一物一码防伪追溯系统源码:通用框架与二次开发实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
RTDumperGUIv19:嵌入式调试利器,实时数据抓取与协议分析实战指南 2026/9/3 6:17:00

RTDumperGUIv19:嵌入式调试利器,实时数据抓取与协议分析实战指南

简介:本资源是面向网络安全分析人员、数字取证初学者及Windows系统管理员的RTDumperGUIv19内存取证工具包,专为64位Windows环境优化,解决大内存系统下高效抓取与初步分析运行时内存数据的核心需求。压缩包共4个文件(59KB&#xff…

阅读更多 →
MATLAB机器学习项目实战:从代码包解构到工程化部署全流程指南 2026/9/3 6:17:00

MATLAB机器学习项目实战:从代码包解构到工程化部署全流程指南

简介:本资源是面向机器学习初学者与MATLAB进阶用户的实践型教程包,聚焦于利用MATLAB Statistics and Machine Learning Toolbox系统实现监督学习、无监督学习及模型评估全流程。资源共48个文件,涵盖21个核心MATLAB脚本(如Decision…

阅读更多 →
离散制造背景下PLM系统选型与落地实践研究——以无锡装备制造产业为例 2026/9/3 6:17:00

离散制造背景下PLM系统选型与落地实践研究——以无锡装备制造产业为例

1 引言 随着国内制造业数字化转型持续推进,产品生命周期管理 PLM 已经成为离散制造企业研发数字化建设的核心工具。无锡作为长三角重要装备制造基地,聚集大量非标智能装备、汽车零部件、电机机械、船舶配套企业,行业普遍呈现多品种、小批量、…

阅读更多 →
SSM框架学生管理系统源码解析:从架构设计到实战部署 2026/9/3 6:14:00

SSM框架学生管理系统源码解析:从架构设计到实战部署

简介:本资源是一套基于SSM(SpringSpringMVCMyBatis)框架开发的学生信息管理系统完整源码,专为Java初学者及高校计算机类专业学生设计,适用于课程设计、期末作业与Web开发入门实践。系统涵盖学生信息的增删改查、分页展…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞