man 명령어: 사용법과 옵션, 섹션 번호와 man -k 검색

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)
테스트 환경RHEL 계열AlmaLinux 9.8man-db 2.9root 계정Debian 12 · man-db 2.11 일반 계정
셸 명령어man, whatis, apropos위치/usr/bin/man

리눅스 서버에서 명령이나 설정 파일의 사용법을 확인할 때는 man 명령어로 매뉴얼 페이지를 열고, 이름을 모를 때는 man -k로 짧은 설명을 검색합니다. AlmaLinux 9와 Debian 12 서버에서 passwd 페이지를 찾아본 결과, Debian 12에는 1번 명령 섹션과 5번 파일 형식 섹션 페이지가 함께 있었지만 AlmaLinux 9에는 5번 섹션 페이지가 없었습니다.

아래 출력은 AlmaLinux 9.8 서버의 root 계정과 Debian 12 서버의 일반 계정에서 실행한 결과입니다. 시뮬레이터의 호스트 이름과 접속 주소는 예시 값입니다.

1️⃣ man 명령어 기본 사용법

  • ↪️ 페이지 열기, 화면 이동, 없는 페이지

man 뒤에 명령 이름을 적으면 그 명령의 매뉴얼 페이지가 열립니다. man은 페이지를 페이저 프로그램에 넘겨 한 화면씩 출력하므로, 실행한 뒤 바로 프롬프트로 돌아오지 않습니다. 페이저는 MANPAGER나 PAGER 환경 변수로 정하고, 둘 다 비어 있으면 less를 사용합니다.

출력을 파이프로 넘기면 페이저 없이 글자만 나옵니다. [man ls]의 앞 12줄을 head로 받자 첫 줄에 LS(1)이 있었고, NAME과 SYNOPSIS, DESCRIPTION 절이 차례로 이어졌습니다.

man ls | head -n 12
LS(1)                            User Commands                           LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information  about  the FILEs (the current directory by default).
       Sort entries alphabetically if none of -cftuvSUX nor --sort  is  speci-
       fied.

첫 줄 LS(1)의 괄호 안 숫자 1은 이 페이지가 들어 있는 섹션 번호입니다.

페이지 안에서는 [Space]로 다음 화면을 보고, [/낱말]과 Enter로 낱말을 찾습니다. [n]은 같은 낱말이 나오는 다음 자리로 옮기고, [q]는 man을 끝냅니다.

없는 이름을 적으면 [No manual entry for] 오류가 나오고, 종료 코드는 16이었습니다.

man no-such-cmd9
No manual entry for no-such-cmd9
echo $?
16

man 페이지의 EXIT STATUS 절은 16을 페이지나 파일, 낱말 가운데 하나 이상을 찾지 못했을 때의 값으로 설명합니다. 사용법 오류는 1이라, 스크립트에서 두 경우를 나눠 처리할 수 있습니다.

2️⃣ man 섹션 번호

  • ↪️ 1 명령, 5 설정 파일, 8 관리 명령

같은 이름의 페이지가 여러 섹션에 있으면 man은 정해진 섹션 순서대로 찾아 처음 나온 페이지 하나만 엽니다. 섹션은 1부터 9까지 있고, 서버 작업에서 자주 여는 섹션은 1번 명령과 5번 파일 형식, 8번 관리 명령입니다.

섹션담는 페이지AlmaLinux 9.8 서버에서 본 예
1실행 프로그램과 셸 명령ls, passwd, crontab, man
2시스템 호출(커널이 제공하는 함수)
3라이브러리 함수
4특수 파일(주로 /dev 아래)
5파일 형식과 규약, 예: /etc/passwdcrontab
6게임
7기타(매크로 패키지와 규약)
8시스템 관리 명령, 주로 root용useradd, mandb
9커널 루틴(비표준)

crontab은 명령과 설정 파일 형식이 같은 이름이라 두 섹션에 페이지가 있습니다. [man -f crontab]으로 확인하자 1번과 5번 섹션 줄이 함께 나왔습니다.

man -f crontab
crontab (1)          - maintains crontab files for individual users
crontab (5)          - files used to schedule the execution of programs

섹션 번호 없이 [man crontab]을 실행하면 1번 섹션의 crontab 명령 페이지가 열립니다. 작업 예약 파일의 형식을 보려면 이름 앞에 5를 적습니다.

man 5 crontab | head -n 4
CRONTAB(5)                       File Formats                       CRONTAB(5)

NAME
       crontab - files used to schedule the execution of programs

