命令行工具进阶指南
🚀 命令行工具进阶指南:Git、Shell与效率工具的进阶之路
掌握命令行工具,让你的开发效率突飞猛进。本文将深入探讨 Git 高级技巧、Shell 脚本自动化以及各种效率倍增的 CLI 工具。
📑 目录
- Git 高级技巧与工作流
- Shell 脚本自动化
- 效率倍增的 CLI 工具
- 容器与云原生工具
- 网络诊断与监控
- 文本处理工具链
🎯 Git 高级技巧与工作流
1. 🔄 Git 工作流最佳实践
Gitflow 工作流
# 初始化 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 别名配置
# 在 ~/.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 = checkoutcb = checkout -b# 撤销操作undo = reset --soft HEAD^# 储藏操作save = stash savepop = stash pop
2. 🛠 高级 Git 技巧
交互式 rebase
# 重写最近的 N 个提交
git rebase -i HEAD~3# 常用 rebase 命令
# p, pick = 使用提交
# r, reword = 使用提交,但修改提交信息
# e, edit = 使用提交,但停下来修改
# s, squash = 使用提交,但合并到前一个提交
Git 补丁管理
# 创建补丁
git format-patch -1 HEAD# 应用补丁
git am < patch-file.patch# 检查补丁
git apply --check patch-file.patch
Git 子模块管理
# 添加子模块
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 脚本最佳实践
脚本模板
#!/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 ]]; docase $1 in-h|--help)show_helpexit 0;;-v|--verbose)set -xshift;;*)log "未知参数: $1"show_helpexit 1;;esac
done# 主函数
main() {log "开始执行..."# 在这里添加你的代码log "执行完成"
}# 执行主函数
main
2. 🔧 实用自动化脚本示例
项目初始化脚本
#!/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 .venvecho "✅ 项目 ${project_name} 初始化完成!"
}
自动化部署脚本
#!/usr/bin/env bash# 部署脚本
deploy() {local env=$1log "开始部署到 ${env} 环境..."# 运行测试npm test# 构建项目npm run build# 部署到对应环境case ${env} inprod)aws s3 sync dist/ s3://my-bucket/prod/;;stage)aws s3 sync dist/ s3://my-bucket/stage/;;*)log "未知环境: ${env}"exit 1;;esaclog "部署完成!"
}
⚡ 效率倍增的 CLI 工具
1. 🔍 模糊搜索工具
fzf - 命令行模糊查找器
# 安装 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 - 进程监控
# 安装 htop
brew install htop# 常用快捷键
# F1 - 帮助
# F2 - 设置
# F3 - 搜索
# F4 - 过滤
# F5 - 树形视图
# F6 - 排序
# F9 - 结束进程
tldr - 命令示例查看
# 安装 tldr
npm install -g tldr# 使用示例
tldr tar
tldr git
tldr docker
3. 🚀 开发效率工具
httpie - HTTP 客户端
# 安装 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 处理工具
# 安装 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 常用命令与技巧
# 构建优化
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 buildFROM 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 --volumes
2. kubectl 效率提升技巧
# 上下文切换
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. 网络诊断工具集
# mtr - 网络诊断
mtr google.com# netstat 替代品 ss
ss -tuln# 网络带宽测试
iperf3 -s # 服务端
iperf3 -c server-ip # 客户端# tcpdump 抓包分析
tcpdump -i any port 80 -w output.pcap
2. 系统性能分析
# 磁盘 IO 监控
iostat -xz 1# 内存分析
vmstat 1# 进程分析
pidstat -d 1# 网络连接监控
netstat -tnp# 系统负载查看
uptime
w
⚙️ 文本处理工具链
1. awk 高级用法
# 计算总和
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.txt
2. sed 实用技巧
# 批量替换
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.txt
3. 文本分析工具
# 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 密钥管理
# 生成密钥对
gpg --full-generate-key# 导出公钥
gpg --export --armor user@example.com > public.key# 加密文件
gpg -e -r user@example.com file.txt# 解密文件
gpg -d file.txt.gpg
2. SSH 高级配置
# SSH 配置模板 (~/.ssh/config)
Host devHostName dev.example.comUser developerPort 2222IdentityFile ~/.ssh/dev_rsaForwardAgent yes# SSH 隧道
ssh -L 8080:localhost:80 user@remote# SSH 跳板机
ssh -J jumphost user@destination
📊 数据可视化工具
1. 终端图表工具
# termgraph - 终端图表
echo "1 2 3 4" | termgraph# asciigraph - ASCII 图表
echo "1 2 3 4" | asciigraph
2. 实时监控
# dstat - 系统资源统计
dstat -cdngy# glances - 系统监控
glances# ctop - 容器监控
ctop
🎯 效率提升最佳实践
-
建立个人的命令行工具箱
- 收集常用命令
- 编写自定义函数
- 创建快捷别名
-
自动化日常任务
- 使用 cron 调度任务
- 编写工作流脚本
- 配置自动备份
-
优化工作环境
- 自定义提示符
- 配置命令补全
- 使用快捷键
-
持续学习和改进
- 关注新工具
- 参与开源社区
- 分享经验心得
📚 扩展资源
- 命令行艺术
- Bash 指南
- Shell 脚本示例
- Awesome Shell
- Docker 实践
🎉 结语
命令行工具的学习是一个持续的过程,建议:
- 从基础开始,逐步深入
- 多实践,多总结
- 关注工具更新
- 参与社区交流
- 建立个人知识库
记住:工具的价值在于使用,多练习、多实践才能真正提升效率!
💡 提示:本文介绍的工具和技巧需要在实践中不断调整和优化,找到最适合自己的工作方式。如果你有任何问题或建议,欢迎交流讨论!
如果你觉得这篇文章有帮助,欢迎点赞转发,也期待在评论区看到你的想法和建议!👇
咱们下一期见!
相关文章:
命令行工具进阶指南
🚀 命令行工具进阶指南:Git、Shell与效率工具的进阶之路 掌握命令行工具,让你的开发效率突飞猛进。本文将深入探讨 Git 高级技巧、Shell 脚本自动化以及各种效率倍增的 CLI 工具。 📑 目录 Git 高级技巧与工作流Shell 脚本自动化…...
扫雷游戏代码分享(c基础)
hi , I am 36. 代码来之不易👍👍👍 创建两个.c 一个.h 1:test.c #include"game.h"void game() {//创建数组char mine[ROWS][COLS] { 0 };char show[ROWS][COLS] { 0 };char temp[ROWS][COLS] { 0 };//初始化数…...
基于vue框架的的社区居民服务管理系统8w86o(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
系统程序文件列表 项目功能:居民,楼房信息,报修信息,缴费信息,维修进度 开题报告内容 基于Vue框架的社区居民服务管理系统开题报告 一、研究背景与意义 随着城市化进程的加速,社区居民数量激增,社区管理面临着前所未有的挑战。传统的社区…...
一分钟快速熟悉makedown
Markdown 是一种轻量级标记语言,广泛用于编写文档、撰写博客、创建 README 文件等。它的语法简单易学,能够快速生成格式化的文本。以下是 Markdown 的一些常用语法和示例: 1. 标题 Markdown 支持六级标题,使用 # 符号表示。 # …...
P8649 [蓝桥杯 2017 省 B] k 倍区间:同余,前缀和,组合数,区间个数
题目描述 给定一个长度为 NN 的数列,A1,A2,⋯ANA1,A2,⋯AN,如果其中一段连续的子序列 Ai,Ai1,⋯Aj(i≤j)Ai,Ai1,⋯Aj(i≤j) 之和是 KK 的倍数,我们就称这个区间 [i,j][i,j] 是 KK 倍区间。 你能求出数列中总共有多少个 KK 倍区…...
产业与学术相互促进,2024年OEG海上能源博览会助力全球能源可持续发展
10月30日至31日,2024年OEG海上能源全产业链博览会在上海跨国采购会展中心成功举办。本次大会系全球海洋工程与高端装备领域的年度国际交流盛会——第十一届全球FPSO&FLNG&FSRU大会,同期举办第七届亚洲海洋风能大会。本次大会暨博览会由上海船舶工…...
【GDB调试】智慧中控项目的调试
一.在执行的智慧中控项目的时候,喊语音模块唤醒(小欣小欣)的时候遇到了:Segmentation fault 段错误 二.遇到段错误,一般是以下情况: “Segmentation fault”(段错误)是Linux系统中常见的程序异常终止信号。…...
《一本书讲透 Elasticsearch》京东评论采集+存储+可视化全 AI 实现
经常和出版社编辑老师交流读者的反馈。毕竟是小众书籍,豆瓣评分的人并不多。 而京东作为主要读书销售渠道,非常有必要整合一下京东读者评论,看看读者们都说了什么,以便后续的改进! 一条条的翻看非常不方便,…...
uniapp中webview全屏不显示导航栏解决方案
uniapp官网文档地址:https://uniapp.dcloud.net.cn/api/window/window.html#getappwebview <template><view class"index"><u-navbar :is-back"true" title"标题"" :title-width"650"></u-navb…...
Dear ImGui 使用VS2022编译为静态库
Dear ImGui 是一个无臃肿的 C++ 图形用户界面库。它输出优化的顶点缓冲区,您可以在支持 3D 管道的应用程序中随时渲染这些缓冲区。它速度快、可移植、与渲染器无关且自成一体(无外部依赖项)。 Dear ImGui 旨在实现快速迭代,并让程序员能够创建内容创建工具和可视化/调试工具…...
5G 现网信令参数学习(3) - RrcSetup(1)
目录 1. rlc-BearerToAddModList 1.1 rlc-Config 1.1.1 ul-AM-RLC 1.1.2 dl-AM-RLC 1.2 mac-LogicalChannelConfig 2. mac-CellGroupConfig 2.1 schedulingRequestConfig 2.2 bsr-Config 2.3 tag-Config 2.4 phr-Config 2.5 skipUplinkTxDynamic 3. physicalCellG…...
PHP实现身份证OCR识别API接口
随着社会的发展,身份认证需求不断增长,这与身份证OCR识别技术的发展密切相关。在当今社会,各个领域都需要进行身份认证。传统的人工手动录入身份证信息费时费力,速度慢且容易出错,体验不佳。而身份证 OCR 识别技术通过…...
关于 Qt+Osg中使用背景图HUD受到后绘制几何图形顶点颜色影响 的解决方法
若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/143607816 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、Op…...
[CKS] K8S AppArmor Set Up
最近准备花一周的时间准备CKS考试,在准备考试中发现有一个题目关于AppArmor Pod操作权限的问题。 专栏其他文章: [CKS] Create/Read/Mount a Secret in K8S-CSDN博客[CKS] Audit Log Policy-CSDN博客 -[CKS] 利用falco进行容器日志捕捉和安全监控-CSDN博客[CKS] …...
redis笔记-数据结构
zset zset一方面它是一个 set,保证了内部value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权重。 zset的底层是由字典和跳表实现。 字典主要用来存储value和score的对应关系。跳表这个数据结构主要用来提…...
webpack的常见配置
Webpack 是一个现代 JavaScript 应用的模块打包工具,用于将项目中的多个文件和依赖打包成浏览器可以识别的文件,通常是一个或多个 JavaScript、CSS 或其他静态资源的 bundle(将多个模块或文件合并成一个或几个文件的过程,这些合并…...
text-embedding-ada-002;BGE模型;M3E模型是Moka Massive Mixed Embedding;BERT
目录 text-embedding-ada-002 一、模型概述 二、模型功能 三、模型特点 四、模型应用 五、模型优势 BGE模型 一、模型背景与特点 二、模型性能与表现 三、模型迭代与发展 M3E模型是Moka Massive Mixed Embedding 一、基本信息 二、技术特点 三、应用场景 四、性能…...
WebRTC 环境搭建
主题 本文主要描述webrtc开发过程中所需的环境搭建 环境: 运行环境:ubuntu 20.04 Node.js环境搭建 安装编译 Node.js 所需的依赖包: sudo apt-get update sudo apt-get install -y build-essential libssl-dev 下载 Node.js 源码: curl -sL htt…...
FastHTML快速入门:http方法,CSS文件和内联样式,其他静态媒体文件位置
HTTP方法 FastHTML通过函数名与HTTP方法进行匹配。到目前为止,我们定义的URL路由都是针对HTTP GET方法的,这是网页最常见的方法。 表单提交通常作为HTTP POST发送。在处理更动态的网页设计时,也就是所谓的单页应用(SPA࿰…...
项目管理和研发管理中的痛点及其解决方案
在现代企业中,研发管理和项目管理面临着多重挑战,包括资源配置不当、沟通不畅、目标不明确、进度控制困难等。这些痛点不仅影响项目的顺利推进,还可能导致企业在市场竞争中处于劣势。尤其是在资源配置不当方面,企业往往难以合理分…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
