当前位置: 首页 > news >正文

命令行工具进阶指南

🚀 命令行工具进阶指南: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

🎯 效率提升最佳实践

  1. 建立个人的命令行工具箱

    • 收集常用命令
    • 编写自定义函数
    • 创建快捷别名
  2. 自动化日常任务

    • 使用 cron 调度任务
    • 编写工作流脚本
    • 配置自动备份
  3. 优化工作环境

    • 自定义提示符
    • 配置命令补全
    • 使用快捷键
  4. 持续学习和改进

    • 关注新工具
    • 参与开源社区
    • 分享经验心得

📚 扩展资源

  • 命令行艺术
  • Bash 指南
  • Shell 脚本示例
  • Awesome Shell
  • Docker 实践

🎉 结语

命令行工具的学习是一个持续的过程,建议:

  1. 从基础开始,逐步深入
  2. 多实践,多总结
  3. 关注工具更新
  4. 参与社区交流
  5. 建立个人知识库

记住:工具的价值在于使用,多练习、多实践才能真正提升效率!


💡 提示:本文介绍的工具和技巧需要在实践中不断调整和优化,找到最适合自己的工作方式。如果你有任何问题或建议,欢迎交流讨论!

如果你觉得这篇文章有帮助,欢迎点赞转发,也期待在评论区看到你的想法和建议!👇

咱们下一期见!

相关文章:

命令行工具进阶指南

&#x1f680; 命令行工具进阶指南&#xff1a;Git、Shell与效率工具的进阶之路 掌握命令行工具&#xff0c;让你的开发效率突飞猛进。本文将深入探讨 Git 高级技巧、Shell 脚本自动化以及各种效率倍增的 CLI 工具。 &#x1f4d1; 目录 Git 高级技巧与工作流Shell 脚本自动化…...

扫雷游戏代码分享(c基础)

hi , I am 36. 代码来之不易&#x1f44d;&#x1f44d;&#x1f44d; 创建两个.c 一个.h 1&#xff1a;test.c #include"game.h"void game() {//创建数组char mine[ROWS][COLS] { 0 };char show[ROWS][COLS] { 0 };char temp[ROWS][COLS] { 0 };//初始化数…...

