Diferença entre os comandos which, whereis e whatis no Linux
No Linux, existem alguns comandos que facilitam a busca de informações sobre pacotes e seus arquivos executáveis (binários), manuais, como a localização desses arquivos em disco (ou SSD!), ou ainda mesmo apenas para entender melhor a funcionalidade de cada comando.
Três comandos que considero bastante úteis para realizar tarefas deste tipo são os comandos which, whereis e whatis, que, apesar de serem aparentados, funcionam de forma ligeiramente diferente entre si, entregando resultados distintos.
Neste artigo explico a diferença entre eles, suas sintaxes e como utilizá-los na prática com alguns exemplos simples.
Vamos lá.
1. O comando which
O comando which é usado para identificar a localização (ou seja, o caminho) de um programa ou comando no sistema. Ele percorre a variável de ambiente PATH do usuário e retorna o caminho completo para o binário que será executado se o comando solicitado for digitado no terminal.
Sintaxe:
which [opções] nome_do_comando
Exemplos de uso:
1. Se quisermos saber onde o executável do comando ls está localizado, basta rodar:
which ls
Resultado:
/bin/ls
2. Já para verificar onde está o executável do python:
which python3
Saída possível:
/usr/bin/python3
Se o arquivo não for encontrado, nada será retornado no terminal, nem mesmo uma mensagem de erro.
2. O comando whereis
O comando whereis é mais abrangente que o which. Ele busca não só o caminho do executável do programa, mas também as localizações de seus arquivos de origem, páginas de manual e outros arquivos relacionados. Assim, ele traz mais informações do que apenas a localização do arquivo binário em si.
Sintaxe:
whereis [opções] nome_do_comando
Exemplos de uso:
1. Se quisermos buscar todas as informações do comando ls:
whereis ls
Saída possível:
ls: /bin/ls /usr/share/man/man1/ls.1.gz
2. Para procurar informações sobre o comando bash:
whereis bash
Saída possível:
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
Se o arquivo não for encontrado, apenas o nome do próprio arquivo pesquisado será exibido no terminal, mas sem mostrar uma mensagem de erro.
3. O comando whatis
Já o comando whatis tem uma função diferente dos dois anteriores. Ele consulta um banco de dados de manuais (geralmente com a ajuda do comando man) e retorna uma descrição breve sobre o comando ou programa especificado. Ele não retorna caminhos de arquivos, mas sim uma breve explicação sobre o comando.
Sintaxe:
whatis [opções] nome_do_comando
Exemplos de uso:
1. Para obter uma descrição resumida sobre o comando ls:
whatis ls
Saída possível:
ls (1) - list directory contents
2. Para saber rapidamente o que o comando grep faz:
whatis grep
Saída possível:
grep (1) – print lines matching a pattern
Se o arquivo não for encontrado, será exibida uma mensagem do tipo “nada apropriado“.
Comandos whereis, whatis e which no Linux.
Imagem de FreeCliparts por Pixabay
Comparação entre os comandos which, whereis e whatis
| Comando | Função | Informações retornadas |
|---|---|---|
which |
Retorna o caminho completo do executável encontrado no PATH. |
Caminho do binário (executável) |
whereis |
Localiza o binário, código-fonte e páginas de manual de um comando. | Caminho do binário, manual e arquivos relacionados |
whatis |
Retorna uma breve descrição do comando consultado. | Descrição resumida (com base no man) |
Conclusão
Vimos neste post que os comandos which, whereis e whatis são ferramentas bastante úteis no Linux para buscar informações sobre programas e comandos. Enquanto o which se concentra apenas em localizar o binário de um programa, o whereis retorna uma saída um pouco mais completa, incluindo arquivos relacionados e manuais. Já o comando whatis é útil para obter uma descrição rápida de um comando que você não conheça.
