vault backup: 2026-11-07 16:33:44
This commit is contained in:
@@ -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
|
||||
|
||||

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