找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2175

积分

0

好友

291

主题
发表于 3 小时前 | 查看: 3| 回复: 0

工作这些年,我待过不少产品型的公司做后端开发。从早期的创业团队,到后来每天要处理数百万请求的系统,我观察到一个有趣的现象:真正决定你日常工作效率上限的,往往不是选了什么炫酷的框架,或者用了哪家云厂商的服务。而是你每天打交道的命令行工具

当凌晨3点的告警电话把你叫醒时,你眼前的这个终端,要么是你的“驾驶舱”,让你能快速定位问题;要么就是个“瓶颈”,让你在混乱的输出和复杂的命令里浪费时间。这篇文章不谈什么“10倍效率”的神话,咱们聊点更实际的:如何用对工具,来减少重复操作减少上下文切换减少认知负担

下面这10个CLI工具,就是我日常工作中离不开的“效率加速器”。

什么样的CLI工具才算得上“专业”?

在我看来,一个优秀的、能称得上“专业级”的命令行工具,通常具备以下四个特征:

1. 可组合性 (Composability)

它应该能很好地通过管道 (|)、过滤器或者退出码与其他工具协同工作,这是经典的 Unix 哲学。

2. 人体工程学 (Ergonomics)

设计上要尽量减少你的击键次数、过滤掉无用的噪音输出,并且避免让你在不同界面间频繁切换。

3. 可复用性 (Repeatability)

工具本身应该易于编写脚本,并且其使用模式方便在团队内共享和固化,形成统一的最佳实践。

4. 对可观测性友好 (Observability-friendly)

在处理日志、调试API、查看git diff或进行本地排错时,它能提供清晰、结构化的输出,而不是一堆需要你费力解析的文本。


1. HTTPie —— API调试的舒适之选

为什么用它?因为它让调试API变得异常直观,输出格式对人类极其友好

看看这个例子,如何获取令牌并用其查询用户:

