英文:
How to run a shell command in a specific folder
问题
你可以使用os.Chdir()
函数来指定要运行命令的文件夹。在调用exec.Command()
之前,使用os.Chdir()
将当前工作目录更改为你想要运行命令的文件夹。这样,exec.Command()
将在指定的文件夹中运行命令。以下是一个示例代码:
package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
// 指定要运行命令的文件夹路径
folderPath := "/path/to/folder"
// 更改当前工作目录为指定的文件夹路径
err := os.Chdir(folderPath)
if err != nil {
fmt.Println("无法更改工作目录:", err)
return
}
// 运行命令
out, err := exec.Command("git", "log").Output()
if err != nil {
fmt.Println("无法运行命令:", err)
return
}
// 输出命令结果
fmt.Println(string(out))
}
请将/path/to/folder
替换为你想要运行命令的文件夹的实际路径。
英文:
I can use this out, err := exec.Command("git", "log").Output()
to get an output of the command which will run in the same path as the executable location.
How do I specify in which folder I want to run the command?
答案1
得分: 135
exec.Command()
函数返回一个类型为 *exec.Cmd
的值。Cmd
是一个结构体,其中有一个 Dir
字段:
// Dir 指定命令的工作目录。
// 如果 Dir 是空字符串,Run 函数将在调用进程的当前目录中运行命令。
Dir string
因此,在调用 Cmd.Output()
之前,只需设置它:
cmd := exec.Command("git", "log")
cmd.Dir = "你的/目标/工作目录"
out, err := cmd.Output()
还要注意的是,这仅适用于 git
命令;git
允许你使用 -C
标志传递路径,所以你也可以这样做:
out, err := exec.Command("git", "-C", "你的/目标/工作目录", "log").
Output()
英文:
exec.Command()
returns you a value of type *exec.Cmd
. Cmd
is a struct and has a Dir
field:
// Dir specifies the working directory of the command.
// If Dir is the empty string, Run runs the command in the
// calling process's current directory.
Dir string
So simply set it before calling Cmd.Output()
:
cmd:= exec.Command("git", "log")
cmd.Dir = "your/intended/working/directory"
out, err := cmd.Output()
Also note that this is specific to git
command; git
allows you to pass the path using the -C
flag, so you may also do what you want like this:
out, err := exec.Command("git", "-C", "your/intended/working/directory", "log").
Output()
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论