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