7个终端命令,让调试速度从1小时压缩到3分钟
1. 一眼看清所有分支和提交关系:git log --oneline --graph --all
GUI 工具点来点去?不如一行命令画出整个仓库的“家谱”:谁从谁分叉、哪里合并、哪个分支还孤零零挂着……全在眼前。
# 推荐加 --decorate 显示分支名(更清晰),建议设成别名:
alias gl="git log --oneline --graph --all --decorate"
# 设完后,终端输入 gl,秒出全景图
2. 不开 Postman,直接查 API 返回值:curl -s URL | jq .
想看 GitHub 用户名和简介?不用打开浏览器、不用装插件:
curl -s https://api.github.com/users/octocat | jq '.name, .bio'
# 输出示例:
# "The Octocat"
# "A cute cat-shaped mascot for GitHub."
✅ jq 是处理 JSON 的瑞士军刀:它不难学,但能让你从此告别复制粘贴再找字段的痛苦。
💡 小贴士:Mac 上用 brew install jq,Ubuntu/Debian 用 sudo apt install jq,5 秒装完。
3. 自动清理旧日志:find . -name "*.log" -mtime +7 -delete
服务器磁盘又红了?别手动翻文件夹!这条命令帮你:
→ 找出当前目录下所有 .log 文件
→ 只选“7 天前创建”的
→ 直接删掉
# 其他实用变体(安全第一,先试不删):
find . -size +100M -type f # 找出大于 100MB 的文件(排查大文件)
find . -mmin -30 -type f # 找出最近 30 分钟修改过的文件(快速定位刚写的日志)
# ✅ 建议先去掉 -delete,确认结果无误后再加
4. 让命令自动“刷新”:watch -n 5 command
需要盯着磁盘、Pod、日志变化?不用反复敲 df -h 或 tail -f ——交给 watch:
watch -n 5 df -h # 每 5 秒刷新一次磁盘使用率
watch -n 2 kubectl get pods # 每 2 秒刷新一次 Pod 状态(K8s 调试神器)
watch -n 1 "tail -5 app.log" # 每 1 秒显示最新 5 行日志(比 tail -f 更轻量)
💡 watch 默认带高亮变化,眼睛一扫就知道哪行动了。
5. 发现你最常敲的命令:history | awk '{print $2}' | sort | uniq -c | sort -rn | head -10
你的手指比脑子更诚实。这条命令会告诉你:过去一小时/一天里,你敲得最多的是什么?
# 示例输出(数字是执行次数):
# 287 git
# 203 cd
# 156 python
# → 那就该给 git status 加个 alias gs,cd .. 加个 alias ..,省下的都是生命。
✅ 规律:如果一个操作你重复超 10 次,就值得用 alias 封装;超 100 次?写个脚本吧。
6. 把“一堆东西”批量处理:xargs
它就像终端里的“复制粘贴+回车”自动化器——把上一条命令的输出,变成下一条命令的参数:
# 删除项目里所有 .pyc 编译文件(再也不用手动 find + rm)
find . -name "*.pyc" | xargs rm
# 只对本次修改的测试文件运行 pytest(精准、快)
git diff --name-only | grep test | xargs pytest
# 一键杀光 node 进程(本地调试时救急用)
ps aux | grep node | awk '{print $2}' | xargs kill
⚠️ 注意:xargs 默认会跳过空输入,也支持 -I{} 自定义占位符(进阶可查 man xargs)。
7. 控制命令执行顺序:&& 和 ||
这是写 Shell 脚本/部署流程的底层逻辑,也是避免“构建成功却忘了部署”的关键:
# ✅ 只有前面成功,才执行后面(安全链式操作)
npm test && npm run build && npm run deploy
# ❌ 出错了就提醒,不硬扛
git pull || echo "拉代码失败,请检查网络或权限"
# 🎯 经典三段式:成功打勾,失败报错
make build && echo "✅ 构建成功!" || echo "❌ 构建失败,请检查 Makefile"
✨ Bonus:3 分钟搭建你的「命令加速包」
把常用命令存进 ~/.aliases,再让 shell 启动时自动加载:
# 创建并编辑别名文件(Mac/Linux 终端执行):
echo 'alias gs="git status"' >> ~/.aliases
echo 'alias gp="git push"' >> ~/.aliases
echo 'alias dc="docker compose"' >> ~/.aliases
echo 'alias py="python3"' >> ~/.aliases
echo 'alias serve="python3 -m http.server 8000"' >> ~/.aliases
echo 'alias ports="lsof -i -P -n | grep LISTEN"' >> ~/.aliases
# 让当前终端立即生效:
source ~/.aliases
下次打开终端,gs 就是 git status,serve 就是起一个本地 HTTP 服务——像呼吸一样自然。
最后送你一句提米哥真心话:
高手不是记住了更多命令,而是养成了「这个操作我能用一行命令搞定吗?」的习惯。
点五次鼠标 → 写一行find
翻三页文档 → 记一个jq '.data[].id'
重复十遍操作 →alias deploy="npm run build && scp dist/* user@server:/var/www"
工具不重要,觉察重复、立刻封装、持续精简——这才是终端思维的真正内核。
直达网址:https://t.me/SwiftUIDaily
