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


답변:


4

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

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에서 테스트되었습니다.]


니스-고마워 일부 중복 (예 : /Applications/Xcode.app의 경로 및 섹션 7의 "Accelerate")이 있지만 uniq파이프 라인에 아무것도 넣지 않아도 해결되지 않습니다.
xyz

@ xyz : 정렬 명령을 업데이트하여 sort -u중복을 제거했습니다.
Chris 페이지

24

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

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

"apropos : -s : 알 수없는 옵션"
Michael Mrozek

@MichaelMrozek 어떤 시스템을 사용하고 있습니까? 그것은 나를 위해 작동합니다 : 예 : apropos -s 2 -w '*'의 출력
Ulrich Dangel

감사. -s 옵션은 아마도 BSD의 Mac OS X apropos에는 없습니다.
xyz

@ f100 아 좋아요, 시도해보세요man -a -s 2 '*'
Ulrich Dangel

그것은 더 비슷해 보이지만 목록을 표시하는 대신 실제로 각 뷰어를 차례로 뷰어에게 호출합니다. 다른 의견에 게시 한 목록을 작성하는 기능을 해킹했습니다. 아마 문제가 있지만 그것은 충분합니다 :)
xyz

20

맨 페이지는 일반적으로에 배치 /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/

1
고마워-이것은 내가 필요한 시작이었다. 나는 예 lman 2를 들어서 실행되는 쉘 기능을 만들었고 각 페이지의 비공식 이름을 새 줄에 나열하고 페이지를 작성했습니다. 함수의 본문은 다음과 같습니다.find $(man --path | tr ':' ' ') -path "*/man$1/*"| xargs basename | sort | sed -E "s/\.$1(.gz)?\$//" | less
xyz

1

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


0

나는 이것이 매우 오래된 질문이라는 것을 알고 있지만 여기에 주어진 답변이 모두 효과가 없었습니다. 따라서 우분투 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 알파벳순으로.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.