buildkite/shellwords
GitHub: buildkite/shellwords
一个简洁的 Go 库,按照 POSIX 和 Windows Batch 语义将命令行字符串安全地分割为单词,不支持命令执行或变量展开。
Stars: 19 | Forks: 3
# Shellwords
一个 golang 库,用于像 Posix 或 Windows shell 那样将命令行字符串分割成单词。
## 安装
```
go get -u github.com/buildkite/shellwords
```
## 用法
```
package main
import (
"github.com/buildkite/shellwords"
"fmt"
)
func main() {
words := shellwords.Split(`/usr/bin/bash -e -c "llamas are the \"best\" && echo 'alpacas'"`)
for _, word := range words {
fmt.Println(word)
}
}
// Outputs:
// /usr/bin/bash
// -e
// -c
// llamas are the "best" && echo 'alpacas'
```
## 替代方案
以前我们使用的是 https://github.com/mattn/go-shellwords,但它不支持 Windows 的引号和转义约定,特别是反斜杠路径。它还支持诸如环境变量扩展和命令执行等功能,这让我感到非常不安,因此我决定编写一个更简单的词法分析器,专门用于解决分割问题。
其他替代方案包括 https://github.com/flynn-archive/go-shlex 和 https://github.com/kballard/go-shellquote,其中后者在理念上可能与本库最为接近。
## 许可证
采用 MIT 许可证授权,详情请参阅 `LICENSE`。
标签:EVTX分析, Go, Ruby工具, 命令行解析, 字符串处理, 开发组件库, 日志审计