当我做:
locate makeinfo
或者
find / -name "*makeinfo*"
我什么也没得到。
但是当我这样做时makeinfo --help
,它会给我正确的帮助输出。
这怎么可能?如果makeinfo
是可执行文件,则必须位于某处, 正确的?或者它可以是别名,但事实并非如此。我检查了.bashrc
以及.bash_aliases
所有这些文件。我无法想象这是怎么发生的。
这种奇怪行为的原因是什么?
编辑:type makeinfo
并且which makeinfo
都输出/usr/bin/makeinfo
.
答案1
我发现了问题。
看起来速度locate
很快,因为它依赖于它构建的数据库来更快地搜索内容。该数据库每天更新。该updatedb
命令执行此操作。事实证明,updatedb
每 24 小时运行一次,而当我尝试使用 , 搜索文件时locate
,从文件创建之日起,24 小时还没有过去。运行后sudo updatedb
,locate 能够找到该文件。
locate
我建议阅读和的联机帮助页updatedb
以获取更多信息。
至于find
,我似乎很不耐烦,没有等到它执行完毕。
答案2
我不太使用或了解“locate(1)”。但是“find(1)”可能无法找到您的命令,因为它默认情况下不会跨文件系统行。 makeinfo 命令可能位于 /usr/bin 中(键入which makeinfo
即可找到它),而“/usr”分区可能位于另一个文件系统上。
编辑: 哦!我看到问题了!不要使用“*makeinfo*”。使用“makeinfo”。如果您确实想查找其中某处包含字符串“makeinfo”的文件,请使用:find / -type f -name '*makeinfo*'
。也就是说,仅与文件(而不是目录——更快)进行比较,并使用单引号,而不是双引号。
最终编辑:我的答案是/way/off。他的问题与双引号无关。