Go命令行工具开发
Go命令行工具开发
标准库 flag
import "flag"
func main() {
target := flag.String("t", "", "target host")
port := flag.Int("p", 80, "target port")
verbose := flag.Bool("v", false, "verbose output")
flag.Parse()
fmt.Printf("Target: %s:%d, verbose: %v\n", *target, *port, *verbose)
}Cobra 框架
Cobra 是 Go 生态中最流行的 CLI 框架,被 kubectl、docker 等工具使用。
var rootCmd = &cobra.Command{
Use: "mytool",
Short: "A security tool",
}
var scanCmd = &cobra.Command{
Use: "scan",
Short: "Scan target",
Run: func(cmd *cobra.Command, args []string) {
// 扫描逻辑
},
}
func init() {
rootCmd.AddCommand(scanCmd)
scanCmd.Flags().StringP("target", "t", "", "target host")
}进度条与输出
使用 progressbar 库显示扫描进度,使用彩色输出提升可读性。
总结
一个好的命令行工具应该有清晰的帮助文档、合理的默认值和友好的错误提示。Cobra 框架可以快速构建专业的 CLI 工具。