go语言执行linux命令之“cd”操作之误会

最近因工作需要学了shell脚本,又刚好对go语言感兴趣,于是决定尝试一下用golang来操作linux,话不多说先直接上代码

import (
	"bytes"
	"fmt"
	"log"
	"os/exec"
)

func main() {
	ExecCommand("go", "run", "hello.go")
	//ExecCommand("touch", "/home/readme.md")
}

func ExecCommand(name string, args ...string) {
	cmd := exec.Command(name, args...) // 拼接参数与命令
	var stdout bytes.Buffer
	var stderr bytes.Buffer
	var err error
	cmd.Stdout = &stdout
	cmd.Stderr = &stderr
	if err = cmd.Run(); err != nil {
		log.Println(err)
	}
	fmt.Print(stdout.String())
	fmt.Print(stderr.String())
}

这个简单的例子引发的我的思考,首先我尝试使用cd命令,但是很遗憾,
exec: “cd”: executable file not found in $PATH 你会得到这样的结果。

注:如果在命令中不指定路径,默认是在当前路径中执行命令。如果想要在其他路径下执行命令,最好使用绝对路径。我没有实现能做到直接cd到某路径下。。。。

和java对比

其他人的实现
如有侵权,请联系我删除

posted @ 2022-12-03 20:35  doufei  阅读(47)  评论(0编辑  收藏  举报  来源