基于vue框架的的社区居民服务管理系统8w86o(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;居民,楼房信息,报修信息,缴费信息,维修进度 开题报告内容 基于Vue框架的社区居民服务管理系统开题报告 一、研究背景与意义 随着城市化进程的加速&#xff0c;社区居民数量激增&#xff0c;社区管理面临着前所未有的挑战。传统的社区…...

一分钟快速熟悉makedown

Markdown 是一种轻量级标记语言&#xff0c;广泛用于编写文档、撰写博客、创建 README 文件等。它的语法简单易学&#xff0c;能够快速生成格式化的文本。以下是 Markdown 的一些常用语法和示例&#xff1a; 1. 标题 Markdown 支持六级标题&#xff0c;使用 # 符号表示。 # …...

P8649 [蓝桥杯 2017 省 B] k 倍区间:同余,前缀和,组合数,区间个数

题目描述 给定一个长度为 NN 的数列&#xff0c;A1,A2,⋯ANA1​,A2​,⋯AN​&#xff0c;如果其中一段连续的子序列 Ai,Ai1,⋯Aj(i≤j)Ai​,Ai1​,⋯Aj​(i≤j) 之和是 KK 的倍数&#xff0c;我们就称这个区间 [i,j][i,j] 是 KK 倍区间。 你能求出数列中总共有多少个 KK 倍区…...

产业与学术相互促进,2024年OEG海上能源博览会助力全球能源可持续发展

10月30日至31日&#xff0c;2024年OEG海上能源全产业链博览会在上海跨国采购会展中心成功举办。本次大会系全球海洋工程与高端装备领域的年度国际交流盛会——第十一届全球FPSO&FLNG&FSRU大会&#xff0c;同期举办第七届亚洲海洋风能大会。本次大会暨博览会由上海船舶工…...

【GDB调试】智慧中控项目的调试

一.在执行的智慧中控项目的时候&#xff0c;喊语音模块唤醒(小欣小欣)的时候遇到了&#xff1a;Segmentation fault 段错误 二.遇到段错误&#xff0c;一般是以下情况&#xff1a; “Segmentation fault”&#xff08;段错误&#xff09;是Linux系统中常见的程序异常终止信号。…...

《一本书讲透 Elasticsearch》京东评论采集+存储+可视化全 AI 实现

经常和出版社编辑老师交流读者的反馈。毕竟是小众书籍&#xff0c;豆瓣评分的人并不多。 而京东作为主要读书销售渠道&#xff0c;非常有必要整合一下京东读者评论&#xff0c;看看读者们都说了什么&#xff0c;以便后续的改进&#xff01; 一条条的翻看非常不方便&#xff0c;…...

uniapp中webview全屏不显示导航栏解决方案

uniapp官网文档地址&#xff1a;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接口

随着社会的发展&#xff0c;身份认证需求不断增长&#xff0c;这与身份证OCR识别技术的发展密切相关。在当今社会&#xff0c;各个领域都需要进行身份认证。传统的人工手动录入身份证信息费时费力&#xff0c;速度慢且容易出错&#xff0c;体验不佳。而身份证 OCR 识别技术通过…...

关于 Qt+Osg中使用背景图HUD受到后绘制几何图形顶点颜色影响 的解决方法

若该文为原创文章&#xff0c;转载请注明出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/143607816 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、Op…...

[CKS] K8S AppArmor Set Up

最近准备花一周的时间准备CKS考试&#xff0c;在准备考试中发现有一个题目关于AppArmor Pod操作权限的问题。 ​ 专栏其他文章: [CKS] Create/Read/Mount a Secret in K8S-CSDN博客[CKS] Audit Log Policy-CSDN博客 -[CKS] 利用falco进行容器日志捕捉和安全监控-CSDN博客[CKS] …...

redis笔记-数据结构

zset zset一方面它是一个 set&#xff0c;保证了内部value 的唯一性&#xff0c;另一方面它可以给每个 value 赋予一个 score&#xff0c;代表这个 value 的排序权重。 zset的底层是由字典和跳表实现。 字典主要用来存储value和score的对应关系。跳表这个数据结构主要用来提…...

webpack的常见配置

Webpack 是一个现代 JavaScript 应用的模块打包工具&#xff0c;用于将项目中的多个文件和依赖打包成浏览器可以识别的文件&#xff0c;通常是一个或多个 JavaScript、CSS 或其他静态资源的 bundle&#xff08;将多个模块或文件合并成一个或几个文件的过程&#xff0c;这些合并…...

text-embedding-ada-002;BGE模型;M3E模型是Moka Massive Mixed Embedding;BERT

目录 text-embedding-ada-002 一、模型概述 二、模型功能 三、模型特点 四、模型应用 五、模型优势 BGE模型 一、模型背景与特点 二、模型性能与表现 三、模型迭代与发展 M3E模型是Moka Massive Mixed Embedding 一、基本信息 二、技术特点 三、应用场景 四、性能…...

WebRTC 环境搭建

主题 本文主要描述webrtc开发过程中所需的环境搭建 环境&#xff1a; 运行环境&#xff1a;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方法进行匹配。到目前为止&#xff0c;我们定义的URL路由都是针对HTTP GET方法的&#xff0c;这是网页最常见的方法。 表单提交通常作为HTTP POST发送。在处理更动态的网页设计时&#xff0c;也就是所谓的单页应用&#xff08;SPA&#xff0…...

项目管理和研发管理中的痛点及其解决方案

在现代企业中&#xff0c;研发管理和项目管理面临着多重挑战&#xff0c;包括资源配置不当、沟通不畅、目标不明确、进度控制困难等。这些痛点不仅影响项目的顺利推进&#xff0c;还可能导致企业在市场竞争中处于劣势。尤其是在资源配置不当方面&#xff0c;企业往往难以合理分…...

机器学习(基础1)

数据集 sklearn玩具数据集 数据量小&#xff0c;数据在sklearn库的本地&#xff0c;只要安装了sklearn&#xff0c;不用上网就可以获取 sklearn现实世界数据集 数据量大&#xff0c;数据只能通过网络获取&#xff08;为国外数据集&#xff0c;下载需要梯子&#xff09; skle…...

我谈维纳(Wiener)复原滤波器

Rafael Gonzalez的《数字图像处理》中&#xff0c;图像复原这章内容几乎全错。上篇谈了图像去噪&#xff0c;这篇谈图像复原。 图像复原也称为盲解卷积&#xff0c;不处理点扩散函数&#xff08;光学传递函数&#xff09;的都不是图像复原。几何校正不属于图像复原&#xff0c…...

怎么看真假国企啊?怎么识别假冒国企的千层套路?

一、怎么看真假国企啊&#xff1f; 1.使用具有迷惑性的名称&#xff1a;假冒国企往往在名称中使用“中国”、“中”、“国”等字样&#xff0c;或与知名国企名称相似的字号&#xff0c;以增加其可信度。 2.注册资本虚高&#xff1a;为了显示实力&#xff0c;假冒国企可能会在…...

C#中break和continue的区别?

在C#编程语言中&#xff0c;break和continue是两个用于控制循环流程的关键字&#xff0c;但它们的作用和用途有所不同。 break关键字 break关键字用于立即终止它所在的最内层循环或switch语句&#xff0c;并跳出该循环或switch块。程序执行将继续进行循环或switch语句之后的下一…...

Linux部署nginx访问文件403

问题描述&#xff1a;在linux服务器上通过nginx部署&#xff0c;访问文件403 新配置了一个用户来部署服务&#xff0c;将部署文件更新到原有目录下&#xff0c;结果nginx访问403 原因&#xff1a;没有配置文件的读写权限&#xff0c;默认不可读写&#xff0c;nginx无法访问到文…...

华为OD机试 - 数字排列 - 深度优先搜索dfs算法(Python/JS/C/C++ 2024 C卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…...

Scrapy爬取heima论坛所有页面内容并保存到数据库中

前期准备&#xff1a; Scrapy入门_win10安装scrapy-CSDN博客 新建 Scrapy项目 scrapy startproject mySpider03 # 项目名为mySpider03 进入到spiders目录 cd mySpider03/mySpider03/spiders 创建爬虫 scrapy genspider heima bbs.itheima.com # 爬虫名为heima &#…...

Kafka参数了解

Kafka配置参数完整说明 1. 基础配置 参数名说明推荐值参考值broker.idbroker的唯一标识符每个节点唯一的整数1delete.topic.enable是否允许删除topictruetruelistenersbroker监听地址SASL_PLAINTEXT://host:9092SASL_PLAINTEXT://172.24.77.15:9092advertised.listeners对外发…...

sql专题 之 where和join on

文章目录 前言where介绍使用过滤结果集关联两个表 连接外连接内连接自然连接 使用inner join和直接使用where关联两个表的区别总结 前言 从数据库查询数据时&#xff0c;一张表不足以查询到我们想要的数据&#xff0c;更多的时候我们需要联表查询。 联表查询我们一般会使用连接…...

day12:版本控制器

版本控制 使用到的命令&#xff1a; ls -al查看当前目录下的文件及文件夹mkdir新建目录rm -rf递归强制删除文件夹 一、安装配置 1、下载地址 Git 2、初始配置 #用户名 git config --global user.name "自定义用户名" #邮箱&#xff08;公司的联系方式--追责&…...

织梦cms可以做外贸网站吗/搜索引擎广告的优缺点

阅读目录基础知识声明定义构造函数原理分析属性定义函数差异严格模式静态访问静态属性静态方法访问器语法介绍访问控制publicprotected命名保护属性保护详解继承属性继承继承原理方法继承super 表示从当前原型中执行方法constructor父类方法方法覆盖静态继承对象检测instanceof…...

厦门建设局网站首页/石家庄百度推广排名优化

问题&#xff1a;实际司机看到的里程应该是27.9公里左右&#xff0c;但是最后结算变成了5公里。 排查&#xff1a;查看日志发现&#xff0c;在5公里所有进行了一个saveInstanceState,可能由于按下home键&#xff0c;或者被系统回收等原因导致&#xff0c;但是后台进程仍然记下了…...

给 小企业 建设网站/百度百科词条创建入口

为何地图上的航线是曲线如果我们观察地图上的航线&#xff0c;就会发现航线是弯曲的。基本上可以认为地球是个球体&#xff0c;如果飞机在两个城市之间飞行&#xff0c;最好的飞行线路是取这两个城市之间的最短距离。这其实课看成球面上任意两点之间的最短距离。过球面上的任意…...

公司网站的用途/b站在线观看

近年来&#xff0c;CRM对企业来说是一个热门的话题&#xff0c;在高竞争的互联网环境下&#xff0c;企业要高速稳健发展&#xff0c;需要CRM的帮助。今天智云通CRM系统小编要跟大家探讨小企业CRM之道。 无论企业规模大还是小&#xff0c;客户的维护和保持都是非常重要的。原因有…...

做一个国外的网站/可以发布软文的平台

原则&#xff1a;先检测该数据库的指定表中&#xff0c;是否已经存在我们要插入的这条数据记录&#xff0c;若已经存在&#xff0c;则不插入这条数据记录(即忽略此次插入操作)&#xff0c;若尚不存在&#xff0c;才插入这条数据记录(即才执行此次插入操作) 我们这里使用的是FMD…...

河北省做网站哪家公司好/电商数据网站

/*2015年10月10日09:11:41编程实现十个按钮Frame默认布局管理器是BorderLayout;Panel默认布局管理器是FlowLayout;*/import java.awt.*;//是awt不是aweclass TestTenButton{public static void main(String[] args){//定义一个容器&#xff0c;装PanelFrame f new Frame("…...