mcpField
S
shell-expert

shell-expert

github.com/laurigates开发59137 次安装1 天前更新
代码仓库

关于 shell-expert

面向开发者和系统管理员的 Shell 脚本与命令行自动化技能,侧重可移植性、健壮性和效率,并涵盖现代 CLI 工具及跨平台实践。

主要功能

  1. 01编写可移植的 POSIX 和 Bash 脚本
  2. 02防御性错误处理与调试
  3. 03使用 jq 和 yq 处理 JSON 与 YAML
  4. 04使用 fd 和 rg 搜索文件
  5. 05跨平台自动化模式

适用场景

  1. 01编写适用于 Linux、macOS 和 BSD 的脚本
  2. 02构建 CI/CD 与系统管理自动化
  3. 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

最佳实践

脚本开发工作流

  1. 需求分析:了解自动化需求和目标平台
  2. 工具选择:为任务选择合适的工具
  3. 原型开发:创建具备核心功能的初始脚本
  4. 错误处理:添加可靠的错误处理和边缘情况管理
  5. 跨平台测试:验证脚本能在所有目标系统上运行
  6. 性能优化:分析并优化效率
  7. 文档编写:添加清晰的使用说明和内联注释

关键准则

  • 始终使用 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