Exécuter la commande Shell dans Go

Jay Singh 30 janvier 2023
  1. Exécuter la commande Shell à l’aide du package os/exec dans Go
  2. Exécuter la commande Shell à l’aide du package os/exec avec un argument de passage dans Go
Exécuter la commande Shell dans Go

Les commandes Shell indiquent au système comment effectuer une tâche particulière. Les commandes externes sont exécutées via le package exec.

Le paquet os/exec, contrairement à l’appel de la bibliothèque système à partir de C et d’autres langages, n’exécute pas le shell système et ne développe aucun modèle glob ni ne gère les extensions, pipelines ou redirections de type shell.

Le package est plus similaire à la famille de fonctions exec en C.

Dans cet article, vous apprendrez à exécuter des commandes shell ou externes dans Golang.

Exécuter la commande Shell à l’aide du package os/exec dans Go

Toute commande de système d’exploitation ou de système peut être déclenchée à l’aide du package os/exec de Go. Il fournit deux fonctions qui peuvent être utilisées pour ce faire : Command, qui crée l’objet cmd, et Output, qui exécute la commande et renvoie la sortie standard.

package main

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

func main() {
    out, err := exec.Command("pwd").Output()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(string(out))
}

Production:

It will return the location of your current working directory.

Voyons maintenant comment nous pouvons utiliser le package os/exec pour exécuter des commandes simples comme ls.

Tout d’abord, nous devons importer les trois packages cruciaux, c’est-à-dire fmt, os/exec et runtime. Après cela, nous construirons une méthode execute() qui commencera à exécuter le code.

package main

import (
    "fmt"
    "os/exec"
    "runtime"
)
func execute() {

    out, err := exec.Command("ls").Output()
    if err != nil {
        fmt.Printf("%s", err)
    }
    fmt.Println("Program executed")
    output := string(out[:])
    fmt.Println(output)

}
func main() {
    if runtime.GOOS == "windows" {
        fmt.Println("This program is not aplicable for windows machine.")
    } else {
        execute()
    }
}

Production:

Program executed
bin
dev
etc
home
lib
lib64
proc
root
sys
tmp
tmpfs
usr
var

Exécuter la commande Shell à l’aide du package os/exec avec un argument de passage dans Go

La fonction Command renvoie une structure Cmd qui peut exécuter le programme fourni avec les paramètres spécifiés. Le premier argument est le programme à exécuter ; les autres arguments sont les paramètres du programme.

package main

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

func main() {
    cmd := exec.Command("tr", "a-z", "A-Z")

    cmd.Stdin = strings.NewReader("Hello Boss!")

    var out bytes.Buffer
    cmd.Stdout = &out

    err := cmd.Run()

    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("New Message: %q\n", out.String())
}

Production:

New Message: "HELLO BOSS!"