답변:
이 명령은 주어진 섹션에있는 모든 항목의 정렬 된 이름을 나열합니다.
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에서 테스트되었습니다.]
uniq
파이프 라인에 아무것도 넣지 않아도 해결되지 않습니다.
sort -u
중복을 제거했습니다.
특정 섹션에서 설치된 모든 매뉴얼 페이지 를 나열하려면 apropos 를 사용할 수 있습니다 .
apropos -s 2 . # use an regex for apropos . means anything
apropos -s 2 -w '*' # use unix globbing for apropos
man -a -s 2 '*'
맨 페이지는 일반적으로에 배치 /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/
lman 2
를 들어서 실행되는 쉘 기능을 만들었고 각 페이지의 비공식 이름을 새 줄에 나열하고 페이지를 작성했습니다. 함수의 본문은 다음과 같습니다.find $(man --path | tr ':' ' ') -path "*/man$1/*"| xargs basename | sort | sed -E "s/\.$1(.gz)?\$//" | less
나는 이것이 매우 오래된 질문이라는 것을 알고 있지만 여기에 주어진 답변이 모두 효과가 없었습니다. 따라서 우분투 18.04 및 macOS Mojave, 10.14.6 에서 작동하는 다음과 같은 단일 라이너를 생각해 냈습니다.
find $(man --path | tr ':' ' ') -type f -path '*man2*' \
-exec basename {} \; | sed 's/\..*//' | sort
빠른 정리 :
$(man --path | tr ':' ' ')
매뉴얼 페이지의 현재 경로를 얻으려면find <man paths> -type f -path '*man2*' -exec basename {} \;
맨 경로에있는 모든 일반 파일의 파일 이름을 가져옵니다.sed
파일 확장자를 제거합니다sort
알파벳순으로.