diff·cmp·file
쉽게 말하면
두 파일이 어디가 다른지 비교하거나(diff, cmp), 파일이 어떤 종류인지 알아내는(file) 명령이에요. 리눅스는 확장자를 믿지 않아서, 파일 안을 열어 보고 종류를 판단해요.
시험용 정의
파일을 비교하고 정보를 보는 명령들이다. diff는 두 텍스트 파일의 다른 줄을, cmp는 두 파일이 처음 달라지는 바이트 위치를, file은 파일의 종류를, stat은 inode의 자세한 정보를 보여 준다.
비유로 이해하기
diff는 두 원고를 나란히 놓고 달라진 문장에 빨간 펜 긋기, cmp는 "몇 번째 글자부터 다르다"만 알려 주는 검수기, file은 상자를 열어 보고 내용물 종류를 말해 주는 사람이다.
자세히
먼저 알아 둘 말
- inode(아이노드): 파일 하나마다 있는 정보 기록 카드. 권한, 소유자, 크기, 시각, 데이터가 디스크 어디 있는지를 담는다. 파일 이름은 inode에 없고, 디렉터리가 "이름 → inode 번호" 목록을 들고 있다(자세히는 링크 개념에서)
- 텍스트 파일과 바이너리 파일: 텍스트는 사람이 읽는 글자로만 된 파일(설정 파일, 스크립트), 바이너리는 실행 파일·이미지처럼 글자가 아닌 바이트가 섞인 파일. diff는 텍스트용, cmp는 바이너리도 비교한다
- 매직 넘버: 파일 맨 앞 몇 바이트에 적힌 형식 표시(예: ELF 실행 파일은 7F 45 4C 46). file 명령은 확장자가 아니라 이것을 읽어 종류를 판단한다
명령 정리
| 명령 | 뜻 |
|---|---|
| diff a b | 다른 줄 표시 (a 추가, c 변경, d 삭제) |
| diff -u a b | 통합 형식 (패치 파일에 쓰는 -/+ 형식) |
| diff -r dir1 dir2 | 디렉터리 비교 |
| diff -i / -w | 대소문자 무시 / 공백 무시 |
| cmp a b | 처음 달라지는 바이트·줄 번호 (바이너리 비교에 적합, 같으면 출력 없음) |
| file 파일 | 파일 종류 판별 (매직 넘버) |
| stat 파일 | 크기, 블록, inode, 권한, 소유자, 접근·수정·변경 시각 |
| patch | diff 결과(패치)를 파일에 적용 |
시험에 나오는 그 밖의 도구
| 말 | 뜻 |
|---|---|
| comm | 정렬된 두 파일을 비교해 첫 파일에만 있는 줄, 둘째 파일에만 있는 줄, 공통 줄을 세 열로 보여 준다 |
시험에 이렇게 나와요
- diff(줄 단위 차이), cmp(바이트 단위 첫 차이), comm
- file로 파일 종류 확인
1차 출제기준 · 공개 기출 없음
확인 문제
Q1. 확장자 없는 파일 data가 텍스트인지, 압축 파일인지, 실행 파일인지 알고 싶다. 알맞은 명령은?
- file data
- type data
- stat data
- cat data
정답 보기
1번 file data
file은 확장자가 아니라 파일 내용의 앞부분(매직 넘버)을 보고 종류를 판단한다. 예: data: gzip compressed data. 리눅스는 확장자에 의미를 두지 않는다.
Q2. 두 파일이 처음으로 다른 바이트 위치를 알려 주는 명령은?
- comm
- cmp
- diff
- file
정답 보기
2번 cmp
cmp다. 두 파일을 바이트 단위로 비교해 처음 다른 위치를 알려 준다. diff는 다른 줄을 보여 주고, comm은 정렬된 두 파일의 줄을 비교한다.
Q3. diff 출력의 5d4가 뜻하는 것은?
- 4번째 줄 삭제
- 5번째 줄을 4번째 줄로 변경
- 첫 파일의 5번째 줄이 삭제되어야 함
- 5번째 줄 뒤에 추가
정답 보기
3번 첫 파일의 5번째 줄이 삭제되어야 함
첫 파일의 5번째 줄을 지우면 두 번째 파일의 4번째 줄 다음과 같아진다는 뜻이다. d는 삭제(delete), a는 추가(add), c는 변경(change)이다.
Q4. 파일의 inode 번호와 접근·수정·변경 시각을 모두 보여 주는 명령은?
- file
- ls -l
- stat
- du
정답 보기
3번 stat
stat이다. inode 번호, 크기, 접근·수정·변경 시각을 모두 보여 준다. ls -l은 수정 시각 하나만 보여 준다.
헷갈리기 쉬운 O·X
file 명령은 파일의 확장자만 보고 종류를 판단한다.
정답 보기
X 내용(매직 넘버)을 본다.
cmp는 두 파일이 같으면 아무것도 출력하지 않는다.
정답 보기
O 맞는 설명이다.