From cc-use-exp
Provides Bash scripting standards for .sh, Dockerfile, Makefile, YAML, and Markdown code blocks. Enforces comments, file writes with tee, heredoc quoting, permissions, and safe variable usage.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cc-use-exp:bash-styleThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
版本:v1.0
版本:v1.0 更新:2026-01
command # 注释)适用范围:
# ❌ 错误:行尾注释
curl -X POST https://api.example.com/data # 发送请求
docker run -d nginx # 启动容器
cp -r src/ dist/ # 复制文件
# ✅ 正确:注释独占一行
# 发送请求
curl -X POST https://api.example.com/data
# 启动容器
docker run -d nginx
# 复制文件
cp -r src/ dist/
原因:
# 不是注释而是内容# ✅ 推荐:简洁、无嵌套引号
sudo tee /etc/fail2ban/jail.d/docker-nginx.local > /dev/null << 'EOF'
[docker-nginx]
enabled = true
filter = docker-nginx
logpath = /var/log/nginx/access.log
maxretry = 5
EOF
# ✅ 追加到文件
sudo tee -a /etc/hosts > /dev/null << 'EOF'
192.168.1.100 myserver
EOF
# ✅ 单行追加
echo '192.168.1.100 myserver' | sudo tee -a /etc/hosts
# ❌ 避免:嵌套引号复杂,易出错
sudo bash -c 'cat > /etc/xxx << EOF
content
EOF'
# ❌ 避免:需要转义内容中的特殊字符
sudo sh -c "echo 'line1\nline2' > /etc/xxx"
| 方式 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
sudo tee | 简洁、无嵌套 | 需 > /dev/null 抑制输出 | 首选 |
sudo bash -c 'cat >' | 无需 tee | 嵌套引号复杂 | 不推荐 |
| 临时文件 + mv | 可先验证 | 步骤多 | 复杂配置 |
# ✅ 'EOF' 带引号:内容原样输出,不解析变量
sudo tee /etc/xxx > /dev/null << 'EOF'
$HOME 不会被展开
$(command) 不会被执行
EOF
# EOF 不带引号:变量会被展开
sudo tee /etc/xxx > /dev/null << EOF
当前用户: $USER
当前目录: $(pwd)
EOF
| 场景 | 用法 | 原因 |
|---|---|---|
| 配置文件 | << 'EOF' | 避免意外展开 |
| 模板生成 | << EOF | 需要插入变量 |
| 不确定时 | << 'EOF' | 更安全 |
# ✅ 正确:tee 配合 sudo
echo 'content' | sudo tee /etc/xxx
# ❌ 错误:重定向在 sudo 之外,权限不足
sudo echo 'content' > /etc/xxx
# ✅ 正确:双引号包裹路径
sudo tee "/etc/my config/file.conf" > /dev/null << 'EOF'
content
EOF
#!/usr/bin/env bash
set -euo pipefail
# 脚本说明(一句话)
| 选项 | 作用 |
|---|---|
-e | 命令失败时退出 |
-u | 使用未定义变量时报错 |
-o pipefail | 管道中任一命令失败则整体失败 |
# ✅ 推荐:使用 ${} 包裹
echo "Hello, ${name}"
# ✅ 推荐:设置默认值
db_host="${DB_HOST:-localhost}"
# ❌ 避免:裸变量(易与后续字符混淆)
echo "Hello, $name_suffix"
if ! command -v docker &> /dev/null; then
echo "docker 未安装"
exit 1
fi
# 文件存在
[[ -f /path/to/file ]] && echo "文件存在"
# 目录存在
[[ -d /path/to/dir ]] || mkdir -p /path/to/dir
# ✅ 使用变量时防止误删
rm -rf "${dir:?}"/*
# ❌ 危险:变量为空时会删除根目录
rm -rf $dir/*
在 Markdown 文档中编写 bash 命令时,同样遵循以上规范:
## 安装配置
创建配置文件:
```bash
sudo tee /etc/myapp/config.yml > /dev/null << 'EOF'
server:
port: 8080
host: 0.0.0.0
EOF
```
npx claudepluginhub doccker/cc-use-exp --plugin cc-use-expEnforces modern best practices for shell scripts: portable shebangs, strict mode, quoted variables, error traps, exit codes, and secure coding. Use when writing Bash or POSIX sh scripts.
Shell script conventions, defensive patterns, and correctness rules: strict mode, quoting, portability, error handling, and common pitfalls. Invoke whenever task involves any interaction with shell scripts — writing, reviewing, debugging, or understanding .sh, .bash, .zsh files.
Provides defensive Bash scripting standards for production automation, CI scripts, and skill glue code. Covers strict mode, quoting, argument parsing, traps, safe tempfiles, and the stream-separation/exit-code contract.