Files
Knowledge/3 札记/2026 年,程序员值得换掉的 10 个 CLI 工具.md
T

189 lines
7.5 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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.
# 很多开发者每天都在用终端,但工具可能还停留在十几年前:`ls`、`cat`、`grep`、`find`、`du`、`top`……
这些命令当然没过时,真正变化的是使用方式。近几年出现了一批现代 CLI 工具,它们不只是“换个名字”,而是把 Git 信息、模糊搜索、语法高亮、交互界面等能力直接塞进终端。对于每天写代码、查日志、翻目录的人来说,差别会非常明显。
## 1. bat:让 cat 真正适合看代码
`cat` 很快,但看源码时基本就是一堵文字墙。
可以试试 bat,它可以理解成一个带语法高亮和 Git 集成能力的现代 `cat`:
```
bat app.pybat config.yaml
```
看代码、配置文件甚至标准输入时,都可以直接获得语法高亮和行号。尤其排查服务器配置时,不需要为了看几行内容再打开 IDE。
**GitHub:**https://github.com/sharkdp/bat
## 2. eza:ls 的现代替代
如果你的第一反应还是:
```
ls -la
```
可以看看 eza。
它提供更丰富的文件信息、颜色、图标、树形目录以及 Git 状态展示:
```
eza -lah --giteza --tree
```
它解决的并不是“不能列目录”,而是让目录信息更容易扫一眼就看懂。
**官网:**https://eza.rocks
**GitHub:**https://github.com/eza-community/eza
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/dUsYibn5krPXE0sJzYc1kEXiauH0PnWGU3kDqI1up2AKP8Gjt8MuXMuSDiat0yCYkTFJ416SsOicXCdic27Ad3gC1RGGFRRJsqKicWtXfJEgXGXc0/640?wx_fmt=png&from=appmsg&watermark=1&tp=wxpic&wxfrom=5&wx_lazy=1#imgIndex=0)
## 3. ripgrep:grep 的开发者版本
搜索代码时,`grep` 依然可靠,但 ripgrep 已经成为很多开发者的常用选择。
```
rg "TODO"rg "userId" src/
```
它支持递归搜索,并默认遵循 `.gitignore` 规则,因此搜索大型代码仓库时,不容易把 `node_modules`、构建产物等无关内容一起搜出来。
**GitHub:**https://github.com/BurntSushi/ripgrep
## 4. fd:find 不再需要记一堆参数
`find` 的问题不是能力不够,而是复杂参数组合经常需要临时回忆。
fd 更强调简单、快速和符合直觉的搜索方式:
```
fd ".json"fd "Controller"fd -H ".env"
```
查文件、找目录、搜索隐藏文件,通常不需要写一长串参数。
需要注意的是,`fd` 并不是为了覆盖 `find` 的全部能力,它更适合大量日常文件搜索场景。
**GitHub:**https://github.com/sharkdp/fd
## 5. zoxide:把 cd 变成“记忆型导航”
项目多了以后,最烦的事情之一就是不断输入:
```
cd /xxx/xxx/xxx/project
```
zoxide 会根据访问习惯记录目录,之后可以直接:
```
z project
```
甚至只输入目录名称的一部分,就能跳到经常使用的位置。它属于那种刚开始觉得“好像也没什么”,用几天以后却不太想删掉的工具。
**GitHub:**https://github.com/ajeetdsouza/zoxide
## 6. fzf:终端里的模糊搜索器
fzf 是一个通用的命令行模糊搜索工具,可以处理文件、历史命令、进程、Git 提交等各种列表。
比如搜索历史命令:
```
history | fzf
```
它真正厉害的地方在于组合能力。配合 `bat` 做预览、配合 `rg` 搜代码、配合 `zoxide` 做目录选择,终端会从“输入命令”变成一个可以交互操作的小型工作台。
**官网:**https://junegunn.github.io/fzf/
**GitHub:**https://github.com/junegunn/fzf
## ![图片](https://mmbiz.qpic.cn/mmbiz_png/dUsYibn5krPU5vOWo9ZY6pzYoOM92ibfFBhDT3YX2u5fYMUiavysGZHfg6dEvS0nxo6CUGyO6LKkK90IELnPTia3CxK46RibjEU0opPMDMXCQlqA/640?wx_fmt=png&from=appmsg&watermark=1&tp=wxpic&wxfrom=5&wx_lazy=1#imgIndex=1)7. btop:终于不用盯着 top 的字符表
服务器出问题时,很多人的第一反应还是:
```
top
```
btop 将 CPU、内存、磁盘、网络等资源信息集中到一个更直观的终端界面中,也支持交互操作。
它没有改变系统监控本身,只是降低了“从一堆数字里找异常”的成本。开发机卡顿、容器资源异常、服务器负载升高时,用起来会舒服不少。
**GitHub:**https://github.com/aristocratos/btop
## 8. dust:比 du 更容易看懂磁盘
磁盘满了以后,`du` 能告诉你文件占了多少空间,但输出通常还需要自己进一步整理。
dust 就是针对这个问题设计的:
```
dust
```
它会以更直观的方式展示目录空间占用,并帮助快速找到体积最大的目录。
**GitHub:**https://github.com/bootandy/dust
## 9. delta:让 git diff 更容易读
代码 Review 时,真正让人头疼的不是 `git diff` 不工作,而是大型 diff 看起来太累。
delta 是一个面向 Git、diff、grep 等输出的语法高亮分页器,可以提供并排展示、行号、语法高亮以及更清晰的合并冲突显示。
配置完成后:
```
git diff
```
就可以直接获得更舒服的阅读体验。
**官网:**https://dandavison.github.io/delta/
**GitHub:**https://github.com/dandavison/delta
![图片](https://mmbiz.qpic.cn/mmbiz_png/dUsYibn5krPVK2ROSOPrwj1ny5STxvPwImfIoCibhqbOu5kwwYJf7fphwGV6P0IQsqMiaicic8mkbk6Ypa0qtLZtLylrtkpCZyCsP9x0NTM1hSw8/640?wx_fmt=png&from=appmsg&watermark=1&tp=wxpic&wxfrom=5&wx_lazy=1#imgIndex=2)
## 10. Harlequin:把数据库操作搬进终端
如果经常处理 PostgreSQL、SQLite 等数据库,可以看看 Harlequin。
它不是传统意义上的数据库命令行,而是在终端里提供更完整的 SQL 工作区,可以连接数据库、浏览数据并执行 SQL。
例如:
```
harlequin postgres://user:pass@localhost:5432/db
```
对于不想频繁切换数据库客户端、又希望保留终端工作流的人,这类工具比较有吸引力。
**官网:**https://harlequin.sh
**GitHub:**https://github.com/tconbeer/harlequin
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/dUsYibn5krPUibSW8o2hmCuk4eEUKlCiccxnWOicspFd6liak3TKUkzYeibEncybtzMcreP842mGYZNBRa4UdvUiaIWAFxaxZVb0Iu9yOV8uayM8xA/640?wx_fmt=png&from=appmsg&watermark=1&tp=wxpic&wxfrom=5&wx_lazy=1#imgIndex=3)
## 真正值得升级的,其实是组合
这些工具单独使用,提升可能只是几十秒、几分钟;组合起来才会开始改变终端工作流。
比较实用的一套组合是:
```
eza       → 看目录fd        → 找文件rg        → 搜代码fzf       → 模糊筛选bat       → 看文件zoxide    → 跳目录delta     → 看 Git Diffbtop      → 看资源dust      → 查磁盘
```
例如排查一个陌生项目,可以先用 `eza` 看结构,再用 `fd` 找配置文件,`rg` 搜关键代码,`fzf` 缩小结果,最后用 `bat` 查看内容。整个过程基本不需要离开终端。
还有一个容易踩坑的地方:**不要为了“现代化”强行替换所有系统命令。**
`grep`、`find`、`cat` 依然是服务器、脚本和各种最小化环境里的基础设施。更合理的做法,是在自己的交互式 Shell 中使用新工具,而不是修改那些依赖传统命令行为的脚本。
现代 CLI 的价值也不在于“旧工具不好”,而在于它们把很多原本需要组合多个命令、记忆复杂参数的事情,变成了更直接的交互。
## 个人观点
CLI 工具真正有价值的地方,从来不是“看起来更酷”,而是把开发过程中那些每天重复几十次的小摩擦消掉。没必要一次装完全部工具,可以先从 `rg + fd + bat` 或 `fzf + zoxide + eza` 开始,哪个真正解决自己的痛点,就留下哪个。终端最终应该服务于工作流,而不是为了追新而追新。