`less` 是一个功能强大的分页查看器,远远不止“空格翻页”那么简单。以下是一些能显著提升效率的实用技巧。 --- ## 1. 基础但重要的导航 | 操作 | 快捷键 | 说明 | |------|--------|------| | 向下翻一屏 | `空格` / `f` / `Ctrl+F` | 最常用 | | 向上翻一屏 | `b` / `Ctrl+B` | | | 向下翻一行 | `j` / `e` / `↓` / `Enter` | | | 向上翻一行 | `k` / `y` / `↑` | | | 转到文件首行 | `g` | | | 转到文件末行 | `G` | | | 转到第 n 行 | `n` + `g` 或 `nG` | 例如 `100g` | | 跳转百分比 | `n%` | 例如 `50%` | | 向右滚动 | `→` | 长行 | | 向左滚动 | `←` | | --- ## 2. 强大的搜索功能 | 操作 | 快捷键 | 说明 | |------|--------|------| | 向前搜索 | `/关键词` + `Enter` | 向下查找 | | 向后搜索 | `?关键词` + `Enter` | 向上查找 | | 查找下一个 | `n` | 保持同一方向 | | 查找上一个 | `N` | 反方向 | | 搜索时不区分大小写 | `/关键词` 然后按 `-i` 再按 `Enter` | 或启动时加 `-i` | | 高亮所有匹配 | `/关键词` 后,输入 `&` 并回车 | 见下文“过滤模式” | 💡 **技巧**:输入 `/` 后按 `↑` 可以调出上一次搜索的关键词。 --- ## 3. 高级过滤:只显示匹配的行(类似 grep) 这是 `less` 的一个隐藏神技 —— **& 命令**: 1. 按 `&` 键 2. 输入正则表达式(例如 `error` 或 `^INFO`) 3. 回车 → `less` 会**只显示包含该模式的行**,其他行隐藏。效果类似于 `grep` 但仍在 `less` 中,可以继续上下翻动、搜索。 - 退出过滤模式:按 `&` 然后直接回车(不输入内容) --- ## 4. 标记与跳转(适合查看长日志或代码) | 操作 | 快捷键 | 说明 | |------|--------|------| | 设置标记 | `m` + 小写字母 | 例如 `ma` 在当前行设标记 a | | 跳转到标记 | `'` + 同一字母 | 例如 `'a` 跳回标记 a 位置 | | 查看所有标记 | 无直接命令 | 但标记会保持到退出 | 💡 标记在查看大文件时极有用:例如看到一处错误,设标记 `me`,继续往下翻,然后 `'e` 快速回来。 --- 在 `less` 中显示行号有两种常用方法: ### 方法一:启动时加参数 `-N` ```bash less -N filename ``` 示例效果: ``` 1 first line 2 second line 3 third line ``` `-N` 表示 `--LINE-NUMBERS`,在每行前面显示行号(从 1 开始)。 --- ### 方法二:在 `less` 运行中动态切换 进入 `less` 后,按 `-` 键,然后按 `N`,再按回车。 步骤分解: 1. 按 `-`(减号) 2. 输入 `N`(大写字母 N) 3. 按 `Enter` 此时行号会立即显示或隐藏。可以随时再次执行相同操作来切换。 --- ### 其他实用组合 - **同时显示行号且不换行(方便看表格数据)** ```bash less -NS filename ``` - **显示行号并实时跟踪日志** ```bash less -N +F filename ``` 进入后按 `Ctrl+C` 退出跟随模式即可看到行号。 - **行号显示样式说明** 行号默认是右对齐,占据固定宽度。如果文件行数很大(如超过 10 万行),`less` 会自动调整宽度,不会截断。 --- ### 注意事项 - `-N` 会稍微降低性能(极大数据集时),但通常可以忽略。 - 在管道中使用时,`less -N` 也能工作,例如:`grep error log.txt | less -N`。 如果你希望**永久开启行号**,可以在 `~/.lesskey` 或环境变量 `$LESS` 中设置: ```bash export LESS="-N" ``` 这样每次使用 `less` 都会自动显示行号。 --- ## 5. 实时查看动态文件(类似 tail -f) ```bash less +F logfile ``` 或进入 `less` 后按 `F`(大写)。 此时 `less` 会进入**跟随模式**,新追加的内容会自动显示。要退出跟随模式并回到普通 `less` 视图,按 `Ctrl+C`。 --- ## 6. 多文件操作 同时查看多个文件: ```bash less file1 file2 file3 ``` | 操作 | 快捷键 | 说明 | |------|--------|------| | 查看下一个文件 | `:n` | | | 查看上一个文件 | `:p` | | | 列出所有文件 | `:f` | 显示当前文件名及位置 | | 切换到第 N 个文件 | `:x N` | | --- ## 7. 常用命令行选项(启动时) | 选项 | 效果 | |------|------| | `less -N filename` | 显示行号 | | `less -i filename` | 搜索时不区分大小写 | | `less -S filename` | 不换行(长行横向滚动),按 `-S` 可动态切换 | | `less -R filename` | 保留 ANSI 颜色(例如 `ls --color=yes \| less -R`) | | `less -F filename` | 若文件短于一屏则直接 cat(适合脚本) | | `less +F filename` | 启动即进入 follow 模式 | | `less +/error filename` | 启动后直接搜索 `error` | --- ## 8. 实用内部命令(在 `less` 内输入) | 命令 | 效果 | | -------------- | ---------------------------- | | `=` 或 `Ctrl+G` | 显示当前行号、总行数、百分比 | | `-N` 然后回车 | 动态显示/隐藏行号 | | `-S` 然后回车 | 动态切换长行折行/切分模式 | | `-i` 然后回车 | 动态切换搜索大小写敏感 | | `v` | 用默认编辑器($EDITOR)打开当前文件并定位到同一行 | | `h` | 显示完整帮助 | | `q` 或 `Q` | 退出 | --- ## 9. 使用正则表达式搜索 `/` 和 `?` 支持基础正则表达式: - `error\|warn` 匹配 error 或 warn - `^INFO` 行首 - `.*abc.*` 任意包含 abc - `\berror\b` 全词匹配 💡 若想使用扩展正则(如 `+` `?`),可以在 `less` 中按 `-E` 启用(`less -E` 启动或在内部按 `-E` 回车)。不同版本支持度略有差异。 --- ## 10. 实用组合技 | 需求 | 命令/步骤 | |------|----------| | 查看大日志,高亮关键词 | `less -p "error" big.log`(启动后自动搜索并高亮) | | 实时跟踪并搜索 | `less +F log` 然后按 `Ctrl+C` 进入普通模式,按 `/` 搜索,再按 `F` 恢复跟踪 | | 过滤出错误行并实时跟踪 | `less +F log` 按 `Ctrl+C`,按 `&error` 过滤,再按 `F` | | 查看命令输出的同时保存副本 | `command \| tee output.log \| less` | --- ## 总结:最值得记住的 5 个技巧 1. **`/` 搜索,`n`/`N` 跳转** 2. **`&` 只显示匹配行**(比 `grep` 更灵活) 3. **`F` 实时跟踪文件增长**(`tail -f` 的替代) 4. **`m`+字母 和 `'`+字母 做标记跳转** 5. **`v` 用编辑器打开当前文件**(配合 `git diff` 或日志分析) 需要更具体的场景(比如查看超大 CSV、源码阅读、日志分析),我可以进一步展开。