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

7.5 KiB
Raw Blame History

很多开发者每天都在用终端,但工具可能还停留在十几年前: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

图片

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

图片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

图片

10. Harlequin:把数据库操作搬进终端

如果经常处理 PostgreSQL、SQLite 等数据库,可以看看 Harlequin。

它不是传统意义上的数据库命令行,而是在终端里提供更完整的 SQL 工作区,可以连接数据库、浏览数据并执行 SQL。

例如:

harlequin postgres://user:pass@localhost:5432/db

对于不想频繁切换数据库客户端、又希望保留终端工作流的人,这类工具比较有吸引力。

**官网:**https://harlequin.sh
**GitHub:**https://github.com/tconbeer/harlequin

图片

真正值得升级的,其实是组合

这些工具单独使用,提升可能只是几十秒、几分钟;组合起来才会开始改变终端工作流。

比较实用的一套组合是:

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 开始,哪个真正解决自己的痛点,就留下哪个。终端最终应该服务于工作流,而不是为了追新而追新。