Sign inSign up

hairyhenderson/go-which

By hairyhenderson

•Updated about 5 years ago

Image
0

997

hairyhenderson/go-which repository overview

⁠go-which

Build Status hairyhenderson/go-which on DockerHub GoDoc

A cross-platform Go implementation of the which(1) command, usable both as a CLI and library.

Usage of which:
  -a    List all instances of executables found (instead of just the first).
  -s    No output, just return 0 if all executables are found, or 1 if some were not found.
  -v    Print the version

Unlike the UNIX which(1) command, even if multiple programs are given as input, only the first one found will be returned.

⁠CLI Usage

Chances are you don't really need this, since most UNIX-like OSes come with the more established (and significantly smaller) C implementation of which(1), either as a standalone binary, or as a shell builtin.

But if there's some reason this may be useful to you, you can use this just like the normal which(1):

$ which zsh
/usr/local/bin/zsh
$ which -a zsh
/usr/local/bin/zsh
/bin/zsh
$ which zsh bash sh
/usr/local/bin/zsh
$ which -a zsh bash sh
/usr/local/bin/zsh
/bin/zsh
/bin/bash
/bin/sh
$ if (which -s zsh bash); then
> echo 'I have zsh and bash installed';
> fi
I have zsh and bash installed
$ if (which -s zsh bash ash); then echo 'yup'
> else
> echo "I'm missing one of them...";
> fi
I'm missing one of them...

⁠Go package usage

If you're writing a program in the Go language, it can be useful to not have to shell out to which(1) to locate a binary.

The simplest usage is:

package main

import (
  "fmt"
  "github.com/hairyhenderson/go-which"
)

func main() {
  zshPath := which.Which("zsh")

  fmt.Printf("zsh found at %s", zshPath)
}

See the godocs⁠ for more information.

⁠License

The MIT License⁠

Copyright (c) 2018-2020 Dave Henderson

Tag summary

Content type

Image

Digest

Size

505.6 kB

Last updated

about 5 years ago

docker pull hairyhenderson/go-which