which
localiza o executável binário do programa (se estiver no seu PATH). man which
explica mais claramente:
que retorna os nomes de caminho dos arquivos (ou links) que seriam executados no ambiente atual, se seus argumentos fossem dados como comandos em um shell estritamente compatível com POSIX. Isso é feito pesquisando no PATH arquivos executáveis que correspondem aos nomes dos argumentos. Não segue links simbólicos.
whereis
localiza os arquivos binários, de origem e de página do manual de um programa. Por exemplo
$ whereis gimp
/usr/bin/gimp /usr/lib/gimp /etc/gimp /usr/share/gimp /usr/share/man/man1/gimp.1.gz
Você pode obter detalhes adicionais passando a saída desses comandos como argumentos para ls -l
oufile
$ ls -l $(which gimp)
lrwxrwxrwx 1 root root 8 Jun 30 19:59 /usr/bin/gimp -> gimp-2.8
$ file $(which gimp)
/usr/bin/gimp: symbolic link to gimp-2.8
locate
na verdade, encontra todos os arquivos que possuem o padrão especificado em qualquer lugar em seus caminhos. Você pode dizer a ele para encontrar apenas arquivos e diretórios cujos nomes (em vez de caminhos completos) incluem o padrão com a -b
opção, que geralmente é o que você deseja, e fornece uma lista menos pesada.
locate
é rápido porque usa um banco de dados binário atualizado periodicamente (uma vez por dia, por cron
). Você pode atualizá-lo você mesmo para garantir que os arquivos adicionados recentemente sejam encontrados executandosudo updatedb
Mais uma coisa locate
: não importa se os arquivos ainda existem ou não; portanto, para evitar encontrar arquivos excluídos recentemente, use -e
. Muitas vezes eu também canalizo para less
a lista pode ser longa. Normalmente eu faço:
sudo updatedb && locate -b -e gimp | less
Como o traço do Unity funciona é explicado aqui - ele usa o Zeitgeist para indexar arquivos do sistema e aprender com os padrões de uso, além de permitir que outros aplicativos façam uso desses dados, por isso está fazendo muito mais trabalho do que locate
.
type
? : P