Linux / 명령어 / apropos - 설명 키워드로 명령어 검색

apropos는 명령 이름을 정확히 모를 때 매뉴얼 페이지의 이름과 한 줄 설명에서 키워드를 검색하는 명령어입니다. 예를 들어 “파일 압축”, “사용자 생성”, “네트워크 주소”처럼 하고 싶은 작업은 알지만 관련 명령을 모를 때 후보를 찾는 데 유용합니다.

man -k도 같은 검색 기능을 제공합니다. 기본 검색어는 정규 표현식으로 처리될 수 있으므로 여러 단어의 관계, 정확히 일치하는 검색, 와일드카드와 셸의 따옴표 규칙을 이해하면 더 정확한 결과를 얻을 수 있습니다.

apropos 명령어란?

각 매뉴얼 페이지에는 이름과 기능을 요약한 짧은 설명이 있습니다. apropos는 man-db의 색인 데이터베이스에서 페이지 이름과 설명을 검색하여 일치하는 항목을 출력합니다.

매뉴얼 본문 전체를 검색하는 명령은 아닙니다. 따라서 결과가 빠르고 주제별 후보를 찾기 좋지만, 설명에 검색어가 들어 있지 않은 페이지는 본문에 관련 내용이 있어도 나오지 않을 수 있습니다.

기본 문법과 결과 읽기

apropos [옵션] 키워드...

파일 복사와 관련된 매뉴얼을 찾는 예제입니다.

apropos copy

일반적인 결과는 다음 구조를 가집니다.

cp (1)               - copy files and directories
scp (1)              - OpenSSH secure file copy

첫 번째 필드는 매뉴얼 페이지 이름, 괄호 안 숫자는 섹션, 하이픈 뒤는 한 줄 설명입니다. 원하는 항목을 찾으면 섹션까지 지정해 정확한 페이지를 엽니다.

man 1 cp
man 1 scp

여러 키워드 검색 방식

기본값은 하나라도 일치하면 출력

키워드를 여러 개 지정하면 기본적으로 어느 하나와 일치하는 항목이 출력될 수 있습니다. 검색 범위가 넓어져 결과가 지나치게 많아질 수 있습니다.

apropos network address

모든 키워드가 필요한 경우 -a 사용

-a 또는 --and는 지정한 모든 키워드와 일치하는 항목만 보여 줍니다. 관련 없는 결과를 줄일 때 유용합니다.

apropos -a network address
apropos --and user password

여러 단어를 하나의 검색 표현으로 묶으려면 따옴표를 사용할 수 있지만, 기본 검색이 정규 표현식이라는 점도 고려해야 합니다.

정규 표현식, 정확한 검색과 와일드카드

기본 정규 표현식 검색

man-db의 apropos는 기본적으로 키워드를 정규 표현식으로 처리합니다. 점, 대괄호, 별표 같은 문자는 특별한 의미를 가질 수 있으므로 문자 그대로 찾으려면 이스케이프하거나 다른 검색 모드를 사용해야 합니다.

apropos '^ssh'
apropos 'file.*system'

첫 번째 예제는 이름이나 설명에서 ssh로 시작하는 부분을, 두 번째 예제는 file 뒤에 임의의 문자가 있고 나중에 system이 나오는 항목을 찾습니다.

정확히 일치시키는 -e

-e 또는 --exact는 키워드를 페이지 이름이나 설명과 정확히 일치시킵니다. 정확한 페이지 이름을 이미 알고 있다면 whatis가 더 단순할 수 있습니다.

apropos -e printf

셸 방식 와일드카드 -w

-w 또는 --wildcard는 키워드를 셸 스타일 와일드카드 패턴으로 처리합니다. 현재 셸이 별표를 파일 이름으로 먼저 확장하지 않도록 패턴을 따옴표로 묶습니다.

apropos -w 'ssh*'
apropos --wildcard '*password*'

검색 범위를 섹션으로 제한하기

-s 또는 --sections로 매뉴얼 섹션을 제한하면 같은 이름의 다른 문서나 관련 없는 결과를 줄일 수 있습니다.

apropos -s 1 archive
apropos -s 2,3 socket
apropos --sections=5 password
섹션 주요 내용
1 일반 사용자가 실행하는 명령과 프로그램
2 리눅스 커널이 제공하는 시스템 호출
3 프로그램 라이브러리 함수
5 설정 파일과 파일 형식
8 주로 관리자가 사용하는 시스템 관리 명령