첫 줄이 CRONTAB(5)와 File Formats로 바뀌었고, NAME 줄에도 명령 설명 대신 작업 예약 파일 설명이 나왔습니다.

지정한 섹션에 그 이름의 페이지가 없으면 오류가 나옵니다. AlmaLinux 9.8 서버에서 /etc/passwd 파일 형식을 보려고 [man 5 passwd]를 실행하자 5번 섹션에 페이지가 없다는 오류가 나왔습니다.

man 5 passwd
No manual entry for passwd in section 5

Debian 12 서버에서는 [man -f passwd]에 5번 섹션 passwd 줄이 함께 나왔습니다. 어느 섹션에 페이지가 있는지는 서버에 설치된 매뉴얼에 따라 다르므로, 섹션 번호를 붙이기 전에 [man -f]로 먼저 확인합니다.

man -f passwd
passwd (1)           - change user password
passwd (1ssl)        - OpenSSL application commands
passwd (5)           - the password file

8번 섹션에는 계정을 만드는 useradd처럼 주로 root 계정이 실행하는 관리 명령이 들어 있습니다.

man -f useradd
useradd (8)          - create a new user or update default new user information

3️⃣ man 명령어 옵션과 -k, -f 검색

  • ↪️ whatis, apropos와 man -w 파일 위치

[man -f]는 이름이 같은 페이지의 한 줄 설명을 출력하며, whatis와 같은 동작입니다. AlmaLinux 9.8 서버에서 [man -f passwd]와 [whatis passwd]를 실행하자 같은 두 줄이 나왔습니다.

man -f passwd
passwd (1)           - update user's authentication tokens
passwd (1ossl)       - OpenSSL application commands

1ossl 줄은 passwd라는 이름을 함께 쓰는 OpenSSL 명령 페이지입니다.

이름을 모를 때는 [man -k]로 페이지 이름과 짧은 설명을 검색합니다. apropos와 같은 동작이고, 낱말은 정규식으로 읽습니다.

man -k '^passwd'
passwd (1)           - update user's authentication tokens
passwd (1ossl)       - OpenSSL application commands

^는 줄 맨 앞을 뜻해 passwd로 시작하는 줄만 나왔습니다. 설명에 든 낱말로도 찾을 수 있어, [man -k ‘directory contents’]는 ls와 함께 dir, vdir 페이지를 찾았습니다.

man -k 'directory contents'
dir (1)              - list directory contents
ls (1)               - list directory contents
vdir (1)             - list directory contents

[man -k]는 NAME 절의 짧은 설명만 검색하므로, 옵션 이름이나 본문 낱말로는 페이지를 찾지 못합니다. 본문까지 찾는 [man -K]는 모든 페이지를 차례로 읽어 시간이 오래 소요됩니다.

찾는 낱말이 없으면 [nothing appropriate]가 나오고, 종료 코드는 16이었습니다.

man -k no-such-word9
no-such-word9: nothing appropriate.
echo $?
16

[man -w]는 페이지를 열지 않고 원본 파일의 위치만 출력합니다.

man -w ls
/usr/share/man/man1/ls.1.gz
man -w 5 crontab
/usr/share/man/man5/crontab.5.gz

두 파일은 /usr/share/man 아래 man1과 man5 폴더에 있었고, 폴더 이름의 숫자가 섹션 번호와 같았습니다. [man -w 1ossl passwd]로 찾은 1ossl 페이지 파일도 1번 섹션과 같은 man1 폴더에 있었습니다.

옵션은 아래 두 탭에 모았습니다.

옵션복사설명
-f, --whatis이름이 같은 페이지의 한 줄 설명을 출력. whatis와 같은 동작
-k, --apropos페이지 이름과 짧은 설명을 검색. apropos와 같은 동작
-w, --where, --path, --location페이지를 열지 않고 원본 파일의 위치만 출력
-a, --all이름이 맞는 페이지를 차례로 모두 출력
옵션복사설명
-K, --global-apropos모든 페이지의 본문에서 낱말을 검색. 시간이 오래 소요
-S, -s, --sections목록검색할 섹션과 순서를 쉼표나 콜론으로 나눈 목록으로 지정
-P, --pager페이저페이지를 출력할 페이저를 지정. 기본값은 less
-M, --manpath경로페이지를 찾을 매뉴얼 경로를 지정
-L, --localelocale이번 실행에 사용할 locale을 지정
-l, --local-file시스템 매뉴얼을 검색하지 않고 지정한 파일을 페이지로 출력
-u, --update설치된 페이지의 색인 캐시를 갱신
-V, --version버전 정보를 출력

