[1과목 3장 03절] cat·head·tail·wc 등 내용 확인, find·which·locate 검색, man 섹션 번호, date·uname 등 시스템 정보 명령을 다룹니다.
🎯 이 강의 학습 목표
이 강은 1과목 3장 03절 기타 필수 명령어이며, 1과목의 마지막 강입니다. 이 강을 마치면 파일 내용을 보는 명령들의 차이를 구분하고, find의 조건 옵션으로 원하는 파일을 찾을 수 있으며, which·whereis·locate의 용도 차이와 man의 섹션 번호 체계를 설명할 수 있게 됩니다.
이 단원은 "명령어와 기능을 짝지어라" 유형이 압도적으로 많습니다. 비슷해 보이는 명령들을 무엇이 다른가 기준으로 묶어 두는 것이 핵심입니다. 예를 들어 cat·more·less는 모두 파일을 보여 주지만 되돌아갈 수 있는가에서 갈립니다.
💡 파일 내용을 보는 명령
| 명령 | 동작 | 핵심 옵션 |
|---|---|---|
cat | 파일 전체를 한 번에 출력 | -n 줄 번호, -b 빈 줄 제외 번호, -A 특수문자 표시 |
tac | 마지막 줄부터 거꾸로 출력(cat의 반대) | — |
more | 한 화면씩. 앞으로만 이동 | Space 다음 쪽, Enter 한 줄, q 종료 |
less | 한 화면씩. 앞뒤로 이동 + 검색 | / 검색, b 뒤로, q 종료 |
head | 파일 앞부분(기본 10줄) | -n 줄 수, -c 바이트 수 |
tail | 파일 끝부분(기본 10줄) | -n 줄 수, -f 실시간 추적 |
wc | 줄·단어·바이트 수 세기 | -l 줄, -w 단어, -c 바이트 |
more와 less의 차이가 시험 단골입니다. more는 앞으로만 넘길 수 있고 less는 뒤로도 갈 수 있으며 검색도 됩니다. "less is more than more(less가 more보다 낫다)"라는 말장난이 이름의 유래입니다.
tail -f는 실무에서 가장 많이 쓰는 옵션 중 하나입니다. 파일 끝에 새 줄이 추가될 때마다 자동으로 화면에 표시하므로, 서버 로그를 실시간으로 지켜볼 때 씁니다. tail -f /var/log/syslog 같은 형태이며, Ctrl+C로 빠져나옵니다.
💡 파일을 찾는 명령 — find, which, whereis, locate
네 명령 모두 "찾는다"지만 대상과 방식이 완전히 다릅니다.
| 명령 | 찾는 대상 | 방식 | 속도 |
|---|---|---|---|
find | 모든 파일 | 디렉터리를 직접 순회. 조건이 매우 다양 | 느림 |
which | 실행 파일 | PATH 환경변수에 등록된 경로만 검색 | 빠름 |
whereis | 실행 파일 + 매뉴얼 + 소스 | 정해진 표준 경로만 검색 | 빠름 |
locate | 모든 파일 | 미리 만들어 둔 DB를 검색 | 매우 빠름 |
locate는 DB를 조회하기 때문에 압도적으로 빠르지만, 방금 만든 파일은 찾지 못합니다. DB는 updatedb 명령이나 주기적 작업으로 갱신되기 때문입니다. 이 특성이 그대로 시험 문제가 됩니다.
find는 조건 조합이 핵심입니다. 형식은 find [경로] [조건] [동작]입니다.
| 조건 | 의미 |
|---|---|
-name / -iname | 이름으로(대소문자 구분 / 무시) |
-type | 유형 — f 일반 파일, d 디렉터리, l 링크 |
-size | 크기 — +10M(10MB 초과), -1k(1KB 미만) |
-perm | 권한으로 — 특수 권한 점검에 사용(16강) |
-user / -group | 소유자 / 그룹으로 |
-mtime / -atime | 수정 / 접근 시각 — -7(7일 이내), +30(30일 이전) |
-exec ... {} \; | 찾은 파일마다 명령 실행. {}가 파일명으로 치환 |
-delete | 찾은 파일 삭제 (위험) |
-exec는 강력하지만 형식이 까다롭습니다. find /tmp -name "*.log" -exec rm {} \;에서 {}는 찾은 파일 이름, \;는 명령의 끝을 뜻합니다. 세미콜론 앞의 역슬래시를 빠뜨리면 셸이 먼저 해석해 버려 오류가 납니다.
💡 도움말 — man과 섹션 번호
리눅스의 공식 도움말은 man(manual)입니다. 중요한 것은 같은 이름이 여러 섹션에 존재할 수 있다는 점입니다.
| 섹션 | 내용 | 예 |
|---|---|---|
| 1 | 일반 사용자 명령 | ls, passwd(명령) |
| 2 | 시스템 호출 | open, fork |
| 3 | 라이브러리 함수 | printf |
| 4 | 특수 파일(/dev) | null |
| 5 | 파일 형식과 규약 | passwd(파일), fstab |
| 6 | 게임 | — |
| 7 | 기타·규약 | hier, regex |
| 8 | 관리자 명령 | useradd, mount |
| 9 | 커널 루틴 | — |
1번과 5번의 대비가 가장 자주 출제됩니다. man passwd는 암호를 바꾸는 명령(섹션 1)을 보여 주고, man 5 passwd는 /etc/passwd 파일의 형식(섹션 5)을 보여 줍니다. 10강에서 본 7개 필드 설명이 바로 섹션 5에 있습니다. 관리자 명령은 섹션 8입니다.
관련 명령도 함께 정리합니다. whatis는 한 줄 요약을 보여 주고, apropos(또는 man -k)는 키워드로 매뉴얼을 검색합니다. info는 GNU가 만든 더 자세한 문서 시스템이고, --help는 명령 자체가 제공하는 간단한 사용법입니다.
💡 시스템 정보 명령
| 명령 | 보여 주는 것 | 비고 |
|---|---|---|
date | 현재 날짜와 시각 | +%Y-%m-%d 형식 지정 가능 |
cal | 달력 | -y는 해당 연도 전체 |
uname | 시스템 정보 | -a 전체, -r 커널 버전, -m 아키텍처 |
hostname | 호스트명 | uname -n과 동일 |
free | 메모리·스왑 사용량 | -h 읽기 좋은 단위 |
uptime | 가동 시간·접속자 수·부하 평균 | — |
who / w | 접속자 목록 / 접속자 + 작업 내용 | — |
last | 로그인 기록 | — |
clear | 화면 지우기 | — |
echo | 문자열·변수 값 출력 | echo $PATH |
cal -y는 "올해의 달력 전체를 출력하는 옵션"을 묻는 문제로 그대로 나옵니다. uname은 옵션마다 출력이 달라 3강·4강에서도 다뤘는데, -r은 커널 버전, -o는 GNU/Linux였다는 점을 다시 확인해 두십시오.
💻 실습으로 확인하기
아래는 /tmp/lm13에서 실제 실행한 결과입니다. 5줄짜리 list.txt를 먼저 만들었습니다.
$ cat -n list.txt
1 alpha
2 bravo
3 charlie
4 delta
5 echo
$ head -2 list.txt
alpha
bravo
$ tail -2 list.txt
delta
echo
cat -n은 줄 번호를 붙여 전체를 출력합니다. head -2는 앞 2줄, tail -2는 뒤 2줄을 보여 줍니다. -n이 cat에서는 "줄 번호", head·tail에서는 "줄 수"로 의미가 다르다는 점에 주의하십시오. 같은 글자라도 명령마다 뜻이 달라지는 대표적 사례입니다.
$ wc list.txt
5 5 31 list.txt
$ wc -l list.txt
5 list.txt
wc는 옵션 없이 쓰면 줄 수 · 단어 수 · 바이트 수 순으로 세 값을 출력합니다. 여기서는 5줄, 5단어, 31바이트입니다. 한 줄에 단어가 하나씩이라 줄 수와 단어 수가 같습니다. -l을 붙이면 줄 수만 나옵니다. 출력 순서 줄→단어→바이트가 시험에 그대로 나옵니다.
$ find . -name "*.txt" -type f
./list.txt
./small.txt
-name "*.txt"로 이름 조건을, -type f로 일반 파일만이라는 조건을 걸었습니다. 같은 디렉터리에 있던 big.log는 확장자가 달라 제외되었습니다. 조건은 나열하면 모두 만족(AND)하는 것만 출력됩니다.
$ which ls
/usr/bin/ls
$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
두 명령의 차이가 한눈에 드러납니다. which는 실행 파일 경로 하나만 알려 주지만, whereis는 매뉴얼 페이지 위치까지 함께 보여 줍니다. /usr/share/man/man1/ls.1.gz에서 man1과 .1이 보이는데, 이것이 바로 ls의 매뉴얼이 섹션 1에 있다는 표시입니다. 앞에서 표로 외운 섹션 번호가 파일 경로에 그대로 반영되어 있습니다.
$ whatis passwd
passwd (1) - change user password
passwd (1ssl) - OpenSSL application commands
passwd (5) - the password file
섹션 번호의 의미를 보여 주는 가장 좋은 예입니다. 같은 passwd인데 (1)은 암호를 바꾸는 명령, (5)는 암호 파일 그 자체로 설명이 완전히 다릅니다. 10강에서 다룬 /etc/passwd의 7개 필드를 확인하려면 man 5 passwd를 실행해야지, 그냥 man passwd를 치면 섹션 1이 열려 엉뚱한 내용을 보게 됩니다.
$ date "+%Y-%m-%d %H:%M:%S"
2026-09-12 20:59:59
$ uname -a
Linux BOOK-80MR4T5EPH 6.6.87.2-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC Thu Jun 5 18:30:46 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
$ uptime
20:59:59 up 1 day, 6:22, 2 users, load average: 9.77, 9.28, 6.28
date는 +로 시작하는 형식 문자열을 주면 원하는 모양으로 출력합니다(%Y 연, %m 월, %d 일, %H:%M:%S 시각). 스크립트에서 로그 파일 이름을 만들 때 자주 씁니다. uname -a는 커널 이름·호스트명·커널 버전·빌드 정보·아키텍처·운영체제를 한 줄에 모두 출력합니다. uptime의 load average 세 숫자는 최근 1분·5분·15분 평균 부하로, 25강 top에서 다시 다룹니다.
⚠️ 시험에 나오는 함정
| 함정 | 정확한 사실 |
|---|---|
more로 뒤로 돌아갈 수 있다 | less만 가능. more는 앞으로만 |
which로 매뉴얼 위치를 찾는다 | which는 실행 파일만. 매뉴얼까지는 whereis |
locate는 항상 최신 결과를 준다 | DB 기반이라 updatedb 전에 만든 파일은 못 찾음 |
man passwd로 /etc/passwd 형식을 본다 | 그건 man 5 passwd. 그냥 man passwd는 섹션 1(명령) |
| 관리자 명령 매뉴얼은 섹션 1이다 | 섹션 8 |
wc의 출력 순서는 바이트→단어→줄 | 줄 → 단어 → 바이트 |
find의 -exec는 ;로 끝낸다 | \;(역슬래시 필요) |
find는 새 파일을 만드는 명령이다 | 검색 전용. 파일 생성과 무관 |
📝 핵심 요약 — 암기표
| 항목 | 핵심 |
|---|---|
| 내용 보기 | cat(전체) · tac(역순) · more(앞으로만) · less(앞뒤+검색) |
| 앞/뒤 일부 | head(앞 10줄) · tail(뒤 10줄) · tail -f 실시간 추적 |
wc 출력 순서 | 줄 → 단어 → 바이트 (-l/-w/-c) |
find | 직접 순회 · -name -type f/d/l -size -perm -mtime · -exec ... {} \; |
which / whereis | PATH의 실행 파일 / 실행 파일 + 매뉴얼 + 소스 |
locate | DB 검색(매우 빠름, updatedb 필요) |
| man 섹션 | 1 일반 명령 · 5 파일 형식 · 8 관리자 명령 (2 시스템 호출, 3 라이브러리) |
| 매뉴얼 검색 | whatis(한 줄 요약) · apropos·man -k(키워드 검색) |
| 시스템 정보 | date · cal -y · uname -r · free -h · uptime · who/w |
이것으로 1과목 리눅스 일반이 끝났습니다. 여기까지가 1차 시험의 출제 범위입니다. 다음 14강부터는 2과목 리눅스 운영 및 관리로 들어가며, 2차 시험에서 가장 많이 틀리는 영역인 파일 권한부터 다룹니다.
📋 실전 문제
1. 파일을 화면 단위로 보되 앞뒤로 이동하고 검색까지 할 수 있는 명령은?
① cat ② more ③ less ④ head
2. 로그 파일에 새로운 내용이 기록될 때마다 실시간으로 화면에 출력하는 명령은?
① tail -f ② head -n ③ cat -n ④ wc -l
3. wc list.txt의 출력이 5 5 31 list.txt일 때, 세 숫자의 의미를 순서대로 바르게 나열한 것은?
① 바이트 수, 단어 수, 줄 수
② 줄 수, 단어 수, 바이트 수
③ 단어 수, 줄 수, 바이트 수
④ 줄 수, 바이트 수, 단어 수
4. 미리 구축된 데이터베이스를 검색하기 때문에 매우 빠르지만, 방금 만든 파일은 찾지 못할 수 있는 명령은?
① find ② which ③ whereis ④ locate
5. /etc/passwd 파일의 형식에 대한 매뉴얼을 보려면 실행해야 하는 명령은?
① man passwd ② man 1 passwd
③ man 5 passwd ④ man 8 passwd
6. 현재 디렉터리 아래에서 확장자가 .log인 일반 파일만 찾는 명령으로 알맞은 것은?
① find . -name "*.log" -type d
② find . -name "*.log" -type f
③ find . -iname "*.log" -type l
④ locate "*.log" -type f
7. 올해의 달력 전체를 출력할 때 cal 명령에 사용하는 옵션은?
① -a ② -m ③ -s ④ -y
8. whereis ls의 실행 결과가 ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz일 때, 이에 대한 설명으로 틀린 것은?
① ls의 실행 파일은 /usr/bin/ls이다.
② ls의 매뉴얼은 섹션 1에 속한다.
③ which ls를 실행해도 매뉴얼 경로가 함께 출력된다.
④ whereis는 실행 파일과 매뉴얼 위치를 함께 찾아 준다.
✅ 정답과 해설
1. 정답 ③
less는 앞뒤 이동과 / 검색을 모두 지원합니다. ②의 more는 앞으로만 넘길 수 있습니다. ①의 cat은 화면 단위가 아니라 한 번에 전부 출력하고, ④의 head는 앞부분만 보여 줍니다.
2. 정답 ①
tail -f(follow)가 파일 끝에 추가되는 내용을 계속 따라갑니다. 서버 로그 모니터링의 표준 방법입니다. ②·③·④는 한 번 실행하면 그 시점의 결과만 출력하고 끝납니다.
3. 정답 ②
wc는 줄 수 → 단어 수 → 바이트 수 순으로 출력합니다. 옵션 -l(line)·-w(word)·-c(character/byte)와 순서가 대응한다고 기억하면 헷갈리지 않습니다.
4. 정답 ④
locate는 updatedb가 만들어 둔 데이터베이스를 조회하므로 매우 빠르지만, DB 갱신 전에 생성된 파일은 검색되지 않습니다. ①의 find는 디렉터리를 직접 순회하므로 느리지만 항상 최신 상태를 반영합니다.
5. 정답 ③
파일 형식은 섹션 5입니다. ①처럼 섹션을 생략하면 낮은 번호부터 찾아 섹션 1(암호 변경 명령)이 열립니다. ④의 섹션 8은 관리자 명령용입니다. whatis passwd를 실행하면 (1)과 (5)가 모두 존재함을 확인할 수 있습니다.
6. 정답 ②
-name "*.log"로 이름을, -type f로 일반 파일이라는 조건을 겁니다. ①의 -type d는 디렉터리, ③의 -type l은 심볼릭 링크를 찾습니다. ④의 locate에는 -type 옵션이 없습니다.
7. 정답 ④
cal -y가 해당 연도 전체 달력을 출력합니다. cal 2026처럼 연도를 직접 적어도 같은 결과가 나옵니다.
8. 정답 ③
which는 PATH에 등록된 실행 파일 경로만 출력하고 매뉴얼 경로는 보여 주지 않습니다. 매뉴얼과 소스까지 함께 찾는 것이 whereis의 특징입니다. ①·②·④는 출력 내용 그대로 옳으며, 특히 ②는 경로의 man1과 .1.gz가 섹션 번호를 나타냅니다.
📚 참고 자료
관련 주제
- cat
- head
- tail
- find
- which
- whereis
- man 섹션
- uname
- 자격증
- 자격증 강의
- 리눅스마스터 2급 완전정복
- 무료강의
- 무료 온라인 강의
- NUGUNA
- 누구나
📚 시리즈 전체 공유
리눅스마스터 2급 완전정복
이 강의가 속한 시리즈는 총 14강, 모두 무료입니다. 처음부터 배우려는 동료에게 시리즈 전체를 알려 주세요.
댓글
불러오는 중...
