
當我做:
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。他的問題與雙引號無關。