Files
Knowledge/1 使用/Linux/less 命令使用技巧.md

215 lines
6.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
`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、源码阅读、日志分析),我可以进一步展开。