Linux 现代命令行工具速查
更新时间:2026-08-28。本文是 Linux 命令速查主题第⑭族:现代命令行工具,约 28 个命令。这些工具大多用 Rust 或 Go 写成,是
grep、find、cat、top等经典命令的现代化替代品——默认递归、默认忽略.gitignore、默认带颜色和高亮,很多还直接内建了以前要靠管道拼出来的功能。它们不是必需的,但用顺手之后很难回去。经典命令见 文件与目录、文本处理、进程与系统。
一、搜索:rg / ag / fd
经典 grep -r 有两个长期痛点:不会自动跳过 .git、node_modules、target 这类噪音目录,也不认 .gitignore。ripgrep(命令 rg)默认就遵守 .gitignore 并跳过隐藏文件和二进制文件,加上它用并行遍历 + 有限自动机实现,在大型代码库里通常比 grep -r 快一个数量级。
| 命令 | 作用 | 常用示例 |
|---|---|---|
rg | ripgrep,递归正则搜索,默认遵守 .gitignore、跳过二进制文件,现代搜索首选 | rg "pattern"(当前目录递归);rg -t py "import os"(只搜 Python);rg -i(忽略大小写);rg -l(只列文件名);rg -C 3(上下文 3 行);rg --hidden(含隐藏文件) |
ag | the silver searcher,rg 之前的同类工具,速度略慢但兼容性更广 | ag "pattern";ag -G "\.js$" "foo"(限定文件类型) |
fd | find 的替代品,语法简洁、默认忽略隐藏与 gitignore 文件、支持并行 | fd pattern;fd -e md(按扩展名);fd -t d(只搜目录);fd -x rm(对结果执行);fd "\.log$" -X vim(批量打开) |
fd的语法比find友好太多:找所有 Markdown 文件是fd -e md,而find要写find . -name "*.md";批量删除是fd -t f -x rm而不是find . -type f -exec rm {} \;。日常 90% 的查找场景,fd一行搞定。
二、JSON / YAML 处理
jq 是处理 JSON 的瑞士军刀——它把 JSON 当作数据流,用管道组合过滤器来切片、转换、统计。在到处都是 API 和 Kubernetes 配置的今天,从命令行里直接问出"这个 JSON 里 status 字段是什么"是刚需,而不是把输出贴到浏览器插件里看。
| 命令 | 作用 | 常用示例 |
|---|---|---|
jq | JSON 处理器,切片、过滤、映射、重排,几乎能完成任何 JSON 变换 | jq '.items[].name'(取值);jq -r(输出原始字符串而非 JSON);jq 'select(.a>1)'(过滤);jq -c(压缩输出);jq 'length'(长度);jq -s(把多行合成数组) |
yq | YAML/TOML/XML 处理器,语法与 jq 高度一致,改 Kubernetes 配置很方便 | yq '.spec.replicas=3' deploy.yaml;yq -o json file.yaml(YAML 转 JSON);yq -P(美化输出) |
gron | 把 JSON 转成可 grep 的扁平赋值语句,配合 grep 反查路径 | `gron data.json |
dasel | 统一查询/修改 JSON、YAML、TOML、XML、CSV 的工具,语法跨格式一致 | dasel -f config.yaml '.spec.replicas';dasel -f d.json -w json '.a.b=1' |
jq最常用的两个搭配:一是curl ... | jq '.field'直接取出 API 返回的字段,二是jq -r '.items[] | "\(.name) \(.status)"'拼成可读行。注意-r参数——不加的话字符串会带引号,直接喂给 Shell 循环就会出错。深度查询语法见 结构化数据处理。
三、文件与目录查看
cat 的问题不在功能不够,而在输出没有结构:一个上千行的配置文件能刷好几屏,想看行号还得额外加参数,看完了还得往上翻。这类替代品做的事很朴素——把人眼需要的信息直接摆出来。语法高亮让人一眼分得清关键字和字符串,行号方便定位,自动分页避免刷屏,就这么点差别,用惯了很难回去。
| 命令 | 作用 | 常用示例 |
|---|---|---|
bat | cat 的替代品,带语法高亮、行号、Git 修改标记,自动分页(不会刷屏) | bat file.py;bat -n(显示行号);bat -A(显示不可见字符);bat --diff f1 f2(并排 diff) |
eza | ls 的现代替代品(前身 exa),带颜色、图标、树状视图与 Git 状态 | eza -l(长格式);eza --tree(树状);eza -la --git(含 Git 状态);eza --sort=size |
duf | df 的替代品,彩色的磁盘使用概览,按设备类型分组更易读 | duf;duf /home(只看某挂载点);duf --all(含伪文件系统) |
把
bat设成 man 手册的阅读器,是个小众但体验提升明显的配置:从此man出来的内容也带语法高亮了。同理,把它设成默认分页器,所有走分页器的命令都跟着受益——git 的日志、systemctl 的状态、各种--help的输出,都会变得好读一些。
四、磁盘占用分析
du -sh * 能看占用,但它是自顶向下扫全盘,慢,而且不好交互。ncdu 这类工具先扫一遍建索引,然后给你一个可交互的界面,能直接往下钻到具体是哪个目录、哪个文件在吃空间。
| 命令 | 作用 | 常用示例 |
|---|---|---|
ncdu | 交互式磁盘占用分析器,可逐层下钻、直接删除,排查"磁盘满了"首选 | ncdu /;ncdu -x(不跨文件系统,扫根分区必备);ncdu -o export.json(导出结果) |
dust | du 的 Rust 替代品,默认按占用排序并画条形图,一眼看出谁最大 | dust;dust -d 2(只显示 2 层);dust -n 20(前 20 个) |
扫根分区时记得加
-x:ncdu -x /。不加的话它会跟着挂载点钻进/proc、容器 overlay、网络文件系统里,扫上几十分钟还没完。容器环境尤其要注意这点。更多磁盘运维见 磁盘与存储。
五、系统监控
| 命令 | 作用 | 常用示例 |
|---|---|---|
btop | 现代化资源监控面板,图形化显示 CPU/内存/磁盘/网络/进程,鼠标可交互 | btop |
glances | 跨平台系统监控,信息密度极高,还支持 Web 模式远程查看 | glances;glances -w(起 Web 服务,浏览器访问);glances --export csv |
nmon | IBM 出品的经典性能监控,分屏显示各子系统,适合采集后离线分析 | nmon;nmon -f -s 5 -c 288(后台采集 24 小时) |
procs | ps 的替代品,彩色输出、默认显示完整命令行、支持树状与关键字过滤 | procs;procs nginx(按名过滤);procs --tree(树状) |
六、模糊查找与目录跳转
fzf 是一个通用的模糊查找器:你把任意列表喂给它,它给你一个实时过滤的交互界面,选中后把结果输出。把它接到 Shell 的 Ctrl-R(历史命令)和文件补全上,是提升命令行效率最立竿见影的一步。
| 命令 | 作用 | 常用示例 |
|---|---|---|
fzf | 通用模糊查找器,可接任意输入源,绑定 Ctrl-R/Alt-C 后极大提升效率 | fzf(当前目录文件);`history |
zoxide | 会学习的 cd,记住你常去的目录,之后 z 片段 直接跳过去 | z proj(跳到含 proj 的常用目录);zi(交互式选择) |
direnv | 进入目录时自动加载 .envrc 环境变量,离开时自动卸载,项目隔离利器 | direnv allow(首次授权);.envrc 里写 export PATH=$PWD/bin:$PATH |
七、文本替换与基准测试
| 命令 | 作用 | 常用示例 |
|---|---|---|
sd | 直观的查找替换工具,用正则字面量语法(不用记 sed 那套转义规则) | sd 'foo' 'bar' file;sd -p(预览不写入);fd -e js -x sd 'old' 'new'(批量) |
hyperfine | 命令行基准测试工具,多次运行取统计值并自动检测预热,测命令耗时比 time 严谨得多 | hyperfine 'sleep 0.1';hyperfine --warmup 3 'rg x' 'grep -r x'(对比两个命令);hyperfine -L n 1,2,4 './app -t {n}'(参数扫描) |
tokei | 统计代码行数与语言构成,比 cloc 快很多 | tokei;tokei -t Python(只看某语言);tokei -s code(按代码行排序) |
八、网络与其他辅助
| 命令 | 作用 | 常用示例 |
|---|---|---|
xh | curl 的人性化替代品,语法简洁、自动高亮、JSON 默认格式化 | xh GET api.example.com/users;xh POST api.example.com name=bob(自动转 JSON);xh --download(下载) |
dog | dig 的现代替代品,彩色输出、默认简洁、支持 DoH/DoT | dog example.com;dog example.com AAAA;dog @1.1.1.1 example.com |
tldr | 社区维护的精简命令手册,直接给常用例子,不用在 man 里翻长篇 | tldr tar;tldr --list;tldr -p linux tar |
cheat | 个人备忘单工具,可自建 cheat sheet | cheat tar;cheat -e tar(编辑自己的备忘单) |
watchexec | 监听文件变化并自动执行命令,替代手工重跑 | watchexec -e py -- python app.py;watchexec -c -r -- make test |
entr | 轻量的文件监听执行工具,从管道接文件列表 | `ls *.go |
安装提示:这些工具大多不在系统默认源里。Ubuntu/Debian 可
apt install ripgrep fd-find bat ncdu,macOS 用brew install;cargo install和各大发行版的官方仓库也是可靠来源。老系统上名字可能带后缀,比如 Ubuntu 里fd命令叫fdfind,需要ln -s $(which fdfind) ~/.local/bin/fd或直接用别名。
一句话总结
现代工具速查:搜索换 rg/fd(更快且认 gitignore),看文件换 bat/eza,查磁盘用 ncdu/dust,监控用 btop/glances,处理 JSON 靠 jq/yq,效率靠 fzf/zoxide 补齐,记不住用法就 tldr——28 个工具不改变"做什么",但会明显改变"做得多快"。