매뉴얼 페이지의 제목을 나열하는 방법은 무엇입니까?

매뉴얼 페이지의 제목을 나열하는 방법은 무엇입니까?

모든 매뉴얼 페이지를 읽지 않고 매뉴얼 페이지의 헤더 목록을 보고 싶습니다. 예를 들어, bash 매뉴얼 페이지( )에는 , , 등 man bash.1많은 제목이 있습니다 . 본질적으로 나는 이 페이지 상단에 표시된 것과 같은 목록을 원합니다.NAMESYNOPSISCOPYRIGHTDESCRIPTIONHTML 매뉴얼 페이지. 명령줄에서 로컬로 가져오는 방법이 있습니까?

이는 제공된 이름과 다른 이름("문법" 대신 "문법")을 사용하여 섹션을 검색하려는 경우에 유용할 수 있습니다. 또는 때로는 찾고 있는 것이 무엇인지조차 모르는 경우도 있습니다.

답변1

시스템에서 사용mandoc, 마크다운 형식으로 출력을 요청한 다음 다음 grep으로 시작하는 줄을 요청하면 됩니다 #.

$ man -T markdown man | grep '^#'
# NAME
# SYNOPSIS
# DESCRIPTION
# ENVIRONMENT
# FILES
# EXIT STATUS
# EXAMPLES
# SEE ALSO
# STANDARDS
# HISTORY

이것이 작동하지 않는 매뉴얼의 경우 HTML을 대신 전달할 수 있습니다:

$ man -T html git | xmlstarlet sel -t -v '//h1/@id' -nl
NAME
SYNOPSIS
DESCRIPTION
OPTIONS
GIT_COMMANDS
HIGH
LOW
GUIDES
CONFIGURATION_MECHANISM
IDENTIFIER_TERMINOLOGY
SYMBOLIC_IDENTIFIERS
FILE/DIRECTORY_STRUCTURE
TERMINOLOGY
ENVIRONMENT_VARIABLES
DISCUSSION
FURTHER_DOCUMENTATION
AUTHORS
REPORTING_BUGS
SEE_ALSO
GIT
NOTES

답변2

편집하다:

나는 매뉴얼 페이지 제목이 (대부분의 경우) 유일하게 왼쪽으로 정렬된 텍스트라는 것을 알고 있습니다. /^\w매뉴얼 페이지를 열고 /up/down 을 사용하여 스크롤한 후 N간단한 검색을 수행 할 수 있습니다 n.

스크립트에서 헤더를 찾으려는 경우 아래의 원래 답변이나 다른 사람의 답변이 도움이 될 수 있습니다.

원래:

운 좋게도 나는 다음을 기반으로 솔루션을 찾았습니다.이 답변(도움이 되셨다면 손가락 추천 부탁드립니다.)

zcat $(man -w bash.1) | grep -i '^\.sh'

man -w매뉴얼 페이지 소스의 위치를 ​​가져옵니다(예 /usr/share/man/man1/bash.1.gz: ). zcat소스는 동적으로 압축이 풀려 로 전송되며 stdout호출 은 "섹션 헤더"를 표시하는(대소문자 구분 안 함) 시작하는 줄을 grep검색합니다 ..sh

이는 섹션 헤더( )를 무시 하지만 .ss필터를 (Thomas에게 감사드립니다)로 변경하여 '^\.s[sh]'이 문제를 해결할 수 있습니다.

답변3

더 짧고 간단한 대안은 공백이 아닌 다른 것으로 시작하는 줄을 찾는 것입니다.

$ man git | grep '^\S'
GIT(1)                            Git Manual                            GIT(1)
NAME
SYNOPSIS
DESCRIPTION
OPTIONS
GIT COMMANDS
HIGH-LEVEL COMMANDS (PORCELAIN)
LOW-LEVEL COMMANDS (PLUMBING)
GUIDES
CONFIGURATION MECHANISM
IDENTIFIER TERMINOLOGY
SYMBOLIC IDENTIFIERS
FILE/DIRECTORY STRUCTURE
TERMINOLOGY
ENVIRONMENT VARIABLES
DISCUSSION
FURTHER DOCUMENTATION
AUTHORS
REPORTING BUGS
SEE ALSO
GIT
NOTES
Git 2.32.0                        06/06/2021                            GIT(1)

다음 추가 줄도 제거할 수 있습니다.

$ man git | grep '^\S' | sed '1d;$d'
NAME
SYNOPSIS
DESCRIPTION
OPTIONS
GIT COMMANDS
HIGH-LEVEL COMMANDS (PORCELAIN)
LOW-LEVEL COMMANDS (PLUMBING)
GUIDES
CONFIGURATION MECHANISM
IDENTIFIER TERMINOLOGY
SYMBOLIC IDENTIFIERS
FILE/DIRECTORY STRUCTURE
TERMINOLOGY
ENVIRONMENT VARIABLES
DISCUSSION
FURTHER DOCUMENTATION
AUTHORS
REPORTING BUGS
SEE ALSO
GIT
NOTES

이미 본 경우 less(즉, 보기만 하면 어떻게 되는지 ) 일치하는 행만 표시를 man git사용할 수 있습니다 . &IOW, 제목(그리고 첫 번째와 마지막 행)만 입력 &^\S하고 표시할 수 있습니다. less전체 맨페이지 표시로 돌아가려면 다음을 입력하면 &됩니다 Enter.

관련 정보