命令行必备的小工具和小技巧

1. 文件与目录管理

ls 的现代替代品

传统的 ls 虽然常用,但展示方式较为朴素。exa 提供彩色输出、图标支持和更友好的树状显示,可以替代 ls 的日常使用。

exa -la           # 显示所有文件,含详细信息
exa -T            # 树状展示目录结构

lsd 是另一个类似选择,同样支持图标和彩色主题,安装简单,视觉效果清晰。

更直观的目录树:tree 与 broot

tree 命令以图形化方式列出目录层级,使用 -L 限制深度:

tree -L 2        # 显示两级目录结构

broot 是一个交互式目录浏览工具,支持模糊搜索、文件预览和直接操作,适合在大型项目中快速定位。

文件查找:fd 与 fzf

fdfind 的简化增强版,语法更直观、速度更快。

fd "pattern"         # 递归搜索文件名
fd -e py             # 搜索指定扩展名的文件

fzf 是一个通用的模糊搜索工具,可以与任何命令组合,实现交互式筛选。按下 Ctrl+T 即可在当前目录下模糊搜索文件或目录,并粘贴路径到命令行。

文件内容查看:bat

batcat 的加强版,带有语法高亮、行号和 Git 更改标记,阅读代码和配置文件时体验远优于 cat

bat README.md

配合管道时建议使用 bat --paging=never 关闭分页。

2. 文本搜索与处理

更快的 grep:ripgrep (rg)

ripgrep 速度极快,默认忽略 .gitignore 中的文件,语法与 grep 接近。

rg "function" ./src            # 在 src 目录下搜索 "function"
rg -t py "def "                # 只搜索 Python 文件

JSON 数据处理:jq

jq 是命令行的 JSON 处理器,能够切片、过滤、映射和转换结构化数据,在调用 API 或分析日志时不可或缺。

curl -s https://api.example.com/data | jq '.items[] | {name, id}'

使用 jq '.' 可以格式化任意 JSON 输出,使其更易读。

列处理小帮手:awk 与 column

awk 是文本处理的利器,适合从结构化文本中提取字段:

ps aux | awk '{print $2, $11}'        # 打印进程 ID 和命令

当需要将输出对齐成表格时,column 非常有用:

mount | column -t

快速查看文件差异:delta

delta 是一个增强的 diff 查看器,专门优化了 Git 的差异展示,带有语法高亮和行号,阅读代码变更时比默认 diffgit diff 更清晰。

3. 系统监控与状态

替代 top 的互动监控:htop 与 btop

htop 支持鼠标点击、上下滚动和进程树查看,比 top 更易用。
btop 则更进一步,提供 CPU、内存、磁盘、网络的图形化仪表盘,样式现代,信息密度高。

磁盘占用分析:ncdu 与 duf

ncdu 以交互方式显示目录占用的磁盘空间,通过方向键即可深入分析,快速清理大文件。

ncdu /var/log

duf 则是 df 的增强版,以简洁的彩色表格展示所有分区的使用情况和文件系统类型:

duf

实时日志和流查看:lnav

lnav 可以合并查看多个日志文件,按时间排序,支持语法高亮和 SQL 查询,适合调试时快速定位问题。

4. 网络工具

功能齐全的 HTTP 客户端:curl 与 httpie

curl 是调试 HTTP 接口的标准工具,几乎支持所有协议。httpie (命令 httphttps) 则提供更人性化的输出和简洁的语法:

http GET https://api.example.com/users/id==123

它会自动格式化 JSON 并高亮显示头部,适合日常 API 测试。

实时网速监控:bandwhich

bandwhich 可以实时显示当前系统中每个进程占用的带宽,以及正在通信的远程地址,帮助快速定位网络流量来源。

路由追踪:mtr

mtr 结合了 pingtraceroute 的功能,动态展示到目标主机的每一跳延迟和丢包率,相比传统的 traceroute 更适合持续监测网络状况。

5. 日常效率提升

命令行的百科全书:tldr 与 cheat.sh

tldr 提供比 man 更简洁实用的命令示例,多数情况下只需要看一眼常用选项:

tldr tar

cheat.sh 是一个在线查询工具,直接使用 curl 即可获取速查表:

curl cheat.sh/ls

智能目录跳转:zoxide

zoxide 会记录曾经访问过的目录,并通过关键词智能跳转。使用 z 替代 cd 后,无需再输入完整路径:

z proj         # 跳转到名字包含 "proj" 的目录

经过几次使用后,zoxide 能根据频率和最近访问时间准确匹配。

命令纠正与历史增强

  • thefuck:输错命令后输入 fuck,它会自动修正并执行正确的命令。
  • atuin:将 Shell 历史同步到 SQLite 数据库,支持跨设备同步和更强的搜索功能,可以部分替代 Ctrl+R

文档搜索与速查:cheat.sh 和 tldr 已覆盖

另外,结合 fzfbat 可以快速预览和搜索历史命令。例如配置 fzfCtrl+R 绑定来模糊查找历史记录。

6. 不可不知的命令行技巧

快捷键组合

  • Ctrl + R:反向搜索历史命令,按下后输入关键词即可匹配最近使用的命令。
  • Ctrl + A / Ctrl + E:将光标移动到行首或行尾。
  • Ctrl + U / Ctrl + K:删除光标前或光标后的内容。
  • Ctrl + W:删除前一个单词。
  • Ctrl + L:清屏,等效于 clear
  • !!:重复上一条命令,结合 sudo !! 可以在忘记使用 sudo 时快速补救。

管道与重定向

利用管道 | 将前一命令的输出作为后一命令的输入:

ps aux | grep nginx | wc -l

使用 > 将标准输出写入文件,>> 追加写入,2>&1 将错误输出合并到标准输出,方便记录日志。

别名设置

将常用的长命令设为别名,写入 .bashrc.zshrc

alias ll='ls -alF'
alias gs='git status'
alias ..='cd ..'

修改后执行 source ~/.bashrc 使其生效。

使用 heredoc 快速创建文件

cat > newfile.txt << EOF
第一行内容
第二行内容
EOF

在多行文本直接生成场景下非常高效。

动态查看文件更新:tail -f

监控日志文件时使用 tail -f /var/log/nginx/access.log 可以实时看到追加的新行。添加 -n 参数指定显示行数。

后台运行与保持会话

  • 在命令后添加 & 可以让进程在后台运行。
  • 使用 nohup 防止终端关闭后进程退出。
  • tmuxscreen 则可以维持多个持久会话,断网后也不中断任务。

命令行必备的小工具和小技巧
https://qihanx.cn/archives/ming-ling-xing-bi-bei-de-xiao-gong-ju-he-xiao-ji-qiao
作者
Qihan
发布于
2026年05月17日
更新于
2026年05月17日
许可协议