Quando eu faço:
locate makeinfo
OU
find / -name "*makeinfo*"
Eu não recebo nada.
Mas quando o faço makeinfo --help
, recebo a saída de ajuda adequada.
Como isso é possível? Se makeinfo
for um executável, ele deve estar localizadoem algum lugar, correto? Ou pode ser um apelido, o que não é. Eu verifico .bashrc
e .bash_aliases
todos esses arquivos. Não consigo imaginar como isso pode ocorrer.
Quais são as razões para esse comportamento estranho?
Editar: type makeinfo
e which makeinfo
ambos produzem /usr/bin/makeinfo
.
Responder1
Eu encontrei o problema.
Parece que locate
é rápido porque depende de um banco de dados construído para pesquisar coisas com mais rapidez. Este banco de dados é atualizado diariamente. O updatedb
comando faz isso. Acontece que updatedb
ele é executado a cada 24 horas, e ainda não se passaram 24 horas quando tentei pesquisar o arquivo usando locate
, desde o momento em que o arquivo foi criado. Depois de executar sudo updatedb
, localizar conseguiu encontrar o arquivo.
Sugiro a leitura das páginas de manual de locate
e updatedb
para obter mais informações.
Quanto a find
, parece que fiquei impaciente e não esperei que terminasse a sua execução.
Responder2
Não uso ou sei muito sobre 'locate(1)'. Mas 'find(1)' pode não estar conseguindo encontrar seu comando porque, por padrão, ele não cruza as linhas do sistema de arquivos. O comando makeinfo provavelmente está em /usr/bin (digite which makeinfo
para encontrá-lo), e a partição '/usr' pode estar em outro sistema de arquivos.
EDITAR: Dó! Eu vejo o problema! não use "*makeinfo*". Use 'makeinfo'. Se você realmente deseja encontrar um arquivo que contenha a string 'makeinfo' em algum lugar, use: find / -type f -name '*makeinfo*'
. Ou seja, compare apenas com arquivos (não com diretórios - muito mais rápido) e use aspas simples, não aspas duplas.
EDIÇÃO final: Minha resposta foi /muito/ errada. Seus problemas não estavam relacionados a aspas duplas.