태그 보관물: shell

shell

특정 섹션의 모든 매뉴얼 페이지 목록을 어떻게 출력합니까? 는 시스템 호출

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

man 2 fork

Google에 의지하지 않고 섹션 2가 무엇인지 어떻게 알 수 있습니까?



답변

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

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

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

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

man와일드 카드 패턴을 사용하여 모든 명령에 대한 섹션을 검색하도록 지시 합니다 *(백 슬래시로 인용하여 쉘이 해석하지 않음). -a모든 일치 항목을 찾고 -W페이지를 표시하는 대신 경로 이름을 인쇄하고 -S 1섹션 1을 지정합니다. 1검색하려는 섹션으로 변경하십시오 .

sed명령은 파일 이름 확장자를 제거합니다. 완전한 파일 이름을 보려면 제거하십시오. sort결과를 정렬합니다 ( -u중복 제거).

편리한 재사용을 위해 Bash 쉘 기능을 정의합니다.

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

예를 들어, mansect 3섹션 3의 항목을 볼 수 있도록 호출 할 수 있습니다 .

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


답변

특정 섹션에서 설치된 모든 매뉴얼 페이지 를 나열하려면 apropos 를 사용할 수 있습니다 .

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


답변

맨 페이지는 일반적으로에 배치 /usr/share/man되지만 check에 배치되며 $MANPATH다음과 같이 섹션으로 구성됩니다.

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

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

 ...

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

ls /usr/share/man/man2/

또는 더 완전한 것 :

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

$MANPATH이름이 공백 인 디렉토리가 있으면 후자에 문제가 있습니다 .

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

apt-file search /man2/


답변

Mac OS X에서 내가 일할 수있는 유일한 것은 man -k . | grep -F '(3)'섹션 3에 모든 것을 나열합니다.


답변

나는 이것이 매우 오래된 질문이라는 것을 알고 있지만 여기에 주어진 답변이 모두 효과가 없었습니다. 따라서 우분투 18.04 및 macOS Mojave, 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 {} \; 맨 경로에있는 모든 일반 파일의 파일 이름을 가져옵니다.
  • sed 파일 확장자를 제거합니다
  • sort 알파벳순으로.

답변