일부 매뉴얼 페이지는 한 페이지에 여러 명령/기능을 문서화하며, man 명령은 일반적으로 각 명령/기능에 대한 올바른 매뉴얼 페이지를 제공합니다.
예: 많은 시스템의 malloc/free/calloc/realloc에 대한 매뉴얼 페이지
사람들은 그러한 조회를 위해 어떤 메커니즘을 사용합니까?
지금까지 내가 만난 것은 다음과 같습니다.
- 아래의 심볼릭 링크
/usr/share/man/manX
.so manX/foo
소스 지시문 만 포함하는 Alias 매뉴얼 페이지
물론 맨 페이지의 하드 링크와 복사본도 떠오릅니다.
man 명령이 다른 메커니즘을 지원합니까?
예를 들어 이 카테고리 이름을 정의하는 중앙 색인 파일이 있습니까?
답변1
OpenBSD에서 각 man
디렉토리(예: /usr/share/man
기본 시스템과 관련된 매뉴얼)에는mandoc.db
매주 실행되는 크론 작업으로 생성된 데이터베이스makewhatis
.
이러한 데이터베이스는 특정 문자열에 대한 다양한 수동 소스(roff 소스 파일)를 구문 분석하여 생성되며 다음을 통해 생성됩니다.man
유용. 색인의 내용 중 하나는 OpenBSD를 사용하는 매뉴얼 섹션 조판 .Nm
의 ("이름") 매크로가 참조하는 문자열 입니다..Sh NAME
mdoc
매크로.
예를 들어, 처음에 소스 코드의 일부malloc(3)
수동 입력/usr/share/man/man3/malloc.3
다음과 같습니다.
.Dd $Mdocdate: May 19 2019 $
.Dt MALLOC 3
.Os
.Sh NAME
.Nm malloc ,
.Nm calloc ,
.Nm realloc ,
.Nm free ,
.Nm reallocarray ,
.Nm recallocarray ,
.Nm freezero ,
.Nm aligned_alloc ,
.Nm malloc_conceal ,
.Nm calloc_conceal
.Nd memory allocation and deallocation
.Sh SYNOPSIS
도구 는 각 값을 색인화 makewhatis
하며 .Nm
사용자가 나열된 기능(예:)에 대한 매뉴얼을 요청하면 명령은 man
소스의 렌더링된 버전을 표시합니다.malloc.3
man free
OpenBSD 기본 시스템과 관련되지 않은 매뉴얼(예: 아래의 타사 매뉴얼 /usr/local/man
)도 로 구문 분석되지만 makewhatis
이러한 매뉴얼은 roff 태그를 사용하지 않는 경우가 많기 때문에 mdoc
(일반적으로 다른 매크로 패키지를 사용하여 Linux용으로 작성됨) 다른 매크로 값에서 사용하는 태그를 색인화합니다( .TH
타이틀 매크로).
일부 타사 프로그램은 설명서를 복제하고 다른 이름을 지정하는 경우에도 개별 도구나 기능에 대해 별도의 설명서를 배포하는 것 같습니다. 기호 및/또는 하드 링크를 사용하는 것도 일반적인 솔루션입니다.
다른 사람들은 조금 더 똑똑합니다. zzip_fread(3)
전체 매뉴얼 소스(패키지의 일부) 는 다음과 같습니다 zziplib
.
.so man3/zzip_read.3
즉, 파서가 다른 파일을 읽도록 하는 매크로를 포함합니다.