Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to run a shell command in a specific folder

Tags:

go

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?

like image 505
Sergei Basharov Avatar asked Mar 31 '17 08:03

Sergei Basharov


People also ask

How do I run a shell in a folder?

To access that special folder, open the Run dialog and type the Shell command, followed by the Shell folder name. Continuing with the above example, you would type shell:AccountPictures in the Open text box, as shown in Figure E.

How do I go to a specific directory in bash?

To change directories, use the command cd followed by the name of the directory (e.g. cd downloads ). Then, you can print your current working directory again to check the new path.


1 Answers

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() 
like image 72
icza Avatar answered Oct 03 '22 08:10

icza