Shell Utilities
本模块旨在提供一套极致精简、高性能且符合 POSIX 语义的终端与 Shell 基础设施。它不仅是简单的命令执行包装,更提供了流式实时回调、上下文管理及命令链式执行能力。
核心设计哲学
- 语义对齐: 针对 Shell 交互行为(如
|管道,&&短路逻辑)进行语义一致性实现。 - 安全优先: 默认支持进程组管理 (
pgid),确保中断信号能精准传播至整个命令链条,避免产生僵尸进程。 - 内存透明: 通过
bytes.Buffer和流式 IO 接口管理大规模输出,避免内存溢出风险。
API 指南
终端渲染 (Color)
用于生成符合终端 ANSI 标准的样式字符串。
Style(a ...any) string: 核心渲染引擎。自动合并样式常量与内容,并处理 Windows 系统下的兼容性(剥离样式)。- 颜色定义:
- 前景色:
TextBlack,TextRed,TextGreen,TextYellow,TextBlue,TextMagenta,TextCyan,TextWhite - 背景色:
BgBlack,BgRed,BgGreen,BgYellow,BgBlue,BgMagenta,BgCyan,BgWhite - 属性:
Reset,Bold,Dim,Italic,Underline,Blink,Reverse,Hidden
- 前景色:
- 高阶快捷函数:
- 颜色快捷调用:
Red("error"),Green("success")等。 - 背景色快捷调用(B开头):
BRed("fatal")(带白色前景色)。
- 颜色快捷调用:
命令执行 (Run)
数据结构
-
Options: 配置执行行为Env []string: 环境变量增量Stdin io.Reader: 自定义输入源CatchSignal bool: 是否开启信号捕获,确保进程树生命周期一致Timeout time.Duration: 执行超时限制Dir string: 设置工作目录Verbose bool: 是否开启详细执行日志(终端高亮输出)OnStdout func([]byte): 实时 stdout 捕获回调OnStderr func([]byte): 实时 stderr 捕获回调
-
CommandResult: 命令执行反馈Stdout []byte: 标准输出内容Stderr []byte: 标准错误输出内容ExitCode int: 进程退出码(0 成功,非 0 失败)ProcessErr error: 执行层面的错误信息
函数接口
Run(name string, args []string, opts *Options) (*CommandResult, error): 基础执行。RunCommand(command string, opts *Options) (*CommandResult, error): 支持解析|管道与&&短路逻辑的复合命令执行。Pipeline(commands [][]string, opts *Options) (*CommandResult, error): 执行多命令并行管道,高性能 IO 传输。
使用示例
// 1. 带超时和实时回调的执行
res, err := shell.Run("grep", []string{"pattern", "file.log"}, &shell.Options{
Timeout: 5 * time.Second,
OnStdout: func(data []byte) { fmt.Printf("Output: %s", data) },
})
// 2. 管道与短路逻辑组合
res, err := shell.RunCommand("cat file.txt | grep 'foo' && echo 'found'", nil)
测试与质量保证
请参考 TEST.md 获取覆盖率与 Benchmark 数据。
Description
Languages
Go
100%