섹션 목록은 쉼표나 콜론으로 구분할 수 있습니다. 구현과 설치된 문서에 따라 3p, 3perl 같은 하위 섹션이 있을 수 있습니다.

자주 사용하는 apropos 옵션

옵션 설명
-a, --and 모든 키워드와 일치하는 항목만 출력합니다.
-e, --exact 키워드를 페이지 이름이나 설명과 정확히 일치시킵니다.
-r, --regex 키워드를 정규 표현식으로 처리합니다. man-db에서는 기본 검색 방식입니다.
-w, --wildcard 셸 스타일 와일드카드 패턴으로 검색합니다.
-s 목록, --sections=목록 지정한 매뉴얼 섹션만 검색합니다.
-l, --long 터미널 너비에 맞춘 설명 잘림을 비활성화합니다.
-M 경로, --manpath=경로 검색할 매뉴얼 계층 경로를 직접 지정합니다.
-L 로케일, --locale=로케일 검색에 사용할 로케일을 일시적으로 지정합니다.

apropos와 man -k는 어떤 관계인가요?

man-db 환경에서 man -k는 apropos 검색 옵션을 사용하는 인터페이스입니다. 다음 두 명령은 같은 목적으로 사용할 수 있습니다.

apropos filesystem
man -k filesystem

사용 습관에 따라 선택하면 됩니다. 매뉴얼을 찾는 과정임을 강조하려면 man -k, 독립적인 검색 명령으로 기억하려면 apropos가 직관적입니다.

검색 결과가 없을 때 확인할 점

더 일반적인 키워드로 바꾸기

설명에 실제로 포함될 가능성이 높은 영문 단어를 사용하세요. 번역된 매뉴얼이 설치되지 않았다면 한국어 검색어로 결과가 나오지 않을 수 있습니다.

apropos compress
apropos archive
apropos -a user account

색인 데이터베이스 갱신하기

새 매뉴얼을 설치한 직후이거나 색인이 손상되었다면 apropos 결과가 비어 있을 수 있습니다. man-db 환경에서는 관리 권한으로 색인을 갱신할 수 있습니다.

sudo mandb

mandb는 매뉴얼 페이지 색인 캐시를 만들거나 갱신합니다. 시스템이 패키지 설치 과정이나 주기 작업으로 자동 갱신하는 경우도 있으므로 불필요하게 반복 실행할 필요는 없습니다.

매뉴얼 경로와 로케일 확인하기

manpath
printf '%s\n' "$MANPATH"
locale

MANPATH를 직접 설정했거나 특수한 경로에 문서를 설치했다면 기본 매뉴얼 계층이 검색에서 빠질 수 있습니다. -M 옵션은 문제를 진단할 때 일시적으로 다른 경로를 지정하는 데 사용할 수 있습니다.

셸 스크립트에서 사용할 때

man-db의 apropos는 정상 실행 시 0, 사용법이나 설정 오류 시 1, 운영 오류 시 2, 일치하는 결과가 없을 때 16을 반환합니다. 단순히 출력이 비어 있는지만 검사하기보다 종료 상태를 구분하면 오류와 검색 결과 없음의 차이를 알 수 있습니다.

if apropos -e "$1" >/dev/null; then
  printf '%s\n' '일치하는 매뉴얼 항목이 있습니다.'
else
  status=$?
  printf '검색 실패 또는 결과 없음: status=%d\n' "$status" >&2
fi

종료 상태 값은 다른 구현에서 달라질 수 있습니다. 자동화에 사용하기 전에 현재 시스템의 man apropos를 확인하세요.

apropos와 비슷한 명령 비교

명령 용도
apropos 키워드 페이지 이름과 한 줄 설명에서 주제나 키워드를 검색합니다.
whatis 이름 정확한 매뉴얼 페이지 이름의 한 줄 설명을 확인합니다.
man 이름 선택한 매뉴얼 페이지의 전체 내용을 읽습니다.
man -K 문자열 설치된 매뉴얼 본문 전체에서 문자열을 검색합니다. 시간이 오래 걸릴 수 있습니다.

자주 묻는 질문

한국어로 검색해도 되나요?

