首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go每日一库 [cmd]

go每日一库 [cmd]

原创
作者头像
happlyfox
修改2021-04-06 11:23:01
9350
修改2021-04-06 11:23:01
举报
文章被收录于专栏:技术开源分享技术开源分享

使用go执行系统命令和二进制文件也是我们在编码过程中常常要使用到的功能。

go本身的包os/exec包含了对应的实现,接下来我们举个例子说明一下

执行 go version 打印go版本

package main
​
import (
    "fmt"
    "log"
    "os/exec"
)
​
func main() {
    cmdOutput, err := exec.Command("go", "version").Output()
    if err != nil {
        log.Fatal(err)
    }
​
    fmt.Printf("%s", cmdOutput)
}

当然实际的使用过程中肯定会伴随其他的场景。例如设置工作目录,设置执行超时等特殊需求,这个时候原生库的编码就会让人很难受。

今天在这里推荐一个可以在linux/windows/darwin 上执行命令的golang开源库,这个库的Star虽然不是很高,但是封装后的api使用起来还算舒服。还是通过几个例子来进行一下说明

shell脚本 输入文本

package main
​
import (
    "fmt"
​
    "github.com/commander-cli/cmd"
)
​
func cmdLibraryUse() {
    c := cmd.NewCommand("echo text-cmd-shell")
​
    err := c.Execute()
    if err != nil {
    panic(err.Error())
    }
​
    fmt.Printf("%s", c.Stdout())
    fmt.Println("stderr is  " + c.Stderr())
}

写入标准出入流媒

c := cmd.NewCommand("echo hello", cmd.WithStandardStreams)
c.Execute()

其他用法大家可以参照官方示例,如果大家有其他更好的cmd封装库可以推荐给我,大家一起学习进步。

参考

运行系统命令和二进制文件

commander-cli/cmd

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • shell脚本 输入文本
  • 写入标准出入流媒
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档