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. É mais ou menos essa  a explicação de man whereis no Linux. É um pouco difícil de entender à primeira vista, mas nada demais. Iremos ver os exemplos para entendermos melhor.
  • -B = Faz a pesquisa no caminho especificado. Podemos definir uma outra pasta para buscar por binários usando: whereis -B /usr/bin ls. Assim iremos pesquisar por ls apenas dentro de /usr/bin
  • -M = Procura por manual de um programa no caminho especificado por mim. A mesma explicação dada acima para -B se aplica aqui.
  • -S = Procura por código fonte de um programa no caminho especificado por mim. Bom, como dito anteriormente, nunca vi um código fonte encontrado.
  • -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 no logo início de nosso estudo sobre whereis, mas é algo simples como 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 o Local que 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 a seguir

  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. Ele 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 Opeçã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 tem um manual dentro de /usr/share/man. Por outro lado, o 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 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 *