한국어 매뉴얼 설명이 설치되어 있고 현재 로케일에서 선택된다면 가능합니다. 많은 시스템에는 영문 설명만 있으므로 결과가 없다면 영문 핵심어로 다시 검색하세요.

검색어에 공백이 있으면 어떻게 하나요?

하나의 표현으로 전달하려면 따옴표로 묶습니다. 여러 개의 독립된 키워드로 전달하고 -a를 사용하면 모든 단어가 각각 일치하는 항목만 찾을 수 있습니다.

which 대신 apropos를 사용하나요?

용도가 다릅니다. apropos는 관련 매뉴얼을 찾고, command -v나 type은 입력한 명령 이름이 실제로 어떻게 해석되는지 확인합니다.

정리

apropos는 이름을 모르는 명령이나 문서를 기능 키워드로 찾을 때 유용합니다. 기본 검색으로 후보를 찾고, -a로 여러 조건을 모두 만족시키며, -s로 섹션을 좁히면 결과를 효율적으로 정리할 수 있습니다.

원하는 페이지를 찾은 뒤에는 섹션 번호와 함께 man으로 여세요. 다른 기본 명령은 리눅스 명령어 목록과 개요에서 확인할 수 있습니다.

공식 문서 참고

같은 카테고리의 다른 글
Linux / 명령어 / nc - TCP·UDP 연결과 포트 점검

Linux / 명령어 / nc - TCP·UDP 연결과 포트 점검

Linux nc 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / Memo

Linux / Memo

리눅스와 관련된 여러 정보를 정리합니다.

Linux / 리눅스 Bash 명령어 연결 연산자: ;, &&, ||, &, | 사용법

Linux / 리눅스 Bash 명령어 연결 연산자: ;, &&, ||, &, | 사용법

리눅스 Bash의 ;, &&, ||, &, |, |&, ! 차이를 종료 상태와 실제 예제로 설명합니다. 조건부 실행, 백그라운드 작업, 파이프라인과 pipefail 사용법까지 정리합니다.

Linux / 명령어 / chgrp - 파일 소유 그룹 변경

Linux / 명령어 / chgrp - 파일 소유 그룹 변경

Linux chgrp 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / du - 파일과 디렉터리 용량 확인

Linux / 명령어 / du - 파일과 디렉터리 용량 확인

Linux du 명령어로 디렉터리와 파일의 디스크 사용량을 확인하고 큰 항목을 찾는 방법을 설명합니다. apparent size, 파일시스템 경계와 df 결과가 다른 이유도 정리합니다.

Linux / 명령어 / split - 큰 파일을 크기·행 수별로 분할

Linux / 명령어 / split - 큰 파일을 크기·행 수별로 분할

Linux split 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / screen - 터미널 세션 유지와 관리

Linux / 명령어 / screen - 터미널 세션 유지와 관리

Linux screen 명령어로 원격 터미널 세션을 분리하고 다시 연결하는 방법을 설명합니다. 세션·창 관리, 로그 기록, 문제 해결과 nohup·tmux·systemd의 차이를 정리합니다.

Linux 강좌 / 파일과 디렉터리 관리 - 생성·복사·이동·삭제

Linux 강좌 / 파일과 디렉터리 관리 - 생성·복사·이동·삭제

실습 폴더에서 파일과 디렉터리를 만들고 복사·이동·삭제해 봅니다. 덮어쓰기와 삭제 전에 경로와 결과를 확인하는 습관도 익힙니다.

Linux / 명령어 / mktemp - 안전한 임시 파일과 디렉터리 생성

Linux / 명령어 / mktemp - 안전한 임시 파일과 디렉터리 생성

Linux mktemp 명령어로 예측하기 어려운 이름의 임시 파일과 디렉터리를 안전하게 만드는 방법을 설명합니다. 템플릿, TMPDIR, trap을 이용한 정리와 -u 옵션의 위험도 알아봅니다.

Linux / machine-id 확인 방법과 시스템 복제 시 주의사항

Linux / machine-id 확인 방법과 시스템 복제 시 주의사항

machine-id의 역할과 확인 방법, 복제용 이미지에서 파일을 삭제·비우거나 uninitialized로 설정할 때의 차이를 설명합니다. 운영 중인 서버의 ID 중복을 안전하게 처리하기 위한 점검 사항도 다룹니다.