매뉴얼 페이지의 구문에 대해 질문이 있습니다.
저는 방금 소규모 프로젝트에 대한 맨페이지 형식의 문서를 작성했습니다. man commandname option
예를 들어 사용자가 git 문서에서처럼 입력할 수 있도록 하고 싶지만 man git commit
어떻게 해야 할지 모르겠습니다. 나는 man()
다음에서 함수를 정의하여 이를 수행하는 "더러운" 방법을 알고 있습니다 .bashrc
.
man()
{
case ${#} in
0) /usr/bin/man ;;
1) /usr/bin/man "${1}" ;;
2) /usr/bin/man "${1}-${2}" ;;
*) echo "Too many arguments" ;;
esac
}
사용자가 에 옵션을 전달할 수 있도록 문서를 개선하는 방법을 누군가 말해 줄 수 있습니까 man
?
답변1
man의 매뉴얼 페이지에서는 명령줄에 주어진 이름 쌍을 특별히 처리하는 방법을 설명합니다.
--no-subpages By default, man will try to interpret pairs of manual page names given on the command line as equivalent to a single manual page name containing a hyphen or an underscore. This supports the common pattern of programs that implement a number of subcom- mands, allowing them to provide manual pages for each that can be accessed using similar syntax as would be used to invoke the subcommands themselves. For example: $ man -aw git diff /usr/share/man/man1/git-diff.1.gz
git.1.gz
따라서 git이 제공하는 것과 같이 각 옵션에 대해 별도의 매뉴얼 페이지 파일을 제공하기만 하면 git-diff.1.gz
원하는 것을 자동으로 얻을 수 있습니다.
답변2
이것은 이미 기능입니다만데부 사람들, Linux 배포판의 일반적인 구현입니다. ~에서man 1 man
:
--no-subpages
By default, man will try to interpret pairs of manual page names given on the
command line as equivalent to a single manual page name containing a hyphen or an
underscore. This supports the common pattern of programs that implement a number
of subcommands, allowing them to provide manual pages for each that can be accessed
using similar syntax as would be used to invoke the subcommands themselves. For
example:
$ man -aw git diff
/usr/share/man/man1/git-diff.1.gz
따라서 당신이 해야 할 일은 적절한 이름의 맨페이지를 갖는 것뿐입니다 <command>-<subcommand>
.
이는 다른 구현에서는 기능이 아닐 수도 있습니다. 예를 들어 macOS는 다음 man
을 지원하지 않습니다.
~ man git commit
# shows git manpage
No manual entry for commit