Home »
Golang »
Golang Programs
Golang program to execute a specified shell command with multiple options
Here, we are going to learn how to execute a specified shell command with multiple options in Golang (Go Language)?
Submitted by Nidhi, on May 31, 2021 [Last updated : March 05, 2023]
Executing a specified shell command with multiple options 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 "-l","-t", "-r","-a" options and print output on the console screen.
Program/Source Code:
The source code to execute specified shell command with multiple options 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 multiple options
// Golang program to execute a specified shell
// command with multiple options
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", "-t", "-r", "-a"}
err = syscall.Exec(command, args, os.Environ())
if err != nil {
panic(err)
}
}
Output:
total 44
lrwxrwxrwx 1 root root 3 Mar 9 2020 lib64 -> lib
drwxr-xr-x 2 root root 4096 Mar 9 2020 lib
drwxr-xr-x 2 root root 12288 Mar 9 2020 bin
drwx------ 2 root root 4096 Mar 9 2020 root
drwxr-xr-x 4 root root 4096 Mar 9 2020 var
drwxr-xr-x 2 nobody nogroup 4096 Mar 9 2020 home
drwxr-xr-x 1 root root 4096 Feb 22 21:52 usr
drwxr-xr-x 1 root root 4096 May 31 02:55 etc
-rwxr-xr-x 1 root root 0 May 31 02:55 .dockerenv
drwxr-xr-x 1 root root 4096 May 31 02:55 ..
drwxr-xr-x 1 root root 4096 May 31 02:55 .
drwxrwxrwt 1 root root 0 May 31 02:55 tmp
dr-xr-xr-x 1 root root 0 May 31 02:55 sys
dr-xr-xr-x 2 root root 0 May 31 02:55 proc
dr-xr-xr-x 1 root root 0 May 31 02:55 dev
drwxrwxrwx 1 root root 0 May 31 02:55 tmpfs
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 the exec.LookPath() function and get the handle for the command. Then we prepared the string array for command options. After that, we executed the "ls" command with the "-l","-t", "-r","-a" options using the syscall.Exec() function and print the output of the "ls" command on the console screen.
Golang Shell Script Programs »