locate·which·whereis
쉽게 말하면
파일이나 명령이 어디 있는지 빨리 찾는 명령들이에요. locate는 미리 만들어 둔 목록에서 찾아서 빠르지만 방금 만든 파일은 못 찾을 수 있어요. which는 '이 명령을 치면 실제로 어느 파일이 실행되나'를 알려 줘요.
시험용 정의
파일·명령의 위치를 찾는 명령들이다. locate는 DB에서 이름으로 빠르게, which는 PATH에서 실행 파일 위치를, whereis는 실행 파일·소스·man 페이지 위치를, type은 명령의 종류(alias·내장·파일)를 알려 준다.
비유로 이해하기
locate는 도서관 전산 목록 검색(빠르지만 오늘 들어온 책은 아직 없음), which는 "이 명령을 치면 실제로 어느 파일이 실행되지?", whereis는 "그 책의 본문·해설서·원고가 각각 어디 있지?"다.
자세히
먼저 알아 둘 말
| 말 | 뜻 |
|---|---|
| PATH | 명령 이름만 쳤을 때 셸이 실행 파일을 찾아볼 디렉터리 목록을 담은 환경 변수. /usr/local/bin:/usr/bin:/bin처럼 콜론으로 구분하고 앞에서부터 찾아 처음 나온 것을 실행한다 |
| 셸 내장 명령 | 별도 실행 파일 없이 셸 안에 들어 있는 명령. cd, echo, export, alias 등. 디스크에 파일이 없으니 which로는 안 나오고 type으로 확인한다 |
| alias | 긴 명령에 붙인 별명. 예: alias ll='ls -l' |
| locate 데이터베이스 | 파일 경로 목록을 미리 모아 둔 파일(/var/lib/mlocate/mlocate.db 등). 보통 하루 한 번 cron이 updatedb로 새로 만든다. 그래서 방금 만든 파일은 updatedb 전까지 locate에 안 나온다 |
명령 비교
| 명령 | 찾는 것 | 예 |
|---|---|---|
| locate 패턴 | DB에서 경로에 패턴이 들어간 모든 파일 (-i 대소문자 무시) | locate sshd_config |
| updatedb | locate DB 갱신 (root) | |
| which 명령 | PATH를 앞에서부터 뒤져 실행될 파일 경로 (alias도 표시) | which ls → /usr/bin/ls |
| whereis 명령 | 바이너리, 소스, 매뉴얼 파일 위치 | whereis ls → /usr/bin/ls /usr/share/man/man1/ls.1.gz |
| type 명령 | alias / 셸 내장 / 파일 / 함수 구분 | type cd → cd is a shell builtin |
| find | 실제 디스크를 조건으로 검색 (다음 개념) |
시험에 이렇게 나와요
- locate는 데이터베이스로 찾음 → 새 파일은 updatedb 뒤에 보임
- which(PATH에서 명령 위치), whereis(바이너리·매뉴얼), type
1차 출제기준 · 공개 기출 없음
확인 문제
Q1. 방금 만든 파일 report.txt를 locate report.txt로 찾았더니 나오지 않는다. 가장 그럴듯한 이유는?
- locate가 쓰는 데이터베이스가 아직 갱신되지 않아서
- 파일이 숨김 파일이라서
- locate는 .txt를 못 찾아서
- 권한이 없어서
정답 보기
1번 locate가 쓰는 데이터베이스가 아직 갱신되지 않아서
locate는 디스크를 직접 뒤지지 않고 미리 만들어 둔 파일 이름 데이터베이스에서 찾는다. 이 DB는 보통 하루 한 번 자동 갱신되므로, 새 파일은 updatedb를 실행해 DB를 갱신해야 찾을 수 있다.
Q2. 명령의 실행 파일과 man 페이지 위치를 함께 보여 주는 명령은?
- locate
- which
- type
- whereis
정답 보기
4번 whereis
whereis다. 실행 파일, 소스, man 페이지 위치를 함께 보여 준다. which는 PATH에서 실행 파일 위치만 찾는다.
Q3. locate가 사용하는 데이터베이스를 갱신하는 명령은?
- mandb
- locate -u
- updatedb
- ldconfig
정답 보기
3번 updatedb
updatedb다. locate는 미리 만든 파일 목록 데이터베이스에서 찾기 때문에, 새 파일을 찾으려면 updatedb로 갱신해야 한다.
Q4. cd가 셸 내장 명령인지 확인하는 명령은?
- locate cd
- whereis cd
- type cd
- which cd
정답 보기
3번 type cd
type (which는 PATH의 파일만 찾는다).
헷갈리기 쉬운 O·X
locate는 항상 실시간으로 디스크를 검색한다.
정답 보기
X DB 기반. 실시간은 find.
which는 PATH 환경 변수에 등록된 디렉터리에서 실행 파일을 찾는다.
정답 보기
O 맞는 설명이다.