Go 实用小工具

1 minute read

Go 小工具

执行命令行

 1package main
 2
 3import (
 4	"flag"
 5	"fmt"
 6	"runtime"
 7    "os/exec"
 8    "strings"
 9)
10
11func main() {
12	// flag 包使用方法:flag.Type("flagName",defaultValue,"help message") *Type
13	var name = flag.String("name","ls","info: 命令")
14	var args = flag.String("args","-h","info: 多个参数")
15    flag.Parse()
16	fmt.Println(*name)
17	fmt.Println(*args)
18	cmd := *name + " " + *args
19	fmt.Println("Command: %s", cmd)
20	out, err := exec.Command("bash", "-c", cmd).CombinedOutput()
21	if runtime.GOOS == "windows" && err != nil {
22		fmt.Println("Command error: %s", err)
23		out, err = exec.Command("cmd", "/C", cmd).CombinedOutput()
24	}
25	checkOutput := strings.Contains(string(out), "不是内部或外部命令,也不是可运行的程序")
26	if err != nil || checkOutput {
27		fmt.Println("Execute Command Error: %s", err)
28	} else {
29		fmt.Println("Successfully Execute Command Output: %s", out)
30	}
31}

实现在 Windows/Linux 下执行命令行的操作 例如:

1ls -a -l
2total 1024
3dr-xr-x---. 10 root root    4096 Jul 26 11:12 .
4dr-xr-xr-x. 19 root root    4096 Jul 26 01:30 ..
5-rw-------.  1 root root    3135 Mar  8 12:44 xxx.cfg
6-rw-------   1 root root    8789 Jul 26 11:10 .bash_history
7-rw-r--r--.  1 root root      18 Dec 29  2013 .bash_logout
8...