🚀 命令行工具进阶指南:Git、Shell与效率工具的进阶之路
掌握命令行工具,让你的开发效率突飞猛进。本文将深入探讨 Git 高级技巧、Shell 脚本自动化以及各种效率倍增的 CLI 工具。
📑 目录
- [Git 高级技巧与工作流](#Git 高级技巧与工作流)
- [Shell 脚本自动化](#Shell 脚本自动化)
- [效率倍增的 CLI 工具](#效率倍增的 CLI 工具)
- 容器与云原生工具
- 网络诊断与监控
- 文本处理工具链
🎯 Git 高级技巧与工作流
1. 🔄 Git 工作流最佳实践
Gitflow 工作流
            
            
              bash
              
              
            
          
          # 初始化 Gitflow
git flow init
# 开始新功能开发
git flow feature start my-feature
# 完成功能开发
git flow feature finish my-feature
# 开始发布
git flow release start v1.0.0
git flow release finish v1.0.0常用 Git 别名配置
            
            
              bash
              
              
            
          
          # 在 ~/.gitconfig 中添加
[alias]
    # 状态简览
    st = status -sb
    
    # 优雅的日志展示
    lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
    
    # 快速提交
    cm = commit -m
    
    # 分支操作
    co = checkout
    cb = checkout -b
    
    # 撤销操作
    undo = reset --soft HEAD^
    
    # 储藏操作
    save = stash save
    pop = stash pop2. 🛠 高级 Git 技巧
交互式 rebase
            
            
              bash
              
              
            
          
          # 重写最近的 N 个提交
git rebase -i HEAD~3
# 常用 rebase 命令
# p, pick = 使用提交
# r, reword = 使用提交,但修改提交信息
# e, edit = 使用提交,但停下来修改
# s, squash = 使用提交,但合并到前一个提交Git 补丁管理
            
            
              bash
              
              
            
          
          # 创建补丁
git format-patch -1 HEAD
# 应用补丁
git am < patch-file.patch
# 检查补丁
git apply --check patch-file.patchGit 子模块管理
            
            
              bash
              
              
            
          
          # 添加子模块
git submodule add https://github.com/user/repo.git path/to/submodule
# 更新所有子模块
git submodule update --init --recursive
# 删除子模块
git submodule deinit path/to/submodule
git rm path/to/submodule🤖 Shell 脚本自动化
1. 📝 Shell 脚本最佳实践
脚本模板
            
            
              bash
              
              
            
          
          #!/usr/bin/env bash
# 严格模式
set -euo pipefail
IFS=$'\n\t'
# 变量声明
readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
readonly SCRIPT_NAME="$(basename "${BASH_SOURCE[0]}")"
# 日志函数
log() {
    echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')]: $@"
}
# 错误处理
trap 'log "Error on line $LINENO"' ERR
# 帮助信息
show_help() {
    cat << EOF
Usage: ${SCRIPT_NAME} [options]
Options:
    -h, --help      显示帮助信息
    -v, --verbose   显示详细信息
EOF
}
# 参数解析
while [[ $# -gt 0 ]]; do
    case $1 in
        -h|--help)
            show_help
            exit 0
            ;;
        -v|--verbose)
            set -x
            shift
            ;;
        *)
            log "未知参数: $1"
            show_help
            exit 1
            ;;
    esac
done
# 主函数
main() {
    log "开始执行..."
    # 在这里添加你的代码
    log "执行完成"
}
# 执行主函数
main2. 🔧 实用自动化脚本示例
项目初始化脚本
            
            
              bash
              
              
            
          
          #!/usr/bin/env bash
# 项目初始化脚本
init_project() {
    local project_name=$1
    
    # 创建项目目录结构
    mkdir -p "${project_name}"/{src,tests,docs,scripts}
    
    # 创建基础文件
    touch "${project_name}/README.md"
    touch "${project_name}/.gitignore"
    
    # 初始化 Git 仓库
    cd "${project_name}"
    git init
    
    # 创建虚拟环境(Python 项目)
    python3 -m venv .venv
    
    echo "✅ 项目 ${project_name} 初始化完成!"
}自动化部署脚本
            
            
              bash
              
              
            
          
          #!/usr/bin/env bash
# 部署脚本
deploy() {
    local env=$1
    
    log "开始部署到 ${env} 环境..."
    
    # 运行测试
    npm test
    
    # 构建项目
    npm run build
    
    # 部署到对应环境
    case ${env} in
        prod)
            aws s3 sync dist/ s3://my-bucket/prod/
            ;;
        stage)
            aws s3 sync dist/ s3://my-bucket/stage/
            ;;
        *)
            log "未知环境: ${env}"
            exit 1
            ;;
    esac
    
    log "部署完成!"
}⚡ 效率倍增的 CLI 工具
1. 🔍 模糊搜索工具
fzf - 命令行模糊查找器
            
            
              bash
              
              
            
          
          # 安装 fzf
brew install fzf
# 配置 fzf
# 在 .zshrc 或 .bashrc 中添加
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --border"
# 使用示例
# 查找文件
vim $(fzf)
# 查找历史命令
ctrl-r
# 查找目录
cd $(find * -type d | fzf)2. 📊 系统监控工具
htop - 进程监控
            
            
              bash
              
              
            
          
          # 安装 htop
brew install htop
# 常用快捷键
# F1 - 帮助
# F2 - 设置
# F3 - 搜索
# F4 - 过滤
# F5 - 树形视图
# F6 - 排序
# F9 - 结束进程tldr - 命令示例查看
            
            
              bash
              
              
            
          
          # 安装 tldr
