리눅스에 대한 모든 정보는 매뉴얼 페이지 안에 담겨 있습니다. 명령어가 무엇인지 정확히 모르는 상황에서도, 원하는 작업을 수행하기 위한 명령어를 검색할 수 있습니다. 하지만 이러한 매뉴얼 페이지를 어떻게 찾을 수 있을까요? 몇 가지 유용한 팁을 알려드리겠습니다.
리눅스 내장 매뉴얼 활용법
유닉스 시대부터 전해 내려오는 농담 중 하나는, 리눅스에서 알아야 할 유일한 명령어는 시스템 자체라는 것입니다. 이는 매뉴얼 페이지에 대한 접근을 의미합니다. 어느 정도 진실이 담겨 있지만, 처음 접하는 사람들에게는 혼란스러울 수 있습니다. 특히 원하는 정보를 찾는 과정이 복잡하게 느껴질 수 있습니다.
특정 작업을 수행하고 싶지만, 어떤 명령어를 사용해야 할지 모르는 경험이 있으실 겁니다. 마치 단어를 모를 때 사전을 찾는 것과 같습니다. 그렇다면 어떻게 필요한 정보를 찾아낼 수 있을까요? 바로 ‘man’ 명령어를 통해 이러한 어려움을 해결할 수 있습니다.
매뉴얼 페이지를 접하다 보면 숫자와 관련된 혼란을 느낄 수도 있습니다. ‘man(2)’ 또는 ‘man(5)’와 같은 표기를 보거나, ‘mount(2)’ 및 ‘mount(8)’처럼 명령어 뒤에 숫자가 붙는 경우를 볼 수 있습니다. ‘mount’ 명령어는 하나밖에 없을 텐데 왜 다른 숫자가 붙을까요? 이러한 숫자들은 매우 중요하며, 그 의미는 생각보다 간단합니다. 자세한 내용은 앞으로 살펴보겠습니다.
간단히 말해, ‘man’ 명령어 내에서 검색 방법을 익히면 매우 편리하게 정보를 얻을 수 있습니다. 또한, 매뉴얼 페이지를 검색하고 탐색하는 다양한 방법이 있습니다. 지금부터 ‘man’ 명령어에 대해 자세히 알아보겠습니다!
매뉴얼 페이지 열기
‘man’ 명령어를 사용하려면 터미널에 ‘man’을 입력한 다음, 공백을 두고 리눅스 명령어를 입력하면 됩니다. ‘man’ 명령어는 해당 명령어를 설명하는 “man page”, 즉 리눅스 매뉴얼을 엽니다. 물론, 해당 매뉴얼 페이지가 존재할 경우에 한해서입니다.
다음과 같이 입력하여 ‘man’ 명령어 자체가 어떻게 설명되어 있는지 확인해 보겠습니다.
man man

‘man’ 명령어에 대한 매뉴얼 페이지가 열립니다.

