用途:把 Bash 脚本改短,同时不牺牲可读性。核心理念是表达意图、减少子进程与临时文件等环节,而非压缩每行代码;当缩短会掩盖意图时优先保持清晰。
主要能力:提供分类参考(命令替换、参数扩展、函数、花括号扩展、进程替换、算术、实战、进阶、反模式),并附带 scripts/bash-shorten.py 重写脚本,默认 dry-run 输出 diff,加 --apply 才写入。规则分 core(默认开启)与 modernize(需 --include modernize,会改用 sd、rg、fd)。脚本依赖 ast-grep(sg)在 PATH 中,缺失时可用 brew install ast-grep 或 cargo install ast-grep --bin sg 安装,也可跳过脚本只用分类分析。
使用方式:先确认目标是 Bash 文件或代码块;并行派发只读分析器按类别扫描并报告 path:line 的冗长→惯用命中;合并去重后由主线程运行 python3 scripts/bash-shorten.py --apply <target>(每次一个文件),再用 bash -n、shellcheck 与 diff 验证;剩余项由主线程逐条手工修改。可用 --rules、--skip、--list、--explain、--self-test 控制与查看规则。
限制:脚本无法处理需要数据流分析、多语句检测、函数提取、并行化或行为判断的改写;basename/dirname 等替换不会自动应用;modernize 规则保守且改变行为(如 fd 默认遵循 .gitignore)。资料未提供收费、平台与效果信息。