나만의 manpage 만들기

manpage가 뭔데?

Your reference guide is called Google / man / the Internet / ....

manual page의 약자로, 유닉스 계열 운영체제에서 사용되는 유틸리티이다. man 명령어와 같이 사용하면 해당 명령어에 대한 메뉴얼을 볼 수 있다.

manpage는 메뉴얼의 종류별로 여러 개의 섹션으로 나누어져 있다.

섹션 번호 섹션 설명
1 실행 가능한 프로그램 또는 쉘 명령
2 시스템 콜
3 라이브러리 호출 (주로 Standard C Library)
4 특별한 파일 (주로 /dev 에 포함된 디바이스 파일들)
5 파일 포맷 및 규칙 (/etc/passed 같은 파일)
6 게임
7 기타 (매크로 패키지나 규약 같은 내용을 담고 있음. 예: man(7), groff(7))
8 시스템 관리자를 위한 명령

man 명령의 기본 설정은 1 8 3 0 2 5 4 9 6 7 순서대로 섹션을 참조한다(운영체제별로 다름: man(1)의 DEFAULTS섹션 참고). 따라서 printf와 같이 동명의 메뉴얼이 다른 섹션에 있을 때에는 섹션 번호를 직접 입력하여 메뉴얼을 보아야 한다.

각 메뉴얼들은 여러 개의 단락으로 나누어진다. 다음은 일반적인 단락들이다: NAME, SYNOPSIS, CONFIGURATION, DESCRIPTION, OPTIONS, EXIT STATUS, RETURN VALUE, ERRORS, ENVIRONMENT, FILES, VERSIONS, CONFORMING TO, NOTES, BUGS, EXAMPLE, AUTHORS, SEE ALSO.

단락별 사용 예시를 들면,

메뉴얼 파일들은 /usr/share/man 밑에 섹션별로 위치한다. 예를 들어, libc의 printf 함수는 /usr/share/man/man3/printf.3.gz에서 찾을 수 있다. 이 파일들은 roff 형식으로 작성된 파일이 gzip으로 압축된 형식이다. gzip -d printf.3.gz && nroff printf.3으로 터미널에서 파일을 직접 열어볼 수 있다.

manpage 만들기

https://imgs.xkcd.com/comics/manuals.png

manpage를 작성하기 위해서는 roff 문법을 알아야 한다. 불행 중 다행이도, groff-man 메크로를 활용하면 수고를 조금 덜 수 있다. (manpage가 사용하는 nroff는 groff 기반으로 동작하는데, 기본적으로 man 메크로를 사용하도록 설정되어 있다) 가이드 문서를 보며 나만의 manpage를 만들어보자.