vault backup: 2026-11-07 16:33:44

This commit is contained in:
cheney
2026-11-07 16:33:55 +08:00
commit 7015312702
1208 changed files with 132432 additions and 0 deletions
@@ -0,0 +1,189 @@
# 很多开发者每天都在用终端,但工具可能还停留在十几年前:`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` 开始,哪个真正解决自己的痛点,就留下哪个。终端最终应该服务于工作流,而不是为了追新而追新。