Cuando lo hago:
locate makeinfo
O
find / -name "*makeinfo*"
No consigo nada.
Pero cuando lo hago makeinfo --help
, me da el resultado de ayuda adecuado.
¿Cómo es esto posible? Si makeinfo
es un ejecutable, debe estar ubicadoen algún lugar, ¿correcto? O puede ser un alias, que no lo es. Compruebo .bashrc
y .bash_aliases
todos esos archivos. No puedo imaginar cómo puede ocurrir esto.
¿Cuáles son las razones de este extraño comportamiento?
Editar: type makeinfo
y which makeinfo
ambos resultados /usr/bin/makeinfo
.
Respuesta1
Encontré el problema.
Parece que locate
es rápido porque se basa en una base de datos que crea para buscar cosas más rápido. Esta base de datos se actualiza diariamente. El updatedb
comando hace esto. Resulta que updatedb
se ejecuta cada 24 horas y no habían pasado 24 horas cuando intenté buscar el archivo usando locate
, desde el momento en que se creó el archivo. Después de ejecutar sudo updatedb
, localizar pudo encontrar el archivo.
Sugiero leer las páginas de manual de locate
y updatedb
para obtener más información.
En cuanto a find
, parece que estaba impaciente y no esperé a que terminara su ejecución.
Respuesta2
No uso ni sé mucho sobre 'locate(1)'. Pero es posible que 'find(1)' no encuentre su comando porque, de forma predeterminada, no cruza las líneas del sistema de archivos. Es probable que el comando makeinfo esté en /usr/bin (escriba which makeinfo
para encontrarlo), y la partición '/usr' puede estar en otro sistema de archivos.
EDITAR: ¡Doh! ¡Veo el problema! no utilice "*makeinfo*". Utilice 'hacer información'. Si realmente desea encontrar un archivo que tenga la cadena 'makeinfo' en algún lugar, use: find / -type f -name '*makeinfo*'
. Es decir, compare únicamente con archivos (no con directorios, mucho más rápido) y utilice comillas simples, no comillas dobles.
EDICIÓN final: Mi respuesta fue /camino/ desactivada. Sus problemas no estaban relacionados con las comillas dobles.