【Linux命令】less 与 more

lessmore 是 Linux/Unix 系统中两个非常常用的分页查看器命令。它们的主要作用是让你能够逐屏或逐行地查看长文本文件的内容,而不是像 cat 命令那样一次性将所有内容输出到终端,导致内容快速滚动而过,难以阅读。

核心目的: 方便、可控地浏览大型文本文件。

为什么需要它们?

  • 查看日志文件(如 /var/log/syslog)。
  • 阅读长配置文件。
  • 查看命令输出(通过管道 | 传递给它们)。
  • 阅读手册页(man 命令内部就使用了分页器)。

1. more 命令

  • 简介: 较早出现的分页器。名字来源于它一次显示“一屏(more)”内容。
  • 主要特点:
    • 基本的前进功能。
    • 只能向下(向前)翻页/翻行不能向上(向后) 滚动查看已经看过的内容(这是它与 less 最本质的区别)。
    • 功能相对简单。
  • 基本用法:
    more [选项] 文件名
    
    或者用于管道:
    某个产生长输出的命令 | more
    
  • 常用快捷键 (在 more 运行中):
    • 空格键 (Space): 向下翻一屏
    • 回车键 (Enter): 向下翻一行
    • / + 搜索词 + Enter: 向下搜索指定的字符串。按 n 查找下一个匹配项。
    • :f 或 Ctrl+G: 显示当前文件名和行号。
    • qQ: 退出 more
    • =: 显示当前行号。
    • h: 显示帮助信息(列出可用快捷键)。
    • b (在某些实现中): 尝试 向上翻一屏(但并非所有系统/版本的 more 都支持向后翻,即使支持,也只能翻回当前加载的部分,不能像 less 那样自由回溯整个文件)。不要依赖 b 键在 more 中的行为。
  • 常用选项:
    • -num: 指定每屏显示的行数。例如 more -10 filename 每屏显示 10 行。
    • +num: 从文件的第 num 行开始显示。例如 more +50 filename 从第 50 行开始显示。
    • +/pattern: 从文件中匹配 pattern 的第一行开始显示。例如 more +/error logfile 从第一个包含 “error” 的行开始显示。
  • 使用示例:
    • 查看文件: more /var/log/syslog
    • 每屏显示 15 行: more -15 largefile.txt
    • 从第 100 行开始看: more +100 report.txt
    • 查找第一个包含 “warning” 的位置开始看: more +/warning messages.log
    • 查看 ls -l 的长输出: ls -l /usr/bin | more

2. less 命令

  • 简介: 作为 more 的增强版出现,名字是个有趣的文字游戏(“less is more” - 少即是多)。它提供了比 more 强大得多的功能,尤其是双向滚动
  • 主要特点:
    • 可以自由地向上(向后)和向下(向前) 翻页/翻行。这是最大的优势!
    • 支持强大的搜索功能(支持正则表达式)。
    • 支持在文件中标记位置并跳转
    • 支持查看文件开头 (g) 和结尾 (G)
    • 启动速度通常比文本编辑器(如 vi)快。
    • 可以监视文件内容的新增(类似 tail -f,但更可控)。
    • man 命令默认使用的分页器。
    • 功能极其丰富。
  • 基本用法:
    less [选项] 文件名
    
    或者用于管道:
    某个产生长输出的命令 | less
    
  • 常用快捷键 (在 less 运行中):
    • 空格键 (Space) 或 f: 向下翻一屏
    • 回车键 (Enter) 或 ej: 向下翻一行
    • b: 向上翻一屏
    • yk: 向上翻一行
    • d / u: 向下 / 向上翻半屏
    • g<: 跳到文件第一行
    • G>: 跳到文件最后一行
    • / + 搜索词 + Enter: 向下搜索指定的字符串(支持正则表达式)。
    • ? + 搜索词 + Enter: 向上搜索指定的字符串(支持正则表达式)。
    • n: 重复上一次搜索(同方向)。
    • N: 反向重复上一次搜索(反方向)。
    • h: 显示完整的帮助信息(非常详细,强烈推荐查看!)。
    • qQ: 退出 less
    • F: 跟随模式 (类似 tail -f)。实时显示文件新增内容。按 Ctrl+C 退出跟随模式,然后按 q 退出 less
    • m + 字母: 用指定的小写字母标记当前位置(例如 ma)。
    • ' + 字母: 跳转到用指定字母标记的位置(例如 'a)。
    • :n 或 :p: 在查看多个文件时 (less file1 file2),切换到下一个 (n)上一个 § 文件。
    • =Ctrl+G: 显示文件状态(文件名、总行数、当前行号/百分比等)。
    • v: 使用系统默认编辑器(通常是 vi/vim编辑当前文件。退出编辑器后会回到 less
  • 常用选项:
    • -N--LINE-NUMBERS: 显示行号
    • -i--ignore-case: 搜索时忽略大小写
    • -I--IGNORE-CASE: 搜索时忽略大小写,且即使搜索模式包含大写也强制忽略(比 -i 更强)。
    • -S--chop-long-lines: 截断过长的行(不自动换行),使用左右箭头 ( )- + 键水平滚动查看。
    • +F--follow: 启动时直接进入跟随模式(相当于打开文件后按了 F)。
    • +G: 启动时直接跳转到文件末尾(相当于打开文件后按了 G)。
    • +/pattern: 启动时直接定位到匹配 pattern 的第一个位置并高亮(相当于打开文件后按了 /pattern)。
  • 使用示例:
    • 查看文件 (带行号): less -N /etc/nginx/nginx.conf
    • 查看命令输出: ps aux | less
    • 忽略大小写搜索: less -i logfile.txt (然后在里面输入 /ERROR 会匹配 “error”, “Error”, “ERROR” 等)
    • 查看文件并直接跟踪新增内容: less +F /var/log/apache2/access.log
    • 查看文件并直接跳到最后: less +G growingfile.log
    • 查看文件并直接查找 “404”: less +/404 access.log
    • 查看多个文件: less file1.txt file2.log (用 :n:p 切换)
    • 查看长行文件(不换行): less -S very_wide_file.csv (用左右箭头水平滚动)

less vs more 关键区别总结

特性 less more
回溯能力 ✅ 支持 (可自由向上/向下滚动) ❌ 基本不支持 (只能向下,部分实现 b 键有限回溯)
搜索方向 ✅ 双向搜索 (/ 向下, ? 向上) ❌ 仅向下搜索 (/)
搜索特性 ✅ 支持正则表达式 ⚠️ 通常只支持简单字符串
行号 ✅ 支持 (选项 -N) ⚠️ 通常不支持 (显示位置信息有限)
文件监视 ✅ 支持 (快捷键 F 或 选项 +F) ❌ 不支持
标记跳转 ✅ 支持 (m 标记, ' 跳转) ❌ 不支持
帮助信息 ✅ 非常详细 (h) ⚠️ 较简单 (h)
资源占用 ⚠️ 略高 (但通常不是问题) ✅ 极低
普及性 现代系统首选,功能丰富 ⚠️ 存在时间久,功能基础

简单来说:less 几乎在所有方面都比 more 更强大、更灵活。 尤其是在需要回溯查看之前内容、双向搜索、查看实时日志或处理复杂文件时,less 是绝对的首选。more 的优势主要在于其极简性和在所有古老或资源极其受限的 Unix 系统上的普遍存在性(不过现在 less 的普及度也非常非常高了)。

结论:优先学习并使用 less 它几乎能满足你所有分页查看的需求,并且是更现代、更强大的工具。了解 more 的基本用法作为知识储备即可。

你可能感兴趣的:(Linux,linux)