보시는 것처럼 ‘man(1)’ 페이지입니다.
매뉴얼 페이지를 탐색하는 몇 가지 팁을 알려드리겠습니다.
매뉴얼 페이지에서 한 줄씩 이동하려면: 마우스 휠을 사용하거나, 위/아래 화살표 키 또는 Enter 키를 누릅니다.
매뉴얼 페이지를 한 화면씩 이동하려면: 스페이스바, PgDn 또는 PgUp 키를 누릅니다.
매뉴얼 페이지의 맨 위나 맨 아래로 바로 이동하려면: Home 또는 End 키를 누릅니다.
‘H’ 키를 누르면 도움말 섹션으로 이동하여, 사용 가능한 다른 키 입력 목록을 확인할 수 있습니다. 위에 제시된 방법들이 대부분의 사용자들에게 더 편리하게 느껴질 것입니다.
‘man’ 명령어를 종료하려면 ‘Q’ 키를 누르십시오.
매뉴얼 페이지 구조
페이지 상단에는 “이름(NAME)”과 “개요(SYNOPSIS)”라는 제목이 있습니다. 매뉴얼 페이지의 레이아웃에는 일정한 규칙이 있습니다. 명령어, 프로그램, 그리고 프로그래밍 기능(라이브러리 루틴)에 대한 매뉴얼 페이지가 존재합니다. 모든 매뉴얼 페이지에서 이러한 제목을 다 볼 수 있는 것은 아니며, 일부는 특정 유형의 명령어에만 적용됩니다.
매뉴얼 페이지에 나타날 수 있는 몇 가지 제목은 다음과 같습니다.
이름(NAME): 매뉴얼 페이지에서 설명하는 명령어의 이름입니다.
개요(SYNOPSIS): 명령어와 해당 구문에 대한 요약입니다.
구성(CONFIGURATION): 장치에 대한 설정 정보입니다.
설명(DESCRIPTION): 프로그램이 하는 일에 대한 설명입니다.
옵션(OPTIONS): 명령어가 허용하는 명령줄 옵션에 대한 설명입니다.
종료 상태(EXIT STATUS): 명령어의 가능한 종료 상태 값과 그 원인입니다.
반환 값(RETURN VALUES): 매뉴얼 페이지가 라이브러리 루틴에 대한 것일 경우, 라이브러리 루틴이 해당 루틴을 호출한 함수로 반환할 수 있는 값을 설명합니다.
오류(ERRORS): 오류가 발생했을 때 ‘errno’에 저장될 수 있는 값 목록입니다.
환경(ENVIRONMENT): 명령어 또는 프로그램에 영향을 미치는 환경 변수 목록입니다.
파일(FILES): 설정 파일과 같이 명령어 또는 프로그램이 사용하는 파일 목록입니다.
속성(ATTRIBUTES): 명령어의 다양한 속성에 대한 요약입니다.
버전(VERSION): 시스템 호출 또는 라이브러리 기능이 처음 등장하거나 이전 버전에서 크게 변경된 리눅스 커널 또는 라이브러리 버전에 대한 세부 정보입니다.
준수(CONFORMING TO): POSIX와 같이 명령어가 준수할 수 있는 표준에 대한 설명입니다.
메모(NOTES): 기타 참고 사항입니다.
버그(BUGS): 알려진 문제점입니다.
예(EXAMPLES): 명령어 사용 방법을 보여주는 예시입니다.
저자(AUTHORS): 명령어를 만들거나 유지하는 사람들입니다.
참고(SEE ALSO): 명령어 또는 주제와 관련된 참고 자료입니다.
매뉴얼 섹션
매뉴얼 페이지를 조금 더 스크롤하면 매뉴얼 섹션 목록을 볼 수 있습니다.

섹션은 다음과 같이 나뉩니다.
| 1 | 일반 명령어: 명령줄에서 사용하는 명령어입니다. |
| 2 | 시스템 호출: 프로그램이 호출할 수 있도록 커널에서 제공하는 기능입니다. |
| 3 | 라이브러리 함수: 프로그램이 코드 라이브러리(주로 C 표준 라이브러리)에서 호출할 수 있는 함수입니다. |
| 4 | 특수 파일: ‘/dev’ 디렉토리에 있는 장치 및 해당 드라이버와 같은 파일입니다. |
| 5 | 파일 형식 및 규칙: ‘passwd’, ‘cron’ 테이블, ‘tar’ 아카이브 파일과 같은 파일 형식입니다. |
| 6 | 게임: 명령을 실행할 때 데이터베이스에서 인용문을 표시하는 ‘fortune’과 같은 명령어에 대한 설명입니다. |
| 7 | 기타: ‘inode’, 부팅 파라미터, 그리고 ‘man’ 명령어 자체와 같은 항목에 대한 설명입니다. |
| 8 | 시스템 관리: 일반적으로 ‘root’ 사용자를 위해 예약된 명령어 및 데몬입니다. |
| 9 | 커널 루틴: 커널의 내부 동작과 관련된 정보입니다. 여기에는 장치 드라이버를 작성하는 프로그래머에게 유용한 기능 인터페이스 및 변수가 포함되어 있습니다. 대부분의 시스템에서는 이 섹션이 설치되어 있지 않습니다. |
명령어 뒤에 숫자가 표시되는 것은 해당 명령어에 대한 설명이 매뉴얼의 해당 섹션에 있다는 의미입니다. 예를 들어, ‘man(1)’은 ‘man’ 명령어에 대한 설명이 매뉴얼의 1번 섹션에 있다는 것을 나타냅니다.
위 이미지에서 ‘man(7)’에 대한 참조를 볼 수 있습니다. 이는 ‘man’에 대한 추가 정보가 다른 섹션에 있다는 의미입니다. 처음에 매뉴얼 페이지를 열었을 때 ‘man(1)’이 표시되었었습니다. 섹션 번호 없이 ‘man’만 입력하면 ‘man’ 명령어는 모든 섹션을 순서대로 검색하여 입력한 명령어에 대한 항목을 찾습니다. 당연히 ‘man(7)’보다 ‘man(1)’을 먼저 찾은 것입니다.
‘man’ 명령어가 특정 섹션에서 항목을 찾도록 하려면, 명령줄에 섹션 번호를 포함해야 합니다.
예를 들어, 7번 섹션에서 ‘man’ 항목을 열려면 다음 명령어를 입력합니다.
man 7 man

