上周跟一个做了五年后端的朋友吃饭,他吐槽说每天加班到九点,改bug、写接口、部署上线,忙得脚不沾地。
我问他一天写多少行代码。他说大概五十行。
我说那你每天另外四个小时在干嘛?
他说翻日志、查配置、调API、等构建……全是等。
我听完沉默了三秒,然后把我用的工具清单甩给了他。
今天这篇就是那份清单的完整版。七个工具,全是免费开源的,不用花钱,装上就能用。
一、fzf + fd:让文件搜索从分钟变成秒
你项目里有上万个文件,要找某个配置项在哪。用IDE的全局搜索?打开就要十秒。用find命令?跑完黄花菜都凉了。
fd 和 fzf 组合一下,情况完全不同。
fd是Rust写的文件搜索工具,速度比find快很多。fzf是模糊搜索工具,能交互式的筛选结果。
# 搜索所有Python文件
fd "\.py$"
# 模糊搜索文件名
fd "config"
# 配合fzf,交互式选择
fd | fzf
# 搜索文件内容并预览
rg "TODO" | fzf --preview "head -20 {}"
装好之后,我在项目里找文件基本不超过三秒。以前翻半天找不到的东西,现在敲几个字母就出来了。
这两个工具的navbox上都有对应的工具介绍。fd文件搜索 和 fzf模糊搜索 的详细用法可以参考站内指南。
二、jq:命令行里的JSON手术刀
API返回了一大坨JSON,你要找里面某个字段的值。复制出来用格式化插件?太慢了。
jq是命令行里的JSON处理工具,一行命令就能切开、过滤、转换JSON数据。
# 格式化JSON
curl https://api.example.com/users | jq '.'
# 提取特定字段
curl https://api.example.com/users | jq '.[] | {name, email}'
# 过滤条件
jq '.users[] | select(.role == "admin")' data.json
# 把JSON数组转成CSV
jq -r '.[] | [.id, .name, .email] | @csv' users.json
我调试API的时候,jq几乎是标配。curl拿回来什么乱七八糟的数据,jq一管道过去,干净利索。
navbox上有专门的 JSON Path Finder 工具,支持在线测试JSONPath表达式。跟jq配合使用,效率更高。
三、tmux:远程开发的防弹衣
SSH连到服务器,跑着训练任务或者部署脚本。突然网络断了。
恭喜你,全部重来。
tmux解决了这个问题。它是一个终端复用工具,会话独立于网络连接存在。断线了?重新连上去,attach回来,一切照旧。
# 创建新会话
tmux new -s train
# 分割窗口
Ctrl+b % (垂直分割)
Ctrl+b " (水平分割)
# 分离但不关闭
Ctrl+b d
# 重新连接
tmux attach -t train
我跑模型训练的时候基本都挂着tmux。有时候一个任务跑两天,中间断网三次都没事。
四、Docker Compose Lint:配置文件的体检医生
docker-compose.yml写了几百行,跑起来报错。你一行行翻,翻到怀疑人生。
docker-compose-lint是一个专门检查compose文件格式的工具。它能发现缩进错误、变量引用问题、端口冲突这些肉眼看不到的bug。
# 检查compose文件
docker compose lint docker-compose.yml
# 修复建议
docker compose lint --fix docker-compose.yml
我有一次在compose文件里写错了环境变量名,服务死活起不来。lint工具直接标出了错误行,改完秒过。
navbox上的 Docker Compose Lint 指南 有详细的配置说明和常见错误排查。
五、Git Hooks自动化:把重复劳动交给机器
git hook是git在特定操作时触发的脚本。pre-commit钩子可以在你提交代码前自动运行检查。
# 创建pre-commit钩子
cat > .git/hooks/pre-commit << 'EOF'
#!/bin/bash
echo "运行代码检查..."
flake8 src/
mypy src/
echo "检查通过!"
EOF
chmod +x .git/hooks/pre-commit
有了这个,每次提交代码之前会自动运行flake8和mypy。格式不对、类型不匹配,根本提交不了。
配合CI流水线,双重保险。以前代码review时被挑出来的格式问题,现在在本地就拦截了。
navbox上的 Git Hooks自动化指南 详细介绍了各种hook的配置方法和实战案例。
六、cron表达式速查:定时任务的翻译官
crontab表达式长什么样?0 2 * * 1-5。什么意思?凌晨两点,周一到周五。
记不住?正常,这东西反人类。
我用navbox上的 Cron表达式解析器 在线工具。输入表达式,立刻告诉你含义。反过来也行,选好时间规则,自动生成表达式。
# 每天凌晨3点备份
0 3 * * * /usr/local/bin/backup.sh
# 每小时第15分钟清理缓存
15 * * * * /usr/local/bin/clear-cache.sh
# 每周日凌晨1点重启服务
0 1 * * 0 /usr/local/bin/restart.sh
我把常用的几条存成笔记,需要的时候直接复制粘贴。省得每次去查文档。
七、环境变量管理:别再硬编码密码了
你代码里有没有写过这种语句?
API_KEY = "sk-1234567890abcdef"
DB_PASSWORD = "mypassword123"
有?赶紧删了。
环境变量是更安全、更灵活的管理方式。把敏感信息放到环境变量里,代码只读变量不写死值。
# 设置环境变量
export API_KEY="sk-1234567890abcdef"
export DB_PASSWORD="mypassword123"
# 在Python中读取
import os
api_key = os.environ["API_KEY"]
配合 .env 文件和 python-dotenv 库,开发环境和管理员生产环境可以完全隔离。
navbox上的 环境变量详解 有完整的配置指南和安全最佳实践。
把这些工具串起来
单独用一个工具,效率提升有限。把它们串成工作流,效果就完全不同了。
举个例子:
- 改完代码,git commit触发pre-commit钩子自动检查
- 检查通过后,用fd+fzf快速定位要部署的配置文件
- 用jq验证配置文件格式
- 提交后,cron定时任务触发部署脚本
- 部署过程挂在tmux里,不怕断网
- 部署完成,查看日志确认状态
一套流程下来,基本不需要人盯着。
我以前也以为效率提升靠的是写更快的代码。后来发现,真正的效率来自减少等待时间。等构建、等搜索、等部署——把这些时间省下来,一天多出两个小时不是梦。
行动建议
不要一口气全装上。挑一个你最痛的痛点开始:
- 文件搜索慢 → 装fd + fzf
- API调试烦 → 学jq
- 远程开发怕断 → 用tmux
- 配置老出错 → 搞docker-compose-lint
- 部署手动操作多 → 配git hooks
- 定时任务记不住 → 用cron解析器
- 密码管理不安全 → 迁移到环境变量
先解决一个问题,再解决下一个。一个月下来,你会发现自己少加了很多班。
你平时最耗时间的开发环节是什么?评论区说说,我看看哪个工具能帮上忙。