写点什么

go 每日一库 [cmd]

用户头像
happlyfox
关注
发布于: 2021 年 04 月 04 日

关于我

我的博客|文章首发


使用 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

END

欢迎关注公众号 程序员工具集 👍👍 致力于分享优秀的开源项目、学习资源 、常用工具


回复关键词“关注礼包”,送你一份最全的程序员技能图谱。

发布于: 2021 年 04 月 04 日阅读数: 21
用户头像

happlyfox

关注

公众号 程序员工具集 2021.02.18 加入

分享优秀的开源项目、学习资源和常用工具。谈论新闻热点、职场经验、学习感悟。共同进步!

评论

发布
暂无评论
go每日一库 [cmd]