golang 命令行cobra妙用】的更多相关文章

为什么使用命令行 大型项目中少不了数据升级,如果采用web服务,一来不够安全,二来数据量大的时候也会出超时的情况.这时使用命令行是比较合适的方式了. 命令行中的MVC web项目一般采用MVC模式,对于命令行有吗? 对于命令行则有command(命令)和flag(参数),golang自带了flag包,不过功能不够强大,这里我们使用第三方包cobra cobra 的使用 具体用法可以参考官方文档,我就不细说了. 妙用 按照官方的结构,不好实现自动注册,每次增加新的命令或文件夹不好管理,需要改动代码…
windows脚本(VBS)之cmd命令行的妙用 (2009-08-06 13:40:55) 转载▼ 标签: 脚本 cmd 命令行 vbs js 简单 公式 windows it 分类: 计算机 脚本可以帮助我们大大减少平常的工作量,不必再进行不必要的重复 windows脚本可以与cmd命令行巧妙联系起来,用很少的几行代码就可以实现一个功能,超级方便 下面是一个框架,可以说是一个公式吧: set objshell=createobject("wscript.shell") objshe…
简介 Cobra既是一个用来创建强大的现代CLI命令行的golang库,也是一个生成程序应用和命令行文件的程序.下面是Cobra使用的一个演示: Cobra提供的功能 简易的子命令行模式,如 app server, app fetch等等 完全兼容posix命令行模式 嵌套子命令subcommand 支持全局,局部,串联flags 使用Cobra很容易的生成应用程序和命令,使用cobra create appname和cobra add cmdname 如果命令输入错误,将提供智能建议,如 ap…
github地址:https://github.com/spf13/cobra Cobra功能 简单子命令cli 如  kubectl verion    kubectl get 自动识别-h,--help 帮助更过参考官方手册:https://github.com/spf13/cobra kubectl get pod --all-namespaces    get代表命令(command) pod代表事务(args)  --all-namespaces代表标识(flag),command代表…
最近在做一个项目的时候,需要使用golang来调用操作系统中的命令行,来执行shell命令或者直接调用第三方程序,这其中自然就用到了golang自带的exec.Command. 但是如果直接使用原生exec.Command会造成大量的重复代码,网上搜了一圈又没有找到对exec.Command相应的封装包,索性自己封装了一个,取名为gocommand.目前支持Linux和Windows,欢迎各位大神在github上提交代码补充其他平台的实现. 下面介绍一下gocommand库的实现思路: pack…
os.Args获取命令行参数 os.Args是一个srting的切片,用来存储所有的命令行参数 package main import ( "fmt" "os" ) func main() { fmt.Println(os.Args) } flag获取命令行参数 常用变量 flag.BoolVar:flag的值保存到指针的变量. flag.StringVar flag.UintVar 参数(传入的变量[指针类型], 变量的名称[命令行指定的如:-c --help],…
package main import ( "fmt" "os" ) func main(){ s:= os.Args fmt.Println(s) } 直接执行 输出结果:[C:\Users\Administrator\AppData\Local\Temp\___go_build_2_go__1_.exe] 还可以使用flag模块 package main import ( "flag" "fmt" ) func main(…
package main import ( "fmt" "flag" ) func main() { //定义几个变量,用于接收命令行的参数值 var user string var pwd string var host string var port int //&user 就是接收用户命令行中输入的 -u 后面的参数值 //"u" ,就是 -u 指定参数 //"" , 默认值 //"用户名,默认为空&q…
package main import ( "fmt" "io" "os" ) func main() { list := os.Args //获取命令行参数 { fmt.Println("usage: xxx srcFile dstFile") return } srcFileName := list[] //源文件(要拷贝的文件) dstFileName := list[] //新文件(要拷贝出的新文件名) if srcF…
1. 测试某一个包下的所有测试用例 cd /myGoProject/src/go-test/utils go test -v "-v" 参数 go test -v ... 表示无论用例是否测试通过都会显示结果,不加 "-v" 表示只显示未通过的用例结果 2. 想要单独测试某一个方法测试用例 go test -v -run='TestTimestamp2StandardTimeStr' 后续继续总结中......…
本文主题:基于os.Args与flag实现Golang命令行解析. 小慢哥的原创文章,欢迎转载 目录 ▪ 一. os.Args ▪ 二. flag ▪ 三. 结合os.Args与flag实现子命令 ▪ 附. 参考文档 一. os.Args os.Args用于获取通过命令行传入的参数 ▷ os.Args[0]:程序执行路径 ▷ os.Args[1]:第1个参数 ▷ os.Args[2]:第2个参数 ▷ len(os.Args):参数数量 示例如下 package main import ( "fm…
golang常用库:cli命令行/应用程序生成工具-cobra使用 一.Cobra 介绍 我前面有一篇文章介绍了配置文件解析库 Viper 的使用,这篇介绍 Cobra 的使用,你猜的没错,这 2 个库都是同一个作者 spf13,他开发了很多与 golang 相关的库,他目前在 google 领导着 golang 产品相关开发工作. Cobra 是关于 golang 的一个命令行解析库,用它能够快速创建功能强大的 cli 应用程序和命令行工具. 它被很多知名的项目使用,比如 Kubernetes…
将cobra下载到 $GOPATH,用命令: go get -v github.com/spf13/cobra/cobra 然后使用 go install github.com/spf13/cobra/cobra, 安装后在 $GOBIN 下出现了cobra 可执行程序.如果你没有配置 $GOBIN,那么可以在$GOPATH/bin 下找到 cobra的可执行软件. cobra程序只能在GOPATH之下使用,所以首先你需要进入到GOPATH的src目录之下,在该目录下,输入: cobra ini…
来自jetbrains Go 语言现状调查报告 显示:在go开发者中使用go开发实用小程序的比例为31%仅次于web,go得益于跨平台.无依赖的特性,用来编写命令行或系统管理这类小程序非常不错. 本文主要介绍Steve Francia(spf13)大神写的用于快速构建命令行程序的golang包cobra,基于cobra写命令行的著名项目一只手数不过来:Docker CLI.Helm.istio.etcd.Git.Github CLI ... 下面进入正题 cobra能帮我们做啥? cobra包提…
前言相信只要部署过线上服务,都知道启动参数一定是必不可少的,当你在不同的网络.硬件.软件环境下去启动一个服务的时候,总会有一些启动参数是不确定的,这时候就需要通过命令行模块去解析这些参数,urfave/cli是Golang中一个简单实用的命令行工具. 安装通过 go get github.com/urfave/cli 命令即可完成安装. 正文使用了urfave/cli之后,你的程序就会变成一个命令行程序,以下就是通过urfave/cli创建的一个最简单的命令行程序,它设定了一些基础的信息,这个程…
目录 前言 一.安装 二.初始化应用 gomod初始化 创建入口文件cmd/root.go 创建主程序main.go 三.生成Command 创建hello子命令 创建version子命令 四.如何设置flag选项 全局选项 本地选项 设置必填 绑定配置 五.如何设定arguments 使用示例 六.如何使用参数 获取flag参数 获取args参数 七.如何设置钩子 总结 前言 Cobra是一个强大的用来构建命令行程序的库,许多流行的Go项目都是用它来构建的,比如Kubernetes.Docke…
简介 Github:https://github.com/spf13/cobra Star:26.5K   Cobra是一个用Go语言实现的命令行工具.并且现在正在被很多项目使用,例如:Kubernetes.Hugo和Github CLI等.通过使用Cobra,我们可以快速的创建命令行工具,特别适合写测试脚本,各种服务的Admin CLI等.   比如 Mattermost 项目,就写了很多 Admin CLI:   为什么需要cobra 我们看一个简单的demo 使用前 package mai…
os 包以跨平台的方式,提供了一些与操作系统交互的函数和变量.程序的命令行参数可从os包的Args变量获取:os包外部使用os.Args访问该变量. os.Args变量是一个字符串(string)的切片(slice)(译注:slice和Python语言中的切片类似,是一个简版的动态数组),切片是Go语言的基础概念,稍后详细介绍.现在先把切片s当作数组元素序列, 序列的成长度动态变化, 用 s[i] 访问单个元素,用 s[m:n] 获取子序列(译注:和python里的语法差不多).序列的元素数目为…
为什么要使用命令行 觉得这个问题不应该列出来,又觉得如果初次进行WEB开发的话,可能会觉得所有的东西都可以使用API去做,会觉得命令行没有必要. 其实,一个生产的项目命令行是绕不过去的.比如运营需要导出报表.统计下付费用户.服务不稳定修改下订单状态等等,再者,命令行的工具基本都是内部使用,调试日志可以随意点,退一万步来说,即使有问题了,还可以再次修改.不像API是是随机性的,有些业务发生错误和异常是随机的.不可逆的. 怎么使用cli 这个主要看下使用案例就一目了然了. 首先下载类库包 go ge…
上次我们介绍了收集命令行参数的几种方式,感觉还是不过瘾,今天再来介绍一下如何从命令行接收用户输入. 我们这里设计一个小需求,借助程序从命令行收集用户的逐行输入,以 bye 为结束信号,然后在输入结束后,统计每一行输入的内容和该内容出现的次数. 为了完成这个功能,我们首先需要创建一个 map 的数据结构,来存放每一行输入的内容和对应出现的次数,在 Go 语言中,我们可以使用 make(map[string]int) 这种方式创建所需的数据结构. 那么如何从标准输入流中接收数据呢,Go 语言提供了…
记得最早在学校机房学习 Java 时,照着书上的例子,写一个最简单 main 方法,当程序运行并在屏幕上打印出 hello world 时,内心竟有种莫名的激动,相信很多人都有这种经历吧. 不管学什么编程语言,都先从命令行程序搞起. 首先,我们来写一个 Go 语言版的 hello world 程序: // hello.go package main import "fmt" func main() { fmt.Println("hello world") } 接下来…
2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高,很有必要写个深入浅出的系列文章,本节内容帮助你入门.我将可能用Windows做开发环境,也可能用Linux/Mac,但是所有的dotnet CLI命令都是跨平台的,我们在windows/Linux/mac平台上开发跨平台的应用. 安装.NET Core .NET Core 包括.NET Core Runti…
前面在介绍zsh的时候,说过它的补全用来起比bash的Tab补全方便多了,在有多个备选项是你只要用光标键来挑选就是了,而不是全列出来提示你再多输入几个字符.而Emacs的anything / helm 则更近一步,首先就把备选项列出来,随着你的输入减少备选项,少到一定程度你就可以用眼睛浏览并进行选择了. 说起来有点费劲,看一下peco的这个演示图就明白了: 最近看到几个命令行上的这种工具,可以让我们在bash或者vim里面也用上这种机制(至于具体用来干什么,就看自己的小宇宙了) name hom…
NET Core 环境搭建和命令行CLI入门 2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高,很有必要写个深入浅出的系列文章,本节内容帮助你入门.我将可能用Windows做开发环境,也可能用Linux/Mac,但是所有的dotnet CLI命令都是跨平台的,我们在windows/Linux/mac平台上开发跨平台的应用. 安装.NET Core .NET…
内容简介 1.第二部分第二课:命令行,世界尽在掌握 2.第二部分第三课预告:文件和目录,组织不会亏待你 命令行,世界尽在掌握 今天的标题是不是有点霸气侧漏呢? 读者:“小编,你为什么每次都要起这么非主流的标题呢?不能愉快地玩耍么?” 小编:“那我问你,老子他为什么要写<道德经>咧?” 读者:“为什么咧?” 小编:“因为老子愿意!” 开个小玩笑轻松一下 O(∩_∩)O~ 没办法,不能不激动,因为我们终于来到了这一刻,命令行的征程将从此课开始. 而且你会发现,一旦入门并且精通了Linux命令行,那…
本章讨论bash shell的循环命令for.while和until 13.1 for命令 重复执行一系列命令在编程中很常见. bash shell提供了for命令,允许你创建一个遍历一系列值的循环.每次迭代都使用其中一个值来执行已定义好的一组命令.下面是基本格式 for var in list do command done 在list参数中需要提供迭代中要用到的一系列值.会依次迭代下去.每次迭代中,var会包含列表中要用到的一系列值. do 和 done直接输入的命令可以是一条或多条标准的b…
练习URL: https://blog.csdn.net/sd653159/article/details/83381786 相信只要部署过线上服务,都知道启动参数一定是必不可少的,当你在不同的网络.硬件.软件环境下去启动一个服务的时候,总会有一些启动参数是不确定的,这时候就需要通过命令行模块去解析这些参数,urfave/cli是Golang中一个简单实用的命令行工具. 通过 go get github.com/urfave/cli 命令即可完成安装. package main import (…
开始想通过 aliyuncli 的 golang 源码进行编译安装(注:python 版的 aliyuncli 已不再维护),但没成功,详见 通过 golang 源码编译阿里云命令行工具 aliyuncli 出错 后来改为直接下载编译好的 aliyuncli wget -qO- http://aliyun-cli.oss-cn-hangzhou.aliyuncs.com/aliyun-cli-linux-3.0.0-amd64.tgz | tar xvz -C /usr/local/bin 使用…
一.简介 文件操作对于我们来说也是非常常用的,在python中使用open函数来对文件进行操作,而在go语言中我们使用os.File对文件进行操作. 二.终端读写 操作终端句柄常量 os.Stdin: 标准输入 os.Stdout: 标准输出 os.Stderr: 标准错误输出 读写示例: package main import ( "fmt" "os" ) var( username,password string ) func main() { fmt.Prin…
1.编译 go build hello.go 2.go get gopl.io/ch1/helloworld 命令,就会从网上获取代码,并放到对应目录中 下载的代码会放在$GOPATH/src/gopl.io/ch1/helloworld目录 3.Go语言不需要在语句或者声明的末尾添加分号,除非一行上有多条语句. 4.Go语言在代码格式上采取了很强硬的态度.gofmt工具把代码格式化为标准格式 gofmt -w hello.go 重写回源文件 5.goimports,可以根据代码需要, 自动地添…