Home »
Golang »
Golang Programs
Golang program to execute a specified shell command with specified option
Here, we are going to learn how to execute a specified shell command without options in Golang (Go Language)?
Submitted by Nidhi, on May 30, 2021 [Last updated : March 05, 2023]
Executing a specified shell command with specified option in Golang
Problem Solution:
Here, we will execute a specified command with a specified option using the syscall.Exec() function. And, we will execute the "ls" shell command with the "-l" option and print output on the console screen.
Program/Source Code:
The source code to execute the specified shell command with the specified option is given below. The given program is compiled and executed on the ubuntu 18.04 operating system successfully.
Golang code to execute a specified shell command with specified option
// Golang program to execute a specified shell command
// with specified flag
package main
import "os"
import "os/exec"
import "syscall"
func main() {
command, err := exec.LookPath("ls")
if err != nil {
panic(err)
}
args := []string{"ls", "-l"}
err = syscall.Exec(command, args, os.Environ())
if err != nil {
panic(err)
}
}
Output:
total 36
drwxr-xr-x 2 root root 12288 Feb 18 00:56 bin
dr-xr-xr-x 1 root root 0 May 30 20:43 dev
drwxr-xr-x 1 root root 4096 May 30 20:43 etc
drwxr-xr-x 2 nobody nobody 4096 Mar 9 19:36 home
drwxr-xr-x 2 root root 4096 Feb 18 00:56 lib
lrwxrwxrwx 1 root root 3 Feb 18 00:56 lib64 -> lib
dr-xr-xr-x 2 root root 0 May 30 20:43 proc
drwx------ 2 root root 4096 Mar 9 19:35 root
dr-xr-xr-x 1 root root 0 May 30 20:43 sys
drwxrwxrwt 1 root root 0 May 30 20:43 tmp
drwxrwxrwx 1 root root 0 May 30 20:44 tmpfs
drwxr-xr-x 1 root root 4096 Mar 19 20:49 usr
drwxr-xr-x 4 root root 4096 Mar 9 19:36 var
Explanation:
In the above program, we declare the package main. The main package is used to tell the Go language compiler that the package must be compiled and produced the executable file. Here, we imported the required packages to predefined functions.
In the main() function, we checked "ls" command exists or not, using exec.LookPath() function and get the handle for the command. After that, we executed the "ls" command with the "-l" option using the syscall.Exec() function and print the output of the "ls" command on the console screen.
Golang Shell Script Programs »