一、命令概述
less
是一款功能强大的文本分页查看工具,类似于 more
,但支持向前/向后滚动、快速定位,且无需读取整个文件即可启动,适合查看大型文件。它兼容多种终端,命令语法融合了 more
和 vi
的特点,支持通过数字前缀(N
)指定操作次数,灵活性极高。
二、基本语法
less -?
less --help
less -V
less --version
less [选项] [文件名...]
三、核心功能
- 双向滚动:可向前(下)、向后(上)滚动文件内容,支持按页、按行、按比例滚动。
- 快速启动:无需加载整个文件,适合 GB 级大文件。
- 搜索与过滤:支持正则表达式搜索,可高亮匹配结果,过滤显示特定行。
- 多文件浏览:可同时打开多个文件,快速切换并保持标记位置。
- 终端兼容:通过
termcap
或 terminfo
适配多数终端,包括硬拷贝终端。
四、常用命令详解(交互时使用)
在 less
中输入的命令可带数字前缀 N
(默认 1),表示执行 N
次操作。
1. 滚动命令
命令 | 功能描述 | 示例 |
---|
SPACE / f / ^F | 向前滚动 N 页(默认 1 页) | 5f 向前滚动 5 页 |
b / ^B | 向后滚动 N 页(默认 1 页) | 3b 向后滚动 3 页 |
ENTER / j | 向前滚动 N 行(默认 1 行) | 10j 向前滚动 10 行 |
k / ^Y | 向后滚动 N 行(默认 1 行) | 5k 向后滚动 5 行 |
d / ^D | 向前滚动 N 半页(默认 1 半页),N 会成为后续 d /u 的默认值 | 2d 向前滚动 2 半页,后续 d 也默认滚动 2 半页 |
u / ^U | 向后滚动 N 半页(默认 1 半页),N 会成为后续 d /u 的默认值 | 4u 向后滚动 4 半页 |
z | 向前滚动 N 行,N 会成为新的“页大小”(默认 1 页) | 20z 向前滚动 20 行,后续 z 默认滚动 20 行 |
ESC-) / RIGHTARROW | 向右水平滚动 N 字符(默认半屏宽度) | ESC-) 向右滚动半屏,10ESC-) 向右滚动 10 字符 |
ESC-( / LEFTARROW | 向左水平滚动 N 字符(默认半屏宽度) | ESC-( 向左滚动半屏 |
2. 跳转命令
命令 | 功能描述 | 示例 |
---|
g / < | 跳转到第 N 行(默认第 1 行,文件开头) | 100g 跳转到第 100 行,g 跳转到文件开头 |
G / > | 跳转到第 N 行(默认最后一行,文件结尾) | 500G 跳转到第 500 行,G 跳转到文件结尾 |
p / % | 跳转到文件的 N% 位置(N 为 0-100,可带小数) | 50p 跳转到文件中间(50% 位置),33.3% 跳转到 33.3% 位置 |
P | 跳转到字节偏移量为 N 的行 | 1024P 跳转到第 1024 字节所在行 |
{ / } | 跳转到与当前屏幕首行/末行的左/右大括号匹配的位置 | { 从当前首行的左大括号跳转到匹配的右大括号 |
( / ) | 跳转到与当前屏幕首行/末行的左/右括号匹配的位置 | ) 从当前末行的右括号跳转到匹配的左括号 |
3. 标记与跳转
命令 | 功能描述 | 示例 |
---|
m<字母> | 用小写字母标记当前位置(如 ma 标记当前位置为 a ) | mb 标记当前行为 b |
'<字母> | 跳转到标记 <字母> 对应的位置 | 'b 跳转到标记 b 的位置 |
'' (两个单引号) | 跳转到上一次“大移动”(如 g /G /p )的位置 | 执行 G 后,'' 跳回之前的位置 |
4. 搜索与过滤
命令 | 功能描述 | 示例 |
---|
/pattern | 向前搜索匹配 pattern 的第 N 行(pattern 为正则表达式) | /error 向前搜索“error”,3/warn 向前搜索第 3 个“warn” |
?pattern | 向后搜索匹配 pattern 的第 N 行 | ?debug 向后搜索“debug” |
n | 重复上一次搜索(同方向) | 执行 /error 后,n 找下一个“error” |
N | 重复上一次搜索(反方向) | 执行 /error 后,N 找上一个“error” |
&pattern | 只显示匹配 pattern 的行(空 pattern 取消过滤) | &^# 只显示以“#”开头的行(注释行),& 取消过滤 |
5. 文件操作
命令 | 功能描述 | 示例 |
---|
:e [文件名] | 打开新文件(无文件名则重新加载当前文件) | :e new.txt 打开 new.txt,:e 重新加载当前文件 |
:n | 查看下一个文件(命令行指定的文件列表) | :n 切换到下一个文件,2:n 切换到第 2 个下一个文件 |
:p | 查看上一个文件 | :p 切换到上一个文件 |
:d | 从文件列表中删除当前文件 | :d 移除当前文件,后续 :n 不会再显示 |
6. 其他常用命令
命令 | 功能描述 | 示例 |
---|
h / H | 显示帮助信息 | h 查看所有命令说明 |
v | 用编辑器打开当前文件(默认 vi ,可通过 VISUAL /EDITOR 环境变量修改) | v 用 vi 编辑当前文件 |
!command | 执行 shell 命令(% 代表当前文件,# 代表上一个文件) | !grep error % 在当前文件中搜索“error”,!ls 执行 ls 命令 |
q / Q | 退出 less | q 退出 |
= / ^G | 显示当前文件信息(文件名、行号、百分比等) | = 查看当前位置:“file.txt lines 100-200/1000 (20%)” |
五、常用选项详解(命令行参数)
选项支持短格式(如 -e
)和长格式(如 --quit-at-eof
),长格式可缩写(如 --quit
等效 --quit-at-eof
)。
1. 退出控制
选项 | 功能描述 | 示例 |
---|
-e / --quit-at-eof | 第 2 次到达文件末尾时自动退出 | less -e log.txt 查看 log.txt,两次到末尾后退出 |
-E / --QUIT-AT-EOF | 第 1 次到达文件末尾时自动退出 | less -E data.txt 到末尾后立即退出 |
-F / --quit-if-one-screen | 若文件内容少于一屏,自动退出 | less -F short.txt 若 short.txt 内容一页可显,直接退出 |
2. 搜索与高亮
选项 | 功能描述 | 示例 |
---|
-i / --ignore-case | 搜索时忽略大小写(若 pattern 含大写则不忽略) | less -i text.txt 搜索“Hello”时匹配“hello”“HELLO” |
-I / --IGNORE-CASE | 搜索时强制忽略大小写(即使 pattern 含大写) | less -I text.txt 搜索“HELLO”时仍匹配“hello” |
-g / --hilite-search | 只高亮上一次搜索的匹配结果(默认高亮所有匹配) | less -g log.txt 搜索“error”后,只高亮当前找到的“error” |
-G / --HILITE-SEARCH | 关闭所有搜索高亮 | less -G log.txt 搜索结果不高亮 |
3. 显示设置
选项 | 功能描述 | 示例 |
---|
-s / --squeeze-blank-lines | 合并连续空行为一行 | less -s report.txt 连续空行显示为一行 |
-S / --chop-long-lines | 截断长行(不换行,默认换行) | less -S wide.txt 长行超出屏幕部分不显示 |
-N / --LINE-NUMBERS | 显示行号 | less -N code.c 每行前显示行号 |
-n / --line-numbers | 不显示行号(提升大文件性能) | less -n bigfile.dat 不显示行号,加快加载 |
-w / --hilite-unread | 向前翻页后,高亮第一行新内容(临时) | less -w book.txt 翻页后高亮新出现的第一行 |
4. 文件处理
选项 | 功能描述 | 示例 |
---|
-f / --force | 强制打开非普通文件(如目录、二进制文件),不显示警告 | less -f /dev/log 查看日志设备文件 |
-k <keyfile> / --lesskey-file=<keyfile> | 加载自定义按键绑定文件(lesskey 生成) | less -k ~/.lesskey 使用自定义按键配置 |
-t <tag> / --tag=<tag> | 跳转到 tag 对应的位置(依赖 tags 文件,需 ctags 生成) | less -t main code.c 直接跳转到 main 函数定义处 |
5. 其他实用选项
选项 | 功能描述 | 示例 |
---|
-j <n> / --jump-target=<n> | 设置搜索/跳转的目标行在屏幕中的位置(n 为行号或百分比,如 -j5 目标行在第5行) | less -j.3 log.txt 搜索结果显示在屏幕 30% 位置 |
-X / --no-init | 不发送终端初始化/反初始化命令(避免退出后清屏) | less -X report.txt 退出后保留屏幕内容 |
-r / --raw-control-chars | 显示原始控制字符(默认用 ^A 等表示) | less -r control.txt 直接显示 ^A 等控制字符 |
-R / --RAW-CONTROL-CHARS | 只显示 ANSI 颜色控制序列(保留屏幕格式) | less -R color.log 正确显示带颜色的日志 |
六、环境变量
less
行为可通过环境变量调整,常用变量如下:
变量名 | 功能描述 | 示例 |
---|
LESS | 预设 less 选项(命令行选项会覆盖此处) | export LESS="-i -N" 默认开启忽略大小写和行号 |
LESSOPEN | 输入预处理器(如自动解压压缩文件) | `export LESSOPEN=" |
LESSCLOSE | 输入后处理器(如清理预处理器生成的临时文件) | export LESSCLOSE="lessclose.sh %s %s" 清理临时文件 |
VISUAL /EDITOR | 定义 v 命令使用的编辑器(VISUAL 优先) | export VISUAL="nvim" 用 neovim 编辑文件 |
LESSCHARSET | 指定字符集(如 utf-8 、latin1 ) | export LESSCHARSET="utf-8" 正确显示 UTF-8 文本 |
七、实用示例
-
查看文件并显示行号
less -N README.md
-
实时监控日志文件(类似 tail -f
)
less +F /var/log/syslog
-
搜索并高亮匹配内容
less -i /etc/passwd
-
处理压缩文件(需 LESSOPEN
配置)
less data.tar.gz
-
多文件浏览并切换
less file1.txt file2.txt file3.txt
-
截断长行并水平滚动
less -S wide.csv
-
只显示含特定关键词的行
less access.log