매뉴얼이 7번 섹션의 ‘man’ 항목으로 열립니다.

이 매뉴얼 페이지는 매뉴얼 페이지 작성 지침을 제공합니다. 또한, 특정 작업을 수행하는 데 사용할 수 있는 파일 형식과 매크로에 대해 설명합니다. 앞에서 본 1번 섹션의 ‘man(1)’ 페이지는 ‘man’ 명령어 자체를 사용하는 방법을 설명했습니다.
섹션별 항목 검색
일반적으로 명령어의 사용법을 알고 싶을 때는 섹션 번호를 명시할 필요가 없습니다. ‘man’ 명령어는 매뉴얼의 1번 섹션에서 해당 명령어의 사용법을 설명하는 항목을 자동으로 찾을 것입니다. 그러나 때로는 다른 정보가 필요하여 특정 섹션에서 명령어 항목을 열어야 할 수 있습니다.
매뉴얼의 어느 섹션에 명령어 항목이 포함되어 있는지 쉽게 확인할 수 있습니다. 각 매뉴얼 페이지에는 제목과 간략한 설명이 있습니다. ‘-f(whatis)’ 옵션은 페이지 제목을 검색하고, 일치하는 목록을 반환합니다.
예를 들어, 다음 명령어를 입력해 보겠습니다.
man -f man

‘man’에 대한 두 개의 매뉴얼 페이지가 섹션 번호 및 간략한 설명과 함께 나열됩니다. 하지만 주의해야 할 점은 일부 항목은 이름은 같지만 다른 명령어와 기능을 설명할 수 있다는 것입니다.
예를 들어, 다음 명령어를 입력해 보겠습니다.
man -f printf

‘printf’에 대해 두 개의 항목이 검색되었습니다. 첫 번째 항목은 1번 섹션에, 다른 항목은 3번 섹션에 있습니다. 하지만 이들은 서로 다른 명령어입니다. 1번 섹션의 매뉴얼 페이지는 터미널 창에서 출력 형식을 지정하는 명령줄 ‘printf’ 명령어를 설명합니다. 3번 섹션의 매뉴얼 페이지는 C 프로그래밍 언어의 라이브러리 함수 모음에 속하는 ‘printf’에 대해 설명합니다.
페이지 제목뿐만 아니라 간략한 설명으로도 검색할 수 있습니다. 이 경우, ‘-k(apropos)’ 옵션을 사용합니다. 이 옵션은 더 긴 단어 안에 있는 검색어와도 일치합니다.
다음 명령어를 입력해 보겠습니다.
man -k printf

이러한 명령어들은 핵심 기능이 거의 동일하므로, 동일한 매뉴얼 페이지에서 설명되는 경우가 많습니다. ‘vprintf’에 대한 매뉴얼 페이지는 위 이미지에 나열된 10개의 명령어의 기능을 설명합니다.
사용하려는 명령어의 이름을 모르는 경우에도 이 기능을 활용하여 원하는 작업을 수행하는 데 관련된 정보를 검색할 수 있습니다.
사용자 계정의 비밀번호를 변경하려는 상황을 가정해 보겠습니다. 매뉴얼 페이지의 제목이나 설명에서 “user”라는 단어를 언급하는 모든 명령어를 검색할 수 있습니다. 그 다음, ‘password’라는 단어를 포함하는 항목을 찾기 위해 ‘grep’ 명령어를 사용할 수 있습니다.
이를 위해 다음 명령어를 입력합니다.
man -k 'user ' | grep password