🔲 man 명령어 시뮬레이터

아래 시뮬레이터에서 [man ls]로 페이지를 열고 [Space], [/list], [n], [q] 칩으로 화면을 넘겨 볼 수 있습니다. 같은 가상 서버에서 [man 5 crontab]처럼 섹션 번호를 붙이거나 [man -f], [man -k], [man -w]를 쳐 볼 수 있습니다.

man 명령어 시뮬레이터man-db 2.9 · root 계정
[root@server work]#
브라우저 안에서만 동작합니다. 페이지 화면에서는 Space, /낱말, n, q 칩을 누르고, 키보드 ↑↓로 앞에서 쓴 명령을 다시 불러옵니다.

4️⃣ man 페이지 구성

  • ↪️ NAME, SYNOPSIS, DESCRIPTION, OPTIONS 읽기

man 페이지는 대문자 제목이 붙은 절로 나뉩니다. 절 제목만 grep으로 뽑아 비교하자, ls 페이지는 옵션 설명이 DESCRIPTION 안에 있었고 crontab 페이지는 OPTIONS 절이 따로 있었습니다.

man ls | grep -E '^[A-Z]+( [A-Z]+)*$'
NAME
SYNOPSIS
DESCRIPTION
AUTHOR
REPORTING BUGS
COPYRIGHT
SEE ALSO
man crontab | grep -E '^[A-Z]+( [A-Z]+)*$'
NAME
SYNOPSIS
DESCRIPTION
OPTIONS
CAVEATS
SEE ALSO
FILES
STANDARDS
DIAGNOSTICS
AUTHOR

절 이름은 페이지마다 조금씩 다르고, 자주 나오는 절은 아래와 같습니다.

절담긴 내용
NAME이름과 한 줄 설명(man -f와 man -k가 출력하는 줄)
SYNOPSIS명령을 적는 꼴
DESCRIPTION동작 설명(ls 페이지는 옵션 설명도 이 절에)
OPTIONS옵션마다 한 단락
EXIT STATUS종료 코드의 뜻
FILES명령이 읽거나 쓰는 파일
SEE ALSO함께 볼 페이지

SYNOPSIS의 기호는 man 페이지가 정한 규칙을 따릅니다. 대괄호 안은 생략할 수 있습니다. 세로선(|)으로 나뉜 옵션은 함께 쓸 수 없고, 점 셋(…)이 붙은 인자는 여러 번 적을 수 있습니다.

ls의 SYNOPSIS는 ls [OPTION]… [FILE]…이라, 명령어 옵션과 파일 이름 같은 명령행 인자를 모두 생략하거나 여러 개 적을 수 있습니다.

[--help]는 프로그램이 직접 출력하는 사용법 요약이라 페이저 없이 터미널에 바로 나옵니다. [ls --help]의 첫 줄 Usage는 SYNOPSIS와 같은 꼴이었고, 전체 길이는 121줄로 [man ls]의 245줄보다 짧았습니다.

ls --help | head -n 3
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

man 페이지에는 [--help]에 없는 AUTHOR, SEE ALSO 같은 절이 더 있습니다. 옵션 하나를 빨리 볼 때는 [--help]를, 설정 파일 형식이나 종료 코드처럼 절이 나뉜 설명이 필요할 때는 man을 엽니다.

🔢 FAQ & 추천 콘텐츠

cd는 bash에 들어 있는 내장 명령이라, [man cd]는 내장 명령 전체를 모은 페이지로 이어집니다. AlmaLinux 9.8 서버에서 [type cd]는 [cd is a shell builtin]을 출력했고, [man -w cd]는 builtins.1.gz 파일 위치를 출력했습니다. 내장 명령 하나의 사용법은 [help cd]로 바로 확인할 수 있습니다.

[man -a 이름]을 실행하면 이름이 맞는 페이지를 차례로 엽니다. 파일 위치만 볼 때는 [-w]를 함께 적습니다. AlmaLinux 9.8 서버에서 [man -w -a crontab]을 실행하자 man1과 man5 폴더의 crontab 파일 두 줄이 나왔습니다.

[man -k]와 [man -f]가 검색하는 색인은 mandb가 만들고 갱신합니다. 그래서 색인에 아직 들어가지 않은 페이지는 검색 결과에 나오지 않으며, 색인은 root 계정으로 [mandb]를 실행해 다시 만듭니다.

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

인간임을 증명하세요: 9   +   7   =