关于 shell-expert
面向开发者和系统管理员的 Shell 脚本与命令行自动化技能,侧重可移植性、健壮性和效率,并涵盖现代 CLI 工具及跨平台实践。
主要功能
- 01编写可移植的 POSIX 和 Bash 脚本
- 02防御性错误处理与调试
- 03使用 jq 和 yq 处理 JSON 与 YAML
- 04使用 fd 和 rg 搜索文件
- 05跨平台自动化模式
适用场景
- 01编写适用于 Linux、macOS 和 BSD 的脚本
- 02构建 CI/CD 与系统管理自动化
- 03将 CLI 工具组合成数据管道
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ laurigates/ claude-plugins --skill shell-expert安装后在 Claude Code 中输入/shell-expert确认已加载。
附带文件REFERENCE.md
详细介绍
Shell 专家
在 Shell 脚本、命令行工具和自动化方面具备专业知识,专注于打造稳健、可移植且高效的解决方案。
适用场景
| 在以下情况下使用此技能…… | 在以下情况下改用 justfile-expert…… |
|---|---|
| 编写可移植的 Bash、zsh 或 POSIX Shell 脚本 | 将命令封装为项目任务运行器中的具名配方 |
| 组合管道和一次性自动化逻辑 | 统一团队或代码库的入口 |
使用 set -euo pipefail、陷阱和引号强化脚本 | 无需编写 Shell 胶水代码即可定义跨平台命令 |
| 在以下情况下使用此技能…… | 在以下情况下改用 jq-json-processing…… |
|---|---|
| 编写用于串联 CLI 工具的胶水逻辑 | 工作内容仅涉及转换 JSON 输入 |
| 编写可复用函数、解析参数或处理信号 | 单个 jq 表达式即可替代一连串 Shell 命令 |
命令行工具精通
- 精通现代 CLI 工具(jq、yq、fd、rg 等)
- JSON/YAML 处理与转换
- 文件搜索和文本操作
- 系统自动化与编排
卓越的 Shell 脚本编写能力
- 编写符合 POSIX 标准的 Shell 脚本,实现最高可移植性
- Bash 专属功能和最佳实践
- 错误处理与防御式编程
- 跨平台兼容性(Linux、macOS、BSD)
自动化与集成
- CI/CD 管道脚本
- 系统管理自动化
- 工具集成与工作流自动化
- 优化 Shell 操作性能
核心能力
JSON/YAML 处理
- jq:复杂的 JSON 查询、转换和筛选
- yq:YAML 操作、原地编辑、格式转换
- jd:用于配置管理的 JSON 差异比较与修补
- 数据管道构建:串联工具以进行复杂转换
文件操作与搜索
- fd:快速、易用的文件查找工具,语法直观
- rg (ripgrep):闪电般快速的递归 grep,支持 gitignore
- lsd:具备视觉增强功能的现代版 ls 替代工具
- find/grep 替代工具:了解何时以及如何使用现代替代工具
Shell 脚本开发
- 错误处理:正确使用陷阱、退出代码和错误传播
- 输入验证:解析参数、处理选项、清理用户输入
- 调试:设置选项(-x、-e、-u、-o pipefail)、调试输出策略
- 性能:进程替换、并行执行、高效循环
跨平台脚本编写
- 平台检测:处理特定操作系统的行为
- 路径管理:可移植的路径构建与操作
- 工具可用性:检查并处理缺失的依赖项
- 兼容层:编写可在任何环境中运行的脚本
自动化模式
- 幂等操作:可安全多次运行的脚本
- 原子操作:确保要么全部执行,要么全部不执行
- 进度报告:提供对用户友好的输出和状态更新
- 日志记录与监控:为自动化系统提供结构化日志
必备命令
jq - JSON 处理
jq . data.json # Pretty-print
jq -r '.key.subkey' data.json # Extract value
jq '.items[] | select(.status == "active")' # Filter
yq - YAML 处理
yq '.services.web.image' docker-compose.yml # Read value
yq -i '.version = "2.1.0"' config.yml # Update in-place
yq -o json config.yml # Convert to JSON
fd - 快速查找文件
fd 'pattern' # Find by pattern
fd -e md # Find by extension
fd -e sh -x shellcheck {} # Find and execute
rg - 递归 Grep
rg 'DATABASE_URL' # Basic search
rg 'TODO' -t python # Search specific file types
rg -C 3 'error' # Search with context
最佳实践
脚本开发工作流
- 需求分析:了解自动化需求和目标平台
- 工具选择:为任务选择合适的工具
- 原型开发:创建具备核心功能的初始脚本
- 错误处理:添加可靠的错误处理和边缘情况管理
- 跨平台测试:验证脚本能在所有目标系统上运行
- 性能优化:分析并优化效率
- 文档编写:添加清晰的使用说明和内联注释
关键准则
- 始终使用 shellcheck 进行代码检查
- 设置严格模式:
set -euo pipefail - 使用
pipefail时,切勿将管道输出传给会提前退出的读取程序(grep -q、head):这会导致生产者收到 SIGPIPE,使原本成功的管道间歇性地报告失败。请使用grep -q … <<<"$var"或grep … >/dev/null(参见 REFERENCE.md) - 为所有变量加引号:
"${var}" - 使用函数封装可复用代码
- 使用 trap 实现适当的清理
- 提供有帮助的错误消息
- 包含 --help 和 --version 选项
- 使用有意义的变量名
- 为复杂逻辑添加注释
- 面向 POSIX 时,使用不同的 shell 进行测试
常见模式
可靠的脚本模板
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
trap 'echo "Error on line $LINENO"' ERR
trap cleanup EXIT
cleanup() {
rm -f "$TEMP_FILE" 2>/dev/null || true
}
main() {
parse_args "$@"
validate_environment
execute_task
}
main "$@"
跨平台检测
detect_os() {
case "$OSTYPE" in
linux*) OS="linux" ;;
darwin*) OS="macos" ;;
msys*) OS="windows" ;;
*) OS="unknown" ;;
esac
}
有关命令行工具的详细参考、高级自动化示例和故障排除指南,请参阅 REFERENCE.md。
评论
支持 Markdown