Linha de Comando em Linux: whereis

Definição do Comando whereis

 

whereis é uma junção de duas palavras: “where” e “is”. Em português significa “onde está?”

O comando whereis localiza binários, código fonte e manuais(documentação) dos comandos.

Opções do Comando whereis

  • -b = Procura apenas por binários. Binário é a mesma coisa que programa(um código fonte compilado)
  • -m = Procura apenas por manual ou a documentação do programa desejado.
  • -s = Procura por código fonte. Na verdade, nunca vi essa opção funcionando e olha que fiz uma boa busca na internet. O manual do comando whereis não cita exemplos a esse respeito.
  • -u = Procura apenas por arquivos incomuns. -u é a inicial de unusual  em inglês. Um arquivo é tido como incomum  para o comando whereis quando ele não tem nenhuma entrada para cada tipo requisitado ou quando ele tem mais de uma. Ou seja, se ao pesquisar, por exemplo, se um programa tem manual e retornar mais de um ou nenhum então esse programa é incomum(unusual) para o comando whereis. Para não ser incomum ele tem que retornar apenas um manual.
  • -B = Faz a pesquisa apenas no(s) caminho(s) especificado(s). Podemos definir uma ou mais pastas para busca. Exemplo : whereis -B /usr/bin -f ls. Assim iremos pesquisar pelo binário(programa) de ls apenas dentro de /usr/bin
  • -M = Procura por manual de um programa apenas no(s) caminho(s) especificado(s). A mesma explicação dada acima para -B se aplica aqui.
  • -S = Procura por código fonte de um programa no(s) caminho(s) especificado(s) por mim.
  • -f =  É usada juntamente com -B, -M  ou -S. Serve apenas para indicar o final do caminho, ou dos caminhos, que especificamos. Essa opção é chata para ser entendida, mas é algo simples. Veremos a seguir.

 

Usando o Comando whereis

  1. Busca pelo comando ls
    [elder@centos65 ~]$ whereis ls
    ls: /bin/ls /usr/share/man/man1/ls.1.gz

    Encontramos o binário /bin/ls e a documentação(manual) de ls em  /usr/share/man/man1/ls.1.gz

  2. Busca apenas pelo binário de ls
    [elder@centos65 ~]$ whereis -b ls
    ls: /bin/ls
  3. Buscando pelo manual do comando date
    [elder@centos65 ~]$ whereis -m date
    date: /usr/share/man/man1/date.1.gz
  4. Buscando pelo código fonte de pwd
    [elder@centos65 ~]$ whereis -s pwd
    pwd:

    Não encontrou nenhum código fonte. 🙂 Conforme disse anteriormente.

 

Usando -M, -B e -S para Definirmos uma Lista de Locais Onde Queremos que Seja Feita a Pesquisa

  1. Pesquisando por binários de mv apenas em /usr/local/bin e /usr/bin
    [elder@centos65 ~]$ whereis -b -B /usr/bin/ /usr/local/bin/ -f mv
    mv:

    Não foi encontrado nadica de nada nesses diretórios. Sabe por quê? porque mv está dentro de /bin/ como vemos abaixo

  2. Buscando onde está mv
    [elder@centos65 ~]$ whereis -b  mv
    mv: /bin/mv
  3. Ah e a opção  -f? Usamos acima no passo 1. Ela serve apenas para definir o final e quantidade de caminhos que especificamos. Vamos a mais exemplos.
    [elder@centos65 ~]$ whereis -b -B /usr/bin/ /usr/local/bin/  /bin/  -f cp
    cp: /bin//cp

    Acima com  opção -f dizemos para o comando whereis que chegamos ao fim dos caminhos que especificamos, neste caso  “/usr/bin/”, “/usr/local/bin/”“/bin/”. Se não colocássemos o -f whereis iria pensar que cp era um outro caminho.
    Então, juntamente com -S, -B ou M usaremos o -f.

    Obs.: Nesse exemplo vemos duas barras em cp: /bin//cp. é um errinho do próprio comando.

 

Usando a Opção -u do Comando whereis

-u de unusual(inglês 🙂 ) ou incomum.

A opçao -u sempre considera a pasta em que você está acessado atualmente.

Para whereis, incomum é o arquivo que não tem a opção especificada.

Exemplo:

cd /usr/bin
whereis -u -m -M /usr/share/man  -f  *

O Comando acima diz

cd /usr/bin =  Acesse a pasta /usr/bin
whereis -u -m -M /usr/share/man  -f  * = Encontre dentro do diretório atual(/usr/bin) todos(*) os arquivos que não(-u) têm manual(-m)  em /usr/share/man

Então, -u é mais uma negação. Ele pede o contrário. Por exemplo, se colocarmos “whereis -u -b -M /usr/share/man -f  *” queremos buscar todos os arquivos na pasta atual que não têm um manual dentro de /usr/share/man. Por outro lado, esse comando sem o -u  “whereis  -b -M /usr/share/man -f  *” nos dá todos os binários da pasta atual que tem manual dentro de /usr/share/man

 

  1. Encontre todos os binários dentro de /bin que possui documentação dentro de /usr/share/man
    [elder@centos65 bin]$ cd /bin/
    [elder@centos65 bin]$ whereis -u -M /usr/share/man -f *

 

Diferença entre whereis e which

O post anterior foi sobre o comando which. Apesar de parecem iguais os comandos which e whereis tem funções bem distintas.

Algumas diferenças são:

  • which busca apenas caminhos de comandos que estejam dentro da variável PATH enquanto whereis busca, além de PATH, em outros locais.
  • whereis não trabalha com alias(apelidos), já which reconhece.
  • which também trabalha com funções.

 

Conclusão

Assim com which, whereis é bem útil para pegarmos o caminho completo de um comando para usamos em scripts. Lembrando que em scripts é sempre recomendado usarmos o caminho completo, como por exemplo, em um script, ao invés de usarmos “cp”  usamos “/bin/cp”

A “-s”  do comando whereis nunca foi útil para mim. Aparentemente nunca encontra código fonte. Lembrando que -s é a letra inicial de source(fonte).

 

Siga-nos em nossas redes:

Link Facebook: https://www.facebook.com/gnulinuxbr

Link WhatsApp: https://chat.whatsapp.com/G9xS3Ylzoou3TrN49DQso4

Link Telegram: https://t.me/gnulinux_brasil

YouTube: https://www.youtube.com/channel/UCwyFWDqE0v7SwpZenjmzxYQ

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *