왜 'makeinfo'를 '찾거나' 찾을 수 없나요?

왜 'makeinfo'를 '찾거나' 찾을 수 없나요?

내가 할 때 :

locate makeinfo

또는

find / -name "*makeinfo*"

나는 아무것도 얻지 못한다.

하지만 그렇게 하면 makeinfo --help적절한 도움말 출력이 제공됩니다.

이것이 어떻게 가능한지? 실행 파일인 경우 makeinfo위치를 찾아야 합니다.어딘가에, 옳은? 또는 별칭일 수도 있지만 그렇지 않습니다. .bashrc, .bash_aliases그리고 그 모든 파일을 확인합니다 . 어떻게 이런 일이 일어날 수 있는지 상상할 수 없습니다.

이 이상한 행동의 이유는 무엇입니까?

편집: type makeinfowhich makeinfo다 출력 /usr/bin/makeinfo.

답변1

문제를 발견했습니다.

locate사물을 더 빠르게 검색하기 위해 구축한 데이터베이스에 의존하기 때문에 빠른 것 같습니다 . 이 데이터베이스는 매일 업데이트됩니다. 명령 updatedb이 이를 수행합니다. 알고 보니 updatedb는 24시간마다 실행되는데, 를 사용하여 파일을 검색하려고 하면 locate파일이 생성된 시점부터 24시간이 지나지 않았습니다. 을(를 ) 실행한 후 sudo updatedb찾기를 통해 파일을 찾을 수 있었습니다.

자세한 내용은 locate맨 페이지를 읽어 보시기 바랍니다 .updatedb

에 대해서는 find조바심이 나서 실행이 끝날 때까지 기다리지 않은 것 같습니다.

답변2

나는 'locate(1)'에 대해 잘 알지도, 사용하지도 않습니다. 그러나 'find(1)'은 기본적으로 파일 시스템 라인을 교차하지 않기 때문에 명령을 찾지 못할 수도 있습니다. makeinfo 명령은 /usr/bin( which makeinfo찾으려면 입력)에 있을 가능성이 높으며 '/usr' 파티션은 다른 파일 시스템에 있을 수 있습니다.

편집: 맙소사! 문제가 보입니다! "*makeinfo*"를 사용하지 마십시오. '메이크인포'를 사용하세요. 어딘가에 'makeinfo'라는 문자열이 있는 파일을 정말로 찾고 싶다면 다음을 사용하세요: find / -type f -name '*makeinfo*'. 즉, 파일에 대해서만 비교하고(디렉토리가 아님 -- 훨씬 더 빠름) 큰따옴표가 아닌 작은따옴표를 사용하십시오.

최종 편집: 내 대답은 /way/ off였습니다. 그의 문제는 큰따옴표와 관련이 없었습니다.

관련 정보