‘user’라는 단어를 작은 따옴표로 묶고 끝에 공백을 포함했으므로, ‘users’가 아닌 정확히 ‘user’라는 단어에 대한 일치 항목만 검색됩니다. 검색 결과에서 ‘passwd’가 유력한 후보임을 알 수 있습니다.
1번 섹션 매뉴얼 페이지이므로 명령어에 섹션 번호를 포함할 필요가 없습니다. 따라서 다음 명령어를 입력합니다.
man passwd
텍스트 파일의 단어 수를 세는 명령어가 필요하다고 가정해 보겠습니다. 다음 명령어를 입력하여 해당 항목이 있는지 확인합니다.
man -k word | grep count

단어 개수에 대해 알아야 할 모든 것을 찾으려면 다음 명령어를 입력합니다.
man wc
참고로 ‘wc’ 명령어를 사용하면 ‘-k(apropos)’ 옵션을 단일 마침표(.)와 함께 검색 대상으로 사용할 수도 있습니다. 단일 마침표는 모든 항목과 일치합니다. ‘wc’ 명령어를 통해 결과를 파이프하고 ‘-l(줄)’ 옵션을 사용하면 시스템에 설치된 매뉴얼 페이지의 총 개수를 확인할 수 있습니다.
이 모든 작업을 수행하려면 다음 명령어를 입력합니다.
man -k . | wc -l

이 Ubuntu 컴퓨터에는 6,706개의 매뉴얼 페이지가 있지만, 사용자 시스템의 매뉴얼 페이지 개수와 다를 수 있습니다. 이는 컴퓨터에 설치된 소프트웨어 패키지 및 유틸리티와 사전 설치된 매뉴얼 페이지에 따라 달라집니다.
매뉴얼 페이지 내 검색
매뉴얼 페이지 내부에서 현재 위치에서 앞 또는 뒤로 검색할 수도 있습니다.
예를 들어, 다음 명령어를 입력하여 ‘history’ 명령어에 대한 매뉴얼 페이지를 열어 보겠습니다.
man history

앞으로 검색하려면 슬래시(/)를 누른 다음 ‘event’라는 단어를 입력합니다. 터미널 창 하단에 검색어가 표시되고, Enter 키를 눌러 검색을 시작합니다.

검색 결과 중 첫 번째 일치 항목이 강조 표시됩니다.

결과에서 페이지 아래쪽으로 이동하려면 ‘n’ 키를 누르고, 이전 검색 결과로 이동하려면 ‘N’ 키를 누릅니다. 이 경우 페이지의 맨 위로 다시 이동합니다.
강조 표시를 켜고 끄려면 ‘Esc+U’를 누릅니다.
매뉴얼 페이지의 맨 아래에서 위쪽으로 검색하려면 물음표(?)를 누른 다음 검색어를 입력합니다. 여기서는 ‘entry’를 검색했습니다.

다시 한번, 일치하는 결과가 모두 강조 표시됩니다.

다음 일치하는 결과를 검색하려면 ‘n’ 키를 눌러 매뉴얼 페이지의 시작 부분으로 이동하고, 이전 일치하는 결과로 이동하고 매뉴얼 페이지의 끝으로 이동하려면 ‘N’ 키를 누릅니다.
매뉴얼 페이지를 검색하는 또 다른 방법이 있습니다. 이 방법은 검색어와 일치하지 않는 모든 줄을 숨기므로, 줄 번호와 함께 사용하는 것이 가장 효과적입니다.
‘-N’을 입력하고 Enter 키를 누르면 매뉴얼 페이지에 줄 번호가 표시됩니다.

앰퍼샌드(&)를 누르고 검색어(숫자)를 입력한 다음 Enter 키를 누릅니다.

검색어가 포함된 줄만 표시됩니다.
<img src=”https://koreantech.org/wp-content/uploads/2022/01/1641029906_871_Linux%EC%9D%98-man-%EB%AA%85%EB%A0%B9%EC%96%B4%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-%EC%88%A8%EA%B2%A8%EC%A7%84-%EB%B9%84%EB%B0%80%EA%B3%BC-%EA%B8%B0%EB%B3%B8-%EC%82%AC%ED%95%AD.png