Exécuter la commande Shell dans Go
- Exécuter la commande Shell à l’aide du package os/exec dans Go
- Exécuter la commande Shell à l’aide du package os/exec avec un argument de passage 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!"