npm install -g tldr
# 使用示例
tldr tar
tldr git
tldr docker3. 🚀 开发效率工具
httpie - HTTP 客户端
            
            
              bash
              
              
            
          
          # 安装 httpie
brew install httpie
# 基本使用
http GET api.example.com/data
# 发送 JSON
http POST api.example.com/data name=test age:=25
# 自定义头部
http GET api.example.com/data Authorization:"Bearer token"jq - JSON 处理工具
            
            
              bash
              
              
            
          
          # 安装 jq
brew install jq
# 基本使用
echo '{"name": "John", "age": 30}' | jq '.name'
# 处理数组
echo '[{"id": 1}, {"id": 2}]' | jq '.[].id'
# 条件过滤
echo '[{"id": 1, "active": true}, {"id": 2, "active": false}]' | jq '.[] | select(.active == true)'🐳 容器与云原生工具
1. Docker 常用命令与技巧
            
            
              bash
              
              
            
          
          # 构建优化
docker build --no-cache --pull -t myapp:latest .
# 多阶段构建示例
FROM node:alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
# 容器资源限制
docker run -d \
  --name myapp \
  --memory="512m" \
  --cpus="0.5" \
  myapp:latest
# 清理无用资源
docker system prune -af --volumes2. kubectl 效率提升技巧
            
            
              bash
              
              
            
          
          # 上下文切换
kubectl config use-context my-context
# 命名空间切换
kubens my-namespace
# 快速查看所有资源
kubectl get all -A
# 保存 YAML 模板
kubectl get deployment my-app -o yaml > template.yaml
# 使用代理调试
kubectl port-forward svc/my-service 8080:80
# 查看容器日志
kubectl logs -f deployment/my-app -c main-container🔍 网络诊断与监控
1. 网络诊断工具集
            
            
              bash
              
              
            
          
          # mtr - 网络诊断
mtr google.com
# netstat 替代品 ss
ss -tuln
# 网络带宽测试
iperf3 -s  # 服务端
iperf3 -c server-ip  # 客户端
# tcpdump 抓包分析
tcpdump -i any port 80 -w output.pcap2. 系统性能分析
            
            
              bash
              
              
            
          
          # 磁盘 IO 监控
iostat -xz 1
# 内存分析
vmstat 1
# 进程分析
pidstat -d 1
# 网络连接监控
netstat -tnp
# 系统负载查看
uptime
w⚙️ 文本处理工具链
1. awk 高级用法
            
            
              bash
              
              
            
          
          # 计算总和
awk '{sum += $1} END {print sum}' numbers.txt
# 文本分列
awk -F',' '{print $1, $3}' data.csv
# 条件处理
awk '$3 > 1000 {print $1, $2}' sales.txt
# 格式化输出
awk '{printf "%-20s %10.2f\n", $1, $2}' data.txt2. sed 实用技巧
            
            
              bash
              
              
            
          
          # 批量替换
sed 's/old/new/g' file.txt
# 多行处理
sed '/start/,/end/d' file.txt
# 指定行修改
sed '3,6d' file.txt
# 条件替换
sed '/pattern/s/old/new/g' file.txt3. 文本分析工具
            
            
              bash
              
              
            
          
          # ripgrep - 超快的代码搜索
rg -i pattern
rg -g '*.js' 'function'
# fd - 更好的 find
fd -e md  # 查找 markdown 文件
fd -H -I  # 包含隐藏文件但排除 .git
# bat - better cat
bat --style=numbers file.txt🔐 安全性与加密工具
1. GPG 密钥管理
            
            
              bash
              
              
            
          
          # 生成密钥对
gpg --full-generate-key
# 导出公钥
gpg --export --armor user@example.com > public.key
# 加密文件
gpg -e -r user@example.com file.txt
# 解密文件
gpg -d file.txt.gpg2. SSH 高级配置
            
            
              bash
              
              
            
          
          # SSH 配置模板 (~/.ssh/config)
Host dev
    HostName dev.example.com
    User developer
    Port 2222
    IdentityFile ~/.ssh/dev_rsa
    ForwardAgent yes
# SSH 隧道
ssh -L 8080:localhost:80 user@remote
# SSH 跳板机
ssh -J jumphost user@destination📊 数据可视化工具
1. 终端图表工具
            
            
              bash
              
              
            
          
          # termgraph - 终端图表
echo "1 2 3 4" | termgraph
# asciigraph - ASCII 图表
echo "1 2 3 4" | asciigraph2. 实时监控
            
            
              bash
              
              
            
          
          # dstat - 系统资源统计
dstat -cdngy
# glances - 系统监控
glances
# ctop - 容器监控
ctop🎯 效率提升最佳实践
- 
建立个人的命令行工具箱 - 收集常用命令
- 编写自定义函数
- 创建快捷别名
 
- 
自动化日常任务 - 使用 cron 调度任务
- 编写工作流脚本
- 配置自动备份
 
- 
优化工作环境 - 自定义提示符
- 配置命令补全
- 使用快捷键
 
- 
持续学习和改进 - 关注新工具
- 参与开源社区
- 分享经验心得
 
📚 扩展资源
🎉 结语
命令行工具的学习是一个持续的过程,建议:
- 从基础开始,逐步深入
- 多实践,多总结
- 关注工具更新
- 参与社区交流
- 建立个人知识库
记住:工具的价值在于使用,多练习、多实践才能真正提升效率!
💡 提示:本文介绍的工具和技巧需要在实践中不断调整和优化,找到最适合自己的工作方式。如果你有任何问题或建议,欢迎交流讨论!
如果你觉得这篇文章有帮助,欢迎点赞转发,也期待在评论区看到你的想法和建议!👇
咱们下一期见!