|| {{{#!wiki style="margin: -5px -10px" [[파일:man_page_of_man.png|width=100%]]}}} || || man(1)자체의 man page 화면 || [목차] [clearfix] == 개요 == [[UNIX]], [[Linux]] 계열의 기본적인 프로그램, 시스템콜, 라이브러리 함수, 디바이스 파일, 파일포멧 유닉스 및 리눅스 시스템에 대한 대한 전반적인 정보가 입력되어 있는 매뉴얼이다. 일반적으로 맨 페이지(man page)로 줄여서 부른다, 맨 페이지 중 특정한 항목을 지칭할 때는 항목 이름(섹션번호)[* 예를 들어 open system call API는 open(2) 로 표현 ] 로 표현 한다. 맨 페이지 역시 매뉴얼로 존재 하며 사용법은 man man을 입력하면 된다(위의 이미지 참고). 맨 페이지의 기본적인 사용법은 man [항목] 으로 된다. 자세한 내용은 아래 사용방법 참고. 맨 페이지는 [[UNIX]], [[Linux]] 계열의 기본적인 프로그램 중 하나로서 영어로 작성 되어 있고 [[CUI|터미널]]를 위해 만들어졌다. 이를 웹 및 한글로 번역하는 한글 맨 페이지 프로젝트는 폐쇄되었다. == 사용방법 == [[UNIX]], [[Linux]] [[CUI|터미널]]에서 "man [보고싶은 매뉴얼이름]"을 입력하면 자세한 정보를 출력한다. 간혹 매뉴얼에 이름은 같지만 다른 매뉴얼인 항목[* 예를 들어 system call API 중 하나인 fork()와 C언어 라이브러리 함수인 fork()는 각각 2번 섹션과 3번 섹션에서 찾아야 한다. ] 들이 있다. 이런 항목은 섹션(section)을 통해 구분하게 되어 있으므로 명시적으로 "man [섹션] [항목]"처럼 명시적으로 기록 되어야 한다. 각 섹션에 대한 자세한 소개는 "man [섹션] intro"를 통해 볼 수 있다. man page 섹션들은 아래와 같다. || {{{#blue 섹션 번호}}} || {{{#blue 섹션 설명}}} || || 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(UNIX)|less]] 페이저로 출력되어 나오므로 less의 키매핑을 사용할 수 있다. 검색은 [[vi]] 키매핑을 따라 {{{/}}}로 시작하여 [[정규표현식]]을 입력하면 된다. 다음 검색결과로 이동할 때는 {{{n}}}, 이전 검색결과는 {{{N}}}을 누르면 된다. 또한 가독성을 높이기 위해 색상을 커스터마이즈할 수 있다. [[https://gist.github.com/cocoalabs/2fb7dc2199b0d4bf160364b8e557eb66|#]] == 장점 == CUI([[CUI|터미널]])환경에서 유닉스 및 리눅스 환경에서 프로그램, 함수, API, 특수 파일 같이 운영체제의 전반적인 내용을 다 담고 있다. 인터넷이 지원되지 않더라도 API 함수의 사용법, 파라메터 같은 세세한 내용이 담겨 있기 때문에 유용하다. 그리고 혹시 버전별로 사용법이 다른 명령어가 있을 경우, 맨 페이지는 현재 시스템에 설치된 바로 그 버전의 문서를 제공하기 때문에 현재 설치된 버전에 맞는 옵션 조합을 찾아내고자 할 때는 맨 페이지가 유용하다. 일단 가장 쉬운 printf 등으로 시작하여, 점점 복잡한 함수들을 찾아 보는 형태로 접근하도록 하자. 당신의 프로그래밍 능력을 확실히 향상시켜 줄 것이다. 아 물론 프로그래밍을 이제 입문하는 사람은 맨 페이지보다는 책이 낫다. == 단점 == 유닉스에 능숙한 개발자들이 쓴 것이기 때문에 초보자 입장에서는 불친절하거나 어려운 내용이 많다. [[xkcd]]의 [[https://web.archive.org/web/20230607203842/http://yngr.egloos.com/4085698|메뉴얼에 대한 만화]]. man page는 빼도박도 못하고 오른쪽 끝에 위치한다(...) 그리고 모든 명령어가 맨 페이지를 제공하는 게 아니다. 서드 파티 명령어들은 아예 구글 검색으로만 매뉴얼을 열람할 수 있는 경우가 종종 있다.[* 보통 깃허브의 README.md 파일로 안내한다.] info 명령이 이 경우에 도움이 될 수는 있지만 구글검색으로 찾아내는 정보에는 '''예제'''가 포함된 경우가 많기 때문에 명령어를 처음 사용하는 경우에는 맨 페이지는 썩 좋은 선택은 아니다. 대체적인 사용법은 아는데 몇몇 옵션이 기억나지 않을 때 빠르게 열람하는 용도가 가장 적절하다. 유닉스나 리눅스에서 자주 사용하는 [[vi]] 키매핑, 고정폭 터미널 UI, 색상 변경 설정 등에 익숙하지 않은 경우 구글 검색으로 해당 man page를 찾는게 더 편할 수도 있다. 예를들어 {{{man printf}}}라고 구글에 검색하면 첫번째 결과로 [[http://linux.die.net/man/1/printf|이런 페이지]]를 볼 수 있다. 단, 구글 검색에서 나온 man page가 설명하는 프로그램 버전이 자신의 컴퓨터에 설치된 프로그램 버전과 일치하지 않는 경우가 있으니 주의해야한다. 맨 페이지는 보통 일상적으로 빠르게 사용하기에는 너무 길고 가독성이 떨어진다. 이 경우 맨 페이지를 읽기 전에 [[https://tldr.sh/|{{{tldr}}}]] 혹은 [[http://bropages.org/|{{{bropages}}}]] 를 이용하는 것도 방법이다.[* 전자는 2020년 5월 현재 우분투 기본 저장소에 포함되어있기 때문에 설치도 간편하다 ({{{sudo apt install tldr}}}).] 예컨대 {{{tldr ls}}} 라고 입력하면 [[tl;dr]]라는 이름에 걸맞게 {{{ls}}} 커맨드와 관련해 자주 사용할 법한 예시 몇 개만을 짤막하게 나열해준다. [[분류:컴퓨터]][[분류:UNIX]][[분류:UNIX/명령어]][[분류:Linux]]