package main import ( "bufio" "fmt" "os" "os/exec" "path" "strings" ) func main() { r := bufio.NewReader(os.Stdin) paths := strings.Split(os.Getenv("PATH"), ":") for { found := false cmd, _ := r.ReadString('\n') args := strings.Split(strings.TrimSpace(cmd), " ") cmd = args[0] for i := range paths { if _, err := os.Stat(path.Join(paths[i], cmd)); err == nil { cmd = path.Join(paths[i], cmd) found = true break } } if found { c := exec.Command(cmd, args[1:]...) output, err := c.CombinedOutput() if err != nil { fmt.Fprintln(os.Stderr, err.Error()) continue } fmt.Print(string(output)) } } }