如何从 Golang 执行终端命令?

3 terminal command-line-interface go

我正在 Golang 中创建一个 CLI 工具,而且我对 Golang 和为终端制作工具都是新手。我需要直接从我的程序执行终端命令(特别是cd)。我该怎么做呢?我按照这篇文章进行操作,但它抛出一个错误,指出在 %path% 中未找到 echo

预先感谢您的任何帮助!

小智 5

os/exec包帮助你在 Go 中执行终端命令。

执行系统命令非常简单。Cmd 保存您的外部命令。

所以在linux中假设你想运行“echo hello”命令,你可以编写以下代码。

cmdStruct := exec.Command("echo","hello")    
out,err := cmdStruct.Output()
if err != nil {
    fmt.Println(err)
}
fmt.Println(string(out))
Run Code Online (Sandbox Code Playgroud)

这是最基本的方式之一。但是,在 Windows 中,您需要将“echo hello”作为参数传递给命令提示符或 Powershell。

    cmdStruct:= exec.Command("cmd.exe","/c","echo","hello")
Run Code Online (Sandbox Code Playgroud)

为了简化单个切片中的传递参数,

args:= strings.Split("/c echo hello there how are you"," ")
cmdStruct:= exec.Command("cmd.exe",args...)
Run Code Online (Sandbox Code Playgroud)

查看此答案以更好地理解此代码并增强版本。

对于 cd,您可以使用os.Chdir()os.Getwd()分别更改和查看您的工作目录。但是,如果您需要在特定目录中执行命令,则可以设置Dir命令,即

cmdStruct.Dir = "path/to/directory"
Run Code Online (Sandbox Code Playgroud)

或者

cmdStruct.Dir = filepath.Join("path","to","directory")
Run Code Online (Sandbox Code Playgroud)