나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-10-04 17:17:04

man page

파일:man_page_of_man.png
man(1)자체의 man page 화면
1. 개요2. 사용 방법3. 장점4. 단점

[clearfix]

1. 개요

맨 페이지(man page)는 UNIX, Linux 계열의 기본적인 프로그램, 시스템 호출, 라이브러리 함수, 디바이스 파일, 파일 포맷, 유닉스 및 리눅스 시스템에 대한 전반적인 정보가 입력되어 있는 매뉴얼이다. 일반적으로 맨 페이지(man page)로 줄여서 부른다. 맨 페이지 중 특정한 항목을 지칭할 때는 항목 이름(섹션 번호)[1]로 표현한다.

맨 페이지 역시 매뉴얼로 존재하며 사용법은 man man을 입력하면 된다.(위의 이미지 참고하라.) 맨 페이지의 기본적인 사용법은 man [항목]으로 된다. 자세한 내용은 아래 사용 방법 참고하라.

맨 페이지는 UNIX, Linux 계열의 기본적인 프로그램 중 하나로서 영어로 작성 되어 있고 터미널을 위해 만들어졌다. 이를 웹 및 한국어로 번역하는 한국어 맨 페이지 프로젝트는 폐쇄되었다.

2. 사용 방법

UNIX, Linux 터미널에서 man [확인하려는 매뉴얼 이름]을 입력하면 자세한 정보를 출력한다.

간혹 매뉴얼 중에 이름은 서로 같지만 범주가 다른 경우[2]가 있는데 이런 항목은 섹션(section)을 통해 구분하게 되어 있으므로 man [섹션] [항목]처럼 명시적으로 기록 되어야 한다. 각 섹션에 대한 자세한 소개는 man [섹션] intro를 통해 볼 수 있다.

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

man 명령어의 사용 예제는 아래와 같다.
#!syntax sh
# 바이너리 프로그램인 printf의 매뉴얼을 보고 싶다면
prompt$ man printf

# 라이브러리인 printf 함수의 매뉴얼을 보고 싶다면 위에 열거된 섹션 분류 중 라이브러리 호출에 해당하는 3을 추가로 지정해서
prompt$ man 3 printf

내용은 less 페이저로 출력되어 나오므로 less의 키매핑을 사용할 수 있다. 검색은 vi 키매핑을 따라 /로 시작하여 정규표현식을 입력하면 된다. 다음 검색결과로 이동할 때는 n, 이전 검색결과는 N을 누르면 된다. 또한 가독성을 높이기 위해 색상을 커스터마이즈할 수 있다.[3]

3. 장점

CUI(터미널) 환경에서 유닉스 및 리눅스 환경에서 프로그램, 함수, API, 특수 파일 같이 운영체제의 전반적인 내용을 다 담고 있다. 인터넷이 지원되지 않더라도 API 함수의 사용법, 파라메터 같은 세세한 내용이 담겨 있기 때문에 유용하다.

그리고 혹시 버전별로 사용법이 다른 명령어가 있을 경우, 맨 페이지는 현재 시스템에 설치된 바로 그 버전의 문서를 제공하기 때문에 현재 설치된 버전에 맞는 옵션 조합을 찾아내고자 할 때는 맨 페이지가 유용하다.

일단 가장 쉬운 printf 등으로 시작하여, 점점 복잡한 함수들을 찾아 보는 형태로 접근하도록 하자. 당신의 프로그래밍 능력을 확실히 향상시켜 줄 것이다. 물론 프로그래밍을 이제 입문하는 사람은 방대한 분량의 맨 페이지보다는 관련 서적이나 Cheat sheet 페이지(tldr.sh[A], cheat.sh[A][6])를 참고하는 편이 낫다.

4. 단점

파일:f0395350_532e4065c0232.png
유닉스에 능숙한 개발자들이 쓴 것이기 때문에 초보자 입장에서는 불친절하거나 어려운 내용이 많다. xkcd매뉴얼에 대한 만화[7]. man page는 빼도박도 못하고 오른쪽 끝에 위치한다.(...)

그리고 모든 명령어가 맨 페이지를 제공하는 게 아니다. 서드 파티 명령어들은 아예 구글 검색으로만 매뉴얼을 열람할 수 있는 경우가 종종 있다.[8] info 명령이 이 경우에 도움이 될 수는 있지만 구글검색으로 찾아내는 정보에는 예제가 포함된 경우가 많기 때문에 명령어를 처음 사용하는 경우에는 맨 페이지는 썩 좋은 선택은 아니다. 대체적인 사용법은 아는데 몇몇 옵션이 기억나지 않을 때 빠르게 열람하는 용도가 가장 적절하다.

유닉스나 리눅스에서 자주 사용하는 vi 키매핑, 고정폭 터미널 UI, 색상 변경 설정 등에 익숙하지 않은 경우 구글 검색으로 해당 man page를 찾는게 더 편할 수도 있다. 예를들어 man printf라고 구글에 검색하면 첫번째 결과로 이런 페이지를 볼 수 있다. 단, 구글 검색에서 나온 man page가 설명하는 프로그램 버전이 자신의 컴퓨터에 설치된 프로그램 버전과 일치하지 않는 경우가 있으니 주의해야 한다.[9]

맨 페이지는 보통 일상적으로 빠르게 사용하기에는 너무 길고 가독성이 떨어진다. 이 경우 맨 페이지를 읽기 전에 tldr 혹은 bropages 를 이용하는 것도 방법이다.[10] 예컨대 "tldr ls"라고 입력하면 tl;dr라는 이름에 걸맞게 ls 명령어와 관련해 자주 사용할 법한 예시 몇 개만을 짤막하게 나열해준다.


[1] 예를 들어 open system call API는 open(2)로 표현[2] 예를 들어 system call API 중 하나인 fork()와 C언어 라이브러리 함수인 fork()는 각각 2번 섹션과 3번 섹션에서 찾아야 한다.[3] https://gist.github.com/cocoalabs/2fb7dc2199b0d4bf160364b8e557eb66[A] 예시 링크는 tar 명령어에 대한 매뉴얼을 검색한 것으로 URL 경로 끝부분의 tar 자리에 검색할 키워드를 입력하면 된다.[A] [6] "curl cheat.sh/tar"와 같은 식으로 curl, wget 등을 사용할 수 있는 CLI 환경이라면 어디에서나 간편하게 매뉴얼을 확인할 수 있다.[7] 원본[8] 보통 깃허브의 README.md 파일로 안내한다.[9] 특히 macOS를 사용하는 경우 기본적인 CLI 명령어들이 GNU 소프트웨어와 차이가 있는 경우가 많으므로 일반적인 매뉴얼이 아닌 macOS에 맞는 별도의 매뉴얼을 찾아보거나 혹은 coreutils 등을 사용하여 GNU 소프트웨어와의 호환성 문제를 줄이는 식으로 주의를 기울여야 한다.[10] 전자는 2020년 5월 현재 우분투 기본 저장소에 포함되어있기 때문에 설치도 간편하다.(sudo apt install tldr)