私がする時:
locate makeinfo
または
find / -name "*makeinfo*"
何も得られません。
しかし、そうするとmakeinfo --help
、適切なヘルプ出力が表示されます。
これはどうして可能なのでしょうか?makeinfo
実行ファイルの場合は、どこか、正しいですか? または、エイリアスである可能性もありますが、そうではありません。.bashrc
、.bash_aliases
およびすべてのファイルを確認しました。どうしてこのようなことが起こるのか想像できません。
この奇妙な動作の理由は何でしょうか?
編集:両方とも出力しtype makeinfo
ます。which makeinfo
/usr/bin/makeinfo
答え1
問題を見つけました。
locate
が高速なのは、検索を高速化するために構築したデータベースに依存しているからと思われます。このデータベースは毎日更新されます。updatedb
コマンドはこれを実行します。 は 24 時間ごとに実行されることが判明しましたが、 を使用してファイルを検索しようとしたときには、ファイルが作成されてからupdatedb
24 時間が経過していませんでした。 を実行した後、locate はファイルを見つけることができました。locate
sudo updatedb
詳細についてはlocate
、およびのマニュアルページを読むことをお勧めします。updatedb
に関してはfind
、私はせっかちだったので、それが完了するのを待たずに実行してしまったようです。
答え2
私は 'locate(1)' についてあまり知りませんし、使用したこともありません。しかし、'find(1)' は、デフォルトではファイルシステムの境界を越えないため、コマンドを見つけられない可能性があります。makeinfo コマンドは /usr/bin (入力してwhich makeinfo
見つけてください) にある可能性があり、'/usr' パーティションは別のファイルシステムにある可能性があります。
編集: ああ! 問題が分かりました! "*makeinfo*" は使用しないでください。'makeinfo' を使用してください。文字列 'makeinfo' がどこかにあるファイルを本当に検索したい場合は、次を使用します: find / -type f -name '*makeinfo*'
。つまり、ファイルのみを比較し (ディレクトリではなく、はるかに高速です)、二重引用符ではなく一重引用符を使用します。
最終編集: 私の答えは完全に間違っていました。彼の問題は二重引用符とは無関係でした。