TOKEN=$(http -b POST https://api.example.com/login username=dev password=secret | jq -r .token)

http GET https://api.example.com/users Authorization:"Bearer $TOKEN" \
| jq '.data[] | {id, email}'

专业玩法

  • 配合 jq 直接处理返回的JSON数据。
  • 配合 less -R 进行分页浏览,保留颜色输出。
  • 配合 grc (generic colourizer) 让输出更加五彩斑斓。

替代品xh, curlie

2. jq —— JSON处理的神器

在现代后端系统中,JSON无处不在——API响应、结构化日志、Kubernetes的配置清单,各种配置文件里都能见到它。jq就是为处理它们而生的。

例如,从JSON格式的日志中快速过滤出错误级别的事件:

jq -r '.events[]
| select(.level=="error")
| [.timestamp, .msg]
| @tsv' < app.log.json

建议:维护一个自己的 ~/.jq 文件,把常用的过滤器函数放进去,随取随用。

3. ripgrep (rg) —— 最快的代码搜索引擎

当你需要快速回答“这个函数在哪儿被调用了?”或者“这个报错信息源自哪行代码?”时,ripgrep 通常是能找到答案的最快途径。

示例:在项目中搜索CreateUserCommand,并智能忽略.gitnode_modules目录:

rg --hidden -g '!.git' -g '!node_modules' 'CreateUserCommand'

专业技巧:配置 fzf(下面会介绍)使用 rg 作为其默认的文件搜索源,强强联合。

4. fzf —— 模糊查找一切

fzf 是一个通用的模糊查找器,几乎能搜索任何列表:文件、Git分支、命令历史、甚至进程列表。

基础用法,搜索文件并用VS Code打开:

fzf | xargs -r code

强烈推荐绑定:将 Ctrl + R 绑定给 fzf 来搜索历史命令,用过就回不去了。

5. fd —— 更人性化的 find 命令

fd 是传统 find 命令的一个现代化、更快速的替代品。它的语法更直观,默认设置更智能(例如自动忽略.gitignore中的文件)。

示例:找到所有.proto文件并用clang-format格式化:

fd -e proto | xargs -r clang-format -i

常见组合fd + xargs, 或者 fd + parallel 进行并行处理。

6. bat —— 带了“翅膀”的 cat

bat 可以看作是 cat 命令的超集,它提供了语法高亮、行号显示,并且集成了Git,能显示文件的修改状态。

bat来优雅地查看git diff的输出:

git diff | bat --paging=always

建议:直接将 bat 设置为你的默认分页器 (PAGER)。

7. zoxide —— 智能目录跳转

仔细想想,cd 可能是我们最常用的命令之一。zoxide 会学习你访问目录的习惯,实现智能跳转。

例如,无论你在哪个目录,只需输入:

z my-api

它很可能就会带你跳到 ~/work/services/my-api。导航效率直线上升。

8. delta —— 赏心悦目的 Git Diff 查看器

默认的 git diff 输出对于阅读复杂变更来说并不友好。delta 提供了并排视图 (side-by-side)、语法高亮和行号,让代码审查变得轻松。

配置你的 ~/.gitconfig,让所有diff输出都通过delta

[pager]
    diff = delta
    log = delta
    reflog = delta

9. gh —— GitHub 命令行工具

有了 gh,你可以在不离开终端的情况下完成大部分GitHub操作,比如创建拉取请求 (PR):

gh pr create \
  --title "Add Redis cache layer" \
  --body-file .github/pr_templates/cache.md \
  --label "performance" \
  --reviewer alice,bob

除此之外,评审PR、查看CI状态、进行Cherry-pick等操作也都能轻松完成,极大优化了基于GitHub的工作流。

10. just —— 优雅的现代任务运行器

很多团队的日常是:在Slack或文档里复制粘贴一长串命令来启动服务、运行迁移。just 可以将这些流程标准化、文档化。

一个简单的 justfile 示例:

bootstrap:
    ./scripts/bootstrap.sh

db-up:
    docker compose up -d db redis

serve:
    RUST_LOG=info ./target/debug/api

然后,任何团队成员只需要运行 just serve 就能启动服务。共享justfile后,团队能迅速形成统一的“肌肉记忆”。


真正的威力在于“管道组合”

单个工具的强大只是基础,真正能产生质变的是将它们通过Unix管道组合起来,形成高效的工作流。

快速排查生产环境问题

stern -n prod api-deployment \
| jq -r 'select(.level=="error") | [.ts, .msg] | @tsv' \
| rg -n "timeout|429|deadlock"

根据请求ID追踪全链路日志

export CID="2f6b0d4c..."
rg "$CID" ~/work/services/*/logs/*.json \
| fzf

调试API并同时保存原始结果

http GET :8080/v1/report start==2025-10-01 end==2025-10-23 \
| tee /tmp/report.json \
| jq '.summary'

安全地进行批量代码重构

fd -e go 'OldClient' | xargs sed -i 's/OldClient/NewClient/g'
rg 'OldClient' # 再次确认是否替换干净

推荐配置片段 (Dotfiles)

让你的工具组合发挥1+1>2的效果。

fzf 使用 ripgrep 作为搜索引擎:

export FZF_DEFAULT_COMMAND='rg --files --hidden -g "!.git"'

bat 设为默认分页器:

export PAGER="bat"
export BAT_PAGER="less -R"

配置 ripgrep 的全局忽略规则 (~/.ripgreprc):

--hidden
-g !.git
-g !node_modules
-g !dist

初始化 zoxide (以bash为例):

eval "$(zoxide init bash)"

一键安装

macOS (Homebrew):

brew install httpie jq ripgrep fzf fd bat zoxide git-delta gh just

Ubuntu/Debian:

sudo apt install httpie jq ripgrep fzf fd-find bat zoxide git-delta gh
# just 可能需要通过其他方式安装,如 `cargo install just`

其他值得关注的好工具

  • eza —— ls 命令的现代化替代品,功能更丰富。
  • htop / btm —— 交互式进程/系统资源监视器。
  • pgcli / mycli —— 为PostgreSQL和MySQL设计的智能命令行客户端,带自动补全和高亮。
  • stern —— 用于追踪多个Kubernetes Pod和容器日志的神器。
  • watchexec —— 监视文件变化并自动执行指定命令,本地开发的利器。

工欲善其事,必先利其器。花点时间配置好你的命令行环境,它将成为你最高效、最可靠的伙伴。如果你也在寻找一个能交流这些“利器”使用心得的地方,不妨来云栈社区逛逛,这里聚集了许多热爱分享的开发者。




上一篇:Linux特殊权限详解:setuid、setgid与sticky位的原理与应用
下一篇:OpenClaw (ClawdBot) 本地部署实战:从安装到飞书接入的完整排错指南
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-12 10:22 , Processed in 0.553902 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表