예를 들어, 다음 명령을 입력하면:
$ man -k compare
diff
명령이 결과에서 누락되었지만 test
실제로는 존재하지 않습니다. apropos
예상대로 사용하여 동일한 결과를 얻었습니다 .
$ whereis diff
diff: /usr/bin/diff /usr/share/man/man1/diff.1.gz
$ whereis test
test: /usr/bin/test /usr/share/man/man1/test.1.gz
간단한 설명을 확인해보면 diff
결과는 다음과 같습니다.
NAME
GNU diff - compare files line by line
보시다시피 짧은 설명에 "비교"가 있습니다. 또한 긴 설명도 확인해 보겠습니다.
DESCRIPTION
Compare FILES line by line.
설명에 "비교"가 다시 나타납니다.
이제 다음의 간단한 설명을 살펴보겠습니다 test
.
NAME
test - check file types and compare values
이것이 바로 제가 기대했던 것입니다. 그러나 테스트 설명에는 "비교"가 빠졌습니다.
그래서 왜 찾을 man -k compare
수 없는지 잘 모르겠습니다 . 그러나 나는 이것이 명령의 출력과 관련이 있다고 생각합니다 .apropos compare
diff
whatis
$ whatis diff
diff (1) - (unknown subject)
$ whatis test
test (1) - check file types and compare values
이제 이러한 차이가 발생하는 이유는 매뉴얼 페이지의 이름이 하나가 아닌 "GNU diff"라는 두 단어로 구성되어 있기 때문일 수 있지만 diff
확실하지는 않습니다.
답변1
이것은 GNU diffutils 패키지 매뉴얼 페이지의 버그입니다. 의심할 수 있듯이 문제는 프로그램 이름으로 "diff"만 표시하는 것이 아니라 "GNU diff" 등을 표시한다는 것입니다. 이로 인해 man 프로그램이 간단한 설명을 인식하지 못하게 됩니다.
python3
>>> import dbm
>>> db = dbm.open('/var/cache/man/index.db')
>>> db['diff\0']
b'-\t1\t1\t1554725040\t0\tA\t-\t-\tgz\t\x00'
>>> db['cat\0']
b'-\t1\t1\t1567679920\t0\tA\t-\t-\tgz\tconcatenate files and print on the standard output\x00'
이 버그는 diffutils 3.3 이후에 발생했지만 diffutils 3.6 이전에 발생했습니다. 보고서에 따르면버그 #39760그리고 고정이번에 제출하세요아니면 실제로 가능함이번에 제출하세요. 이 수정 사항은 아직 릴리스되지 않았으며 diffutils 3.8에서 릴리스될 예정입니다.