man -aw printf
내 Pop!_OS 20.04 LTS 시스템에서 이것을 사용하면 다음이 반환됩니다.
/usr/share/fish/man/man1/printf.1
/usr/share/man/man1/printf.1.gz
/usr/share/man/man3/printf.3.gz
하지만 내가 man -k printf
or man -f printf
또는 를 사용하면 apropos printf
그렇게 될 것입니다.오직다음에 대한 정보를 반환합니다.
/usr/share/man/man1/printf.1.gz
/usr/share/man/man3/printf.3.gz
왜 이 명령은 가능한 것을 찾지 못합니까 man -a
?
이거 해봤는데 mandb
업데이트할게 없네요.
답변1
다음은 귀하 man
와 귀하의 친구가 다음 출신이라고 가정합니다.사람 데이터베이스. Pop!_OS가 Ubuntu를 기반으로 하고 Ubuntu 20.04에는 기본적으로 man-db가 설치되어 있다는 점을 고려하면 이는 올바른 것입니다.
man -f
"whatis" 또는 "apropos" 모드(및 각각 apropos ) man -k
에서 작동할 때 바이너리가 man
실제로 호출 되고 검색이 위임됩니다. whatis
반면에 기본 모드(예:) 또는 "where" 모드()에서 실행되면 바이너리 자체에서 검색이 수행됩니다. 및 검색 루틴은 서로 독립적으로 구현됩니다.man page
man -w page
man
man
whatis
whatis
더 적은 수의 매뉴얼 페이지가 나열 되는 두 가지 주요 이유는 다음과 같습니다 man -a
.
불완전한 구성: 구성된 검색 경로
/etc/manpath.config
(Debian 및 그 파생 제품,/etc/man_db.conf
일부 다른 배포판에서 사용됨)에 매뉴얼 페이지가 포함된 시스템의 모든 디렉터리가 포함되어 있지만 그MANDB_MAP
중 일부가 파일에 없으면 인덱스 데이터베이스가 초기화되지 않았습니다(검색되지도 않음). , 존재하는 경우) 인덱스 데이터베이스만 검색하기 때문에 인덱스 데이터베이스가 아닌man -a
검색 경로에 나열된 디렉토리를 직접 검색하기 때문에 포함된 페이지는 어쨌든 발견됩니다 .whatis
매뉴얼 페이지를 포함하는 모든 디렉토리 에 올바른
MANDATORY_MANPATH
및MANDB_MAP
항목이 있더라도 여전히 나열될 수 있습니다/etc/manpath.config
.whatis
man -a
그것은 단순히생략출력에 이름 부분 조합이 중복됩니다.. 귀하의 경우에는printf(1)
둘 다에서 발견되며 검색 경로에 처음 나타나는 디렉토리만 나열됩니다./usr/share/man
/usr/share/fish/man
검색 경로가 사용될 manpath
Show & Friends 명령을 사용하고 모든 관련 디렉토리가 포함되어 있는지 확인할 수 있습니다. man
기본적으로 의 MANDATORY_MANPATH
항목을 기반으로 작성 됩니다 /etc/manpath.config
.
man
MANPATH
& Friends는 검색 결과 설정을 변경하여 명시적으로 정의된 검색 경로를 사용하여 호출할 수도 있습니다. 예를 들어 (2)의 상황에 처해 있다면,
MANPATH=/usr/share/fish/man:/usr/share/man whatis printf
에 대한 한 줄 설명 /usr/share/fish/man/man1/printf.1
대신 에 대한 한 줄 설명이 인쇄될 수 있습니다 /usr/share/man/man1/printf.1.gz
.
또한 이 옵션을 사용하여 뒤에서 무슨 일이 일어나고 있는지 확인할 수도 있습니다 --debug
. 프로그램이 /usr/share/man
이전에 나열된 검색 경로를 사용하고 /usr/share/fish/man
있고 세 개의 파일이 모두 발견되었지만 printf
섹션에서 발견된 두 번째 파일에 대한 행은 ( 또는 ) 1
로 인쇄되지 않은 것으로 나타날 수 있습니다 .whatis
man -f
마지막으로 사례 (2)를 해결하기 위해 man
중복된 이름 부분 조합도 나열하도록 래핑하는 도우미 함수를 정의할 수 있습니다.
slowman () (
IFS=:
for path in ${MANPATH-$(manpath)}
do
printf '%s\n' "Searching ${path}:" 1>&2
MANPATH="$path" man "$@"
done
)
답변2
남자 남자:
-w, --where, --path, --location
Don't actually display the manual page, but do print the loca‐
tion of the source nroff file that would be formatted. If the
-a option is also used, then print the locations of all source
files that match the search criteria.
답변3
정확한 버전 man(1)
(원래 Unix 버전인지 의심스럽습니다...) 및 구성(환경 변수, Linux MANPATH
항목 - Debian의 실제 버전...)에 따라 다릅니다./etc/man_db.conf