7.5 KiB
很多开发者每天都在用终端,但工具可能还停留在十几年前: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 开始,哪个真正解决自己的痛点,就留下哪个。终端最终应该服务于工作流,而不是为了追新而追新。