用好这5个命令行工具,你的Linux终端效率翻倍

如果你每天都要在终端里敲命令,那你一定懂那种感觉——用 find 找文件要查手册、用 grep 搜代码眼花缭乱、看 JSON 日志像是在破解密码。其实这些问题早就有人替你解决了。今天分享 5 个我几乎每天都在用的命令行工具,每一个都能让你少敲一半的键盘。

1. fzf — 模糊搜索,万物皆可选

fzf 是一个通用的命令行模糊查找器。它的核心能力很简单:从标准输入读取一堆文本,让你交互式地筛选,然后把选中的结果输出。但就是这个简单的机制,能组合出无数玩法。

最常用的场景——搜索历史命令:按 Ctrl+R 不再是 bash 自带的那个反人类的反向搜索,而是 fzf 的漂亮界面。打几个字母,历史命令瞬间过滤出来。再比如快速切换目录:cd $(find . -type d | fzf),输入目录名的几个字母,回车即跳转。

更进阶的用法:用 fzf 预览文件内容、交互式 kill 进程、配合 git 切换分支。它能嵌入到任何管道中,成为你命令行的「搜索框」。装一个试试:apt install fzf,然后在 .bashrc 里加上 source /usr/share/doc/fzf/examples/key-bindings.bash 就能用了。

2. ripgrep (rg) — 快到你感觉它在作弊

如果说 grep 是一辆家用轿车,那 ripgrep 就是一辆 F1 赛车。它用 Rust 写成,默认遵守 .gitignore 规则,自动跳过二进制文件和隐藏目录,输出带颜色高亮,而且是多线程搜索。

实际使用中,ripgrep 比 grep 快 5-10 倍是常态。在一个几万文件的仓库里搜一个关键词,grep 要等好几秒,rg 几乎秒出结果。它的参数设计也非常直觉:rg -l "关键词" 只列文件名,rg -C 3 "关键词" 显示上下文各 3 行,rg --type py "关键词" 只搜 Python 文件。

还有一个我特别喜欢的特性:rg -u 可以临时忽略 gitignore,搜所有文件。装它只需要 apt install ripgrep,卸载 grep 倒是不必,但你会发现自己越来越少用它了。

3. bat — cat 的豪华升级版

如果你到现在还在用 cat 看文件,你得赶紧试试 bat。它做的事情和 cat 一样——显示文件内容——但体验天差地别:语法高亮、行号、Git 修改标记、自动分页,甚至能显示不可见字符。

比如你打开一个 Python 文件,bat 会自动给关键字、字符串、注释上色,左边显示行号,右边如果文件在 git 仓库里还会标记哪些行被修改过。对比一下:cat /etc/nginx/nginx.conf 是一片黑白,bat /etc/nginx/nginx.conf 是彩色、有行号、清晰可读。

它还支持大量语言和配置文件格式,连 Dockerfile、systemd unit 文件都能正确高亮。如果你是那种经常 cat config.yaml | less 的人,一个 bat config.yaml 全部搞定。apt install bat 即可,注意有些发行版包名叫 batcat

4. fd — 你再也用不着 man find 了

find 命令有多强大,就有多难记。find . -name "*.py" -mtime -7 这个语法没有几个人能不看文档写对。fd 就是来解决这个问题的:它也是用 Rust 写的,语法直观到一看就会。

比如找所有 Python 文件:fd '\.py$'。找最近 7 天修改过的文件:fd --changed-within 7d。找大于 1MB 的文件:fd --size +1m。它默认忽略 .gitignore 里的文件和隐藏目录,搜索速度极快,输出还带颜色。

一个典型的场景:你想在项目里找一个叫 user.py 的文件,fd user.py 一秒出结果。而用 find 的话,你得想半天参数怎么写。而且 fd 支持正则表达式,还能用 -x 对找到的每个文件执行命令,比如 fd '\.jpg$' -x convert {} {.}.png 批量转换图片格式。

5. jq — 让 JSON 从乱码变可读

在 API 和微服务的时代,你几乎每天都在跟 JSON 打交道。curl 一个接口返回的 JSON 挤在一行里,根本没法看。jq 就是 JSON 的瑞士军刀——格式化、过滤、转换,全在一行命令里。

最基础的用法:curl -s api.example.com/data | jq .——把压缩的 JSON 格式化成可读的缩进结构。进阶一点:jq '.items[] | {name: .title, count: .stats.total}' 可以提取和重塑字段。再比如 jq '.[] | select(.status == "error")' 过滤出所有错误项。

jq 有自己的查询语言,学起来稍微有一点点曲线,但一旦掌握,你会发现处理 JSON 从痛苦变成了享受。装它:apt install jq

组合起来才是真正的威力

这些工具单独用已经很强,但管道组合在一起才是终极形态。举个例子:你想找一个目录下所有 JSON 文件中包含某个字段的文件,并提取该字段的值——一行命令搞定:

fd '\.json$' | fzf -m | xargs jq '.target_field'

先用 fd 快速找到所有 JSON 文件,用 fzf 交互式多选,再交给 jq 提取目标字段。整个过程流畅得像在用一个 IDE,但实际你只是在终端里敲了一行命令。

这些工具的共同点是:它们都遵循 Unix 哲学——做好一件事,通过管道组合。它们不试图替代你现有的工作流,而是在每个环节上提升那么一点点体验。五个一点点加起来,就是效率翻倍。

如果你还一个都没装,今天就装一个开始试试。我建议从 batfd 入手,这两个对日常习惯的改变最明显。装完回来告诉我哪个你最喜欢。

上一篇 2026年中科技趋势盘点:AI硬件爆发、端侧智能与新计算时代
stone

stone

这个人很懒,什么都没有留下。

本月创作热力图

文章列表
1 MoviePilot安装
MoviePilot安装
2
忙了大半个月
忙了大半个月
3
2022 年 03 月 03 日 23 时 31 分
2022 年 03 月 03 日 23 时 31 分
4
Alist好像还不错
Alist好像还不错
5
当一个人不联系你,也不拉黑你
当一个人不联系你,也不拉黑你
最新评论
tt
tt
3月2日
测试评论
Typecho
Typecho
2月16日
欢迎加入 Typecho 大家族