remove_trailing_space.sh
文档编写日期: 2026-03-20
使用办法 (Usage)
基本语法
./scripts/develop/remove_trailing_space.sh [OPTIONS]
参数说明
| 参数 |
说明 |
| -n, --dry-run |
显示将要更改的内容,不修改文件 |
| -c, --check |
检查模式,发现空格返回错误码1 |
| -s, --staged |
仅处理已暂存的文件 |
| -S, --staged-check |
检查已暂存文件(用于pre-commit钩子) |
| -h, --help |
显示帮助信息 |
使用示例
# 删除所有文件的行尾空格
./scripts/develop/remove_trailing_space.sh
# 仅处理暂存文件
./scripts/develop/remove_trailing_space.sh --staged
# 预览哪些文件有空格
./scripts/develop/remove_trailing_space.sh --dry-run
# 检查模式(CI/CD场景)
./scripts/develop/remove_trailing_space.sh --check
Scripts详解 (Detailed Explanation)
脚本用途
删除项目中所有文本文件的行尾空格和制表符,保持代码库整洁。
工作模式
| 模式 |
说明 |
| 正常模式 |
处理git追踪的所有文件,自动删除行尾空格 |
| Staged模式 |
仅处理git已暂存的文件(使用 git diff --cached) |
| Dry Run |
预览模式,不修改文件,仅显示有问题文件的行号 |
| Check |
检查模式,有问题返回错误码1(用于CI/CD) |
| StagedCheck |
检查暂存文件但不修改,专为pre-commit钩子设计 |
Git集成
- 使用
git ls-files 获取追踪文件(尊重.gitignore)
- 使用
git diff --cached --name-only --diff-filter=ACM 获取暂存文件
- 过滤器
ACM 仅包含 Added, Copied, Modified 的文件
- 适合用作pre-commit钩子
处理细节
- 删除行尾的空格和制表符(TAB)
- 使用
grep -q "[ \t]$" 检测行尾空白
- 使用
sed -i "s/[ \t]*$//" 就地修改文件
- 每个文件最多显示5行有问题内容(dry-run/check模式)
输出格式
=== Remove Trailing Whitespace ===
Project: /path/to/project
Mode: Staged files only
src/main.cpp:
12:int main() {
45: return 0;
=== Summary ===
Processed: 150 files
Fixed: 2 files
退出码
| 退出码 |
说明 |
| 0 |
成功,无行尾空白或已修复 |
| 1 |
检查模式下发现行尾空白 |
依赖项
- git (必需)
- bash 4.0+
- sed, grep (标准Unix工具)
注意事项
- 自动跳过二进制文件(无法被grep读取)
- 彩色输出需要终端支持
- 使用
set -eo pipefail 确保错误传播