在$PATH中查找二进制文件。

huangapple go评论62阅读模式
英文:

Find binary's in $PATH

问题

我正在寻找一个函数,可以在所有可用的文件夹中查找二进制文件,这些文件夹在$PATH中。我知道可以使用os.Getenv("PATH")来获取路径,但它返回的是:

path: /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/go/bin

需要进行处理。理想情况下,有一个函数可以这样使用:FindBinary("ntpq"),当在路径中找不到时,它将返回路径+二进制文件名和false。有人有现成的函数吗?

英文:

I am looking for a function to find a binary in all folders which are available in $PATH.
I know i can use os.Getenv("PATH") but it returns:

path: /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/go/bin

Which needs to be processed.
Ideally function like this: FindBinary("ntpq") and it will return the path + binary name and false when not found in path.
Does anybody have a ready function?

答案1

得分: 11

你可以使用os/exec包中的LookPath函数:

path, err := exec.LookPath("fortune")
if err != nil {
    log.Fatal("安装 fortune 是你的未来")
}
fmt.Printf("fortune 可在 %s 处找到\n", path)

这段代码的作用是查找系统中是否安装了名为"fortune"的程序,并返回该程序的路径。如果未找到该程序,则会输出一条错误信息。

英文:

You can use the LookPath function from the os/exec package:

path, err := exec.LookPath("fortune")
if err != nil {
	log.Fatal("installing fortune is in your future")
}
fmt.Printf("fortune is available at %s\n", path)

huangapple
  • 本文由 发表于 2017年9月15日 17:25:07
  • 转载请务必保留本文链接:https://go.coder-hub.com/46236173.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定