특정 섹션의 모든 매뉴얼 페이지 목록을 출력하는 방법은 무엇입니까?

특정 섹션의 모든 매뉴얼 페이지 목록을 출력하는 방법은 무엇입니까?

예를 들어 매뉴얼 페이지는 fork시스템 호출 섹션에 있으며 번호는 2입니다.

man 2 fork

Google을 사용하지 않고 Part 2의 다른 내용을 어떻게 알 수 있나요?

답변1

모두 나열설치됨섹션별 매뉴얼 페이지를 사용할 수 있습니다.바로:

apropos -s 2 .  # use an regex for apropos . means anything
apropos -s 2 -w '*'  # use unix globbing for apropos

답변2

맨페이지는 일반적으로 에 위치 /usr/share/man하지만 확인 $MANPATH하고 다음과 같은 섹션으로 구성하십시오.

 Section 1:
 /usr/share/man/man1/

 Section 2:
 /usr/share/man/man2/

 ...

따라서 설치된 모든 Part 2 맨페이지를 나열하려면 다음을 수행하십시오.

ls /usr/share/man/man2/

또는 더 완전한:

find $(echo $MANPATH | tr ':' ' ') -path '*/man2/*'

$MANPATH후자의 경우 디렉터리 이름에 공백이 포함되어 있으면 문제가 됩니다.

대부분의 배포판에서는 패키지 도구를 사용하여 사용 가능한 매뉴얼 페이지를 확인할 수도 있습니다. 예를 들어 Debian 파생 배포판에서는 apt-file다음과 같이 사용할 수 있습니다.

apt-file search /man2/

답변3

이 명령은 특정 섹션에 있는 모든 항목의 정렬된 이름을 나열합니다.

man -aWS 1 \* | xargs basename | sed 's/\.[^.]*$//' | sort -u

경로 이름을 보려면 다음을 사용하십시오.

man -aWS 1 \* | sed 's/\.[^.]*$//' | sort

이는 와일드카드 패턴 (쉘이 해석하지 않도록 백슬래시를 인용함) man을 사용하여 섹션의 모든 명령을 검색하도록 지시합니다. 일치하는 항목을 모두 찾아 페이지를 표시하는 대신 경로 이름을 인쇄하고 첫 번째 섹션을 지정합니다. 검색하고 싶은 부분 으로 변경하세요 .*-a-W-S 11

sed명령은 파일 확장자를 제거합니다. 전체 파일 이름을 보려면 확장자를 제거하세요. sort결과를 정렬합니다( -u중복 항목 제거).

재사용을 용이하게 하기 위해 Bash 쉘 함수가 여기에 정의되어 있습니다.

function mansect { man -aWS ${1?man section not provided} \* | xargs basename | sed 's/\.[^.]*$//' | sort -u; }

예를 들어 이를 호출하여 mansect 3세 번째 섹션의 항목을 볼 수 있습니다.

[macOS에서 테스트되었습니다. ]

답변4

나는 이것이 매우 오래된 질문이라는 것을 알고 있지만 여기에 제공된 답변 중 어느 것도 나에게 도움이 되지 않았습니다. 그래서 나는 다음과 같은 효과를 생각해 냈습니다.우분투18.04 및애플 시스템모하비, 10.14.6:

find $(man --path | tr ':' ' ') -type f -path '*man2*' \
  -exec basename {} \; | sed 's/\..*//' | sort

빠른 실행:

  • Thors 답변 작성: $(man --path | tr ':' ' ')매뉴얼 페이지의 현재 경로를 얻으십시오.
  • find <man paths> -type f -path '*man2*' -exec basename {} \;man 경로에 있는 모든 일반 파일의 파일 이름을 가져옵니다.
  • sed파일 확장자를 제거하세요
  • sort알파벳순으로.

관련 정보