내가 할 때 :
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
맨 페이지를 읽어 보시기 바랍니다 .updatedb
에 대해서는 find
조바심이 나서 실행이 끝날 때까지 기다리지 않은 것 같습니다.
답변2
나는 'locate(1)'에 대해 잘 알지도, 사용하지도 않습니다. 그러나 'find(1)'은 기본적으로 파일 시스템 라인을 교차하지 않기 때문에 명령을 찾지 못할 수도 있습니다. makeinfo 명령은 /usr/bin( which makeinfo
찾으려면 입력)에 있을 가능성이 높으며 '/usr' 파티션은 다른 파일 시스템에 있을 수 있습니다.
편집: 맙소사! 문제가 보입니다! "*makeinfo*"를 사용하지 마십시오. '메이크인포'를 사용하세요. 어딘가에 'makeinfo'라는 문자열이 있는 파일을 정말로 찾고 싶다면 다음을 사용하세요: find / -type f -name '*makeinfo*'
. 즉, 파일에 대해서만 비교하고(디렉토리가 아님 -- 훨씬 더 빠름) 큰따옴표가 아닌 작은따옴표를 사용하십시오.
최종 편집: 내 대답은 /way/ off였습니다. 그의 문제는 큰따옴표와 관련이 없었습니다.