spf13/cobra
GitHub: spf13/cobra
Go 语言中最流行的 CLI 应用开发框架,帮助开发者快速构建专业级命令行工具。
Stars: 43381 | Forks: 3065
Cobra 是一个用于创建强大现代 CLI 应用程序的库。
访问 Cobra.dev 获取详细文档
Cobra 被用于许多 Go 项目中,例如 [Kubernetes](https://kubernetes.io/),
[Hugo](https://gohugo.io) 和 [GitHub CLI](https://github.com/cli/cli),
仅举几例。[此列表](site/content/projects_using_cobra.md) 包含了使用 Cobra 的更广泛的项目列表。
[](https://github.com/spf13/cobra/actions?query=workflow%3ATest)
[](https://pkg.go.dev/github.com/spf13/cobra)
[](https://goreportcard.com/report/github.com/spf13/cobra)
[](https://gophers.slack.com/archives/CD3LP1199)
Supported by:
# 概述
Cobra 是一个库,提供了一个简单的接口来创建强大的现代 CLI
接口,类似于 git 和 go 工具。
Cobra 提供:
* 基于子命令的简易 CLI:`app server`、`app fetch` 等。
* 完全符合 POSIX 标准的标志(包括短选项和长选项版本)
* 嵌套子命令
* 全局、本地和层叠标志
* 智能建议(`app srver`... 您是指 `app server` 吗?)
* 为命令和标志自动生成帮助信息
* 子命令的分组帮助
* 自动识别 `-h`、`--help` 等帮助标志
* 为您的应用程序自动生成 shell 自动补全(bash, zsh, fish, powershell)
* 为您的应用程序自动生成 man 手册页
* 命令别名,因此您可以在不破坏它们的情况下进行更改
* 定义您自己的帮助、用法等的灵活性
* 可选与 [viper](https://github.com/spf13/viper) 无缝集成以实现 12-factor 应用
# 概念
Cobra 建立在命令、参数和标志的结构之上。
**命令** 代表动作,**参数** 代表事物,**标志** 是这些动作的修饰符。
最好的应用程序在使用时读起来像句子,因此,
用户直观地知道如何与它们交互。
遵循的模式是
`APPNAME VERB NOUN --ADJECTIVE`
或者
`APPNAME COMMAND ARG --FLAG`。
一些很好的现实世界示例可以更好地说明这一点。
在下面的示例中,'server' 是一个命令,'port' 是一个标志:
```
hugo server --port=1313
```
在这个命令中,我们告诉 Git 以 bare(裸)模式 clone(克隆)url。
```
git clone URL --bare
```
## 命令
命令是应用程序的中心点。应用程序支持的
每次交互都将包含在一个命令中。一个命令可以
拥有子命令并选择性地运行一个动作。
在上面的示例中,'server' 是命令。
[更多关于 cobra.Command 的信息](https://pkg.go.dev/github.com/spf13/cobra#Command)
## 标志
标志是一种修改命令行为的方式。Cobra 支持
完全符合 POSIX 标准的标志以及 Go [flag package](https://golang.org/pkg/flag/)。
一个 Cobra 命令可以定义持久保留到子命令的标志
以及仅对该命令可用的标志。
在上面的示例中,'port' 是标志。
标志功能由 [pflag
library](https://github.com/spf13/pflag) 提供,它是 flag 标准库的一个分支,
在保持相同接口的同时增加了 POSIX 合规性。
# 安装
使用 Cobra 很容易。首先,使用 `go get` 安装最新版本
的库。
```
go get -u github.com/spf13/cobra@latest
```
接下来,在您的应用程序中包含 Cobra:
```
import "github.com/spf13/cobra"
```
# 用法
`cobra-cli` 是一个用于生成 cobra 应用程序和命令文件的命令行程序。
它将引导您的应用程序脚手架,以便快速
开发基于 Cobra 的应用程序。这是将 Cobra 整合到您的应用程序中的最简单方法。
可以通过运行以下命令来安装它:
```
go install github.com/spf13/cobra-cli@latest
```
有关使用 Cobra-CLI 生成器的完整详细信息,请阅读 [The Cobra Generator README](https://github.com/spf13/cobra-cli/blob/main/README.md)
有关使用 Cobra 库的完整详细信息,请阅读 [The Cobra User Guide](site/content/user_guide.md)。
# 许可证
Cobra 是在 Apache 2.0 许可证下发布的。请参阅 [LICENSE.txt](LICENSE.txt)
# 概述
Cobra 是一个库,提供了一个简单的接口来创建强大的现代 CLI
接口,类似于 git 和 go 工具。
Cobra 提供:
* 基于子命令的简易 CLI:`app server`、`app fetch` 等。
* 完全符合 POSIX 标准的标志(包括短选项和长选项版本)
* 嵌套子命令
* 全局、本地和层叠标志
* 智能建议(`app srver`... 您是指 `app server` 吗?)
* 为命令和标志自动生成帮助信息
* 子命令的分组帮助
* 自动识别 `-h`、`--help` 等帮助标志
* 为您的应用程序自动生成 shell 自动补全(bash, zsh, fish, powershell)
* 为您的应用程序自动生成 man 手册页
* 命令别名,因此您可以在不破坏它们的情况下进行更改
* 定义您自己的帮助、用法等的灵活性
* 可选与 [viper](https://github.com/spf13/viper) 无缝集成以实现 12-factor 应用
# 概念
Cobra 建立在命令、参数和标志的结构之上。
**命令** 代表动作,**参数** 代表事物,**标志** 是这些动作的修饰符。
最好的应用程序在使用时读起来像句子,因此,
用户直观地知道如何与它们交互。
遵循的模式是
`APPNAME VERB NOUN --ADJECTIVE`
或者
`APPNAME COMMAND ARG --FLAG`。
一些很好的现实世界示例可以更好地说明这一点。
在下面的示例中,'server' 是一个命令,'port' 是一个标志:
```
hugo server --port=1313
```
在这个命令中,我们告诉 Git 以 bare(裸)模式 clone(克隆)url。
```
git clone URL --bare
```
## 命令
命令是应用程序的中心点。应用程序支持的
每次交互都将包含在一个命令中。一个命令可以
拥有子命令并选择性地运行一个动作。
在上面的示例中,'server' 是命令。
[更多关于 cobra.Command 的信息](https://pkg.go.dev/github.com/spf13/cobra#Command)
## 标志
标志是一种修改命令行为的方式。Cobra 支持
完全符合 POSIX 标准的标志以及 Go [flag package](https://golang.org/pkg/flag/)。
一个 Cobra 命令可以定义持久保留到子命令的标志
以及仅对该命令可用的标志。
在上面的示例中,'port' 是标志。
标志功能由 [pflag
library](https://github.com/spf13/pflag) 提供,它是 flag 标准库的一个分支,
在保持相同接口的同时增加了 POSIX 合规性。
# 安装
使用 Cobra 很容易。首先,使用 `go get` 安装最新版本
的库。
```
go get -u github.com/spf13/cobra@latest
```
接下来,在您的应用程序中包含 Cobra:
```
import "github.com/spf13/cobra"
```
# 用法
`cobra-cli` 是一个用于生成 cobra 应用程序和命令文件的命令行程序。
它将引导您的应用程序脚手架,以便快速
开发基于 Cobra 的应用程序。这是将 Cobra 整合到您的应用程序中的最简单方法。
可以通过运行以下命令来安装它:
```
go install github.com/spf13/cobra-cli@latest
```
有关使用 Cobra-CLI 生成器的完整详细信息,请阅读 [The Cobra Generator README](https://github.com/spf13/cobra-cli/blob/main/README.md)
有关使用 Cobra 库的完整详细信息,请阅读 [The Cobra User Guide](site/content/user_guide.md)。
# 许可证
Cobra 是在 Apache 2.0 许可证下发布的。请参阅 [LICENSE.txt](LICENSE.txt)标签:CLI, Cobra, DNS解析, EVTX分析, Flag解析, Github CLI, Go, Golang, Hugo, POSIX标准, Ruby工具, WiFi技术, 交互式命令, 参数解析, 后端开发, 命令行界面, 子命令, 安全编程, 库, 应急响应, 开发库, 开源项目, 数据管道, 日志审计, 脚手架, 自动化帮助, 自动补全, 软件工程