개요
diff는 두 파일 또는 디렉토리의 변경점을 비교하여 어떤 줄이 추가/삭제/수정되었는지 보여줍니다. 출력 형식은 통합(unified), 컨텍스트(context), 나란히(side-by-side) 등으로 선택할 수 있으며, 공백이나 대소문자와 같은 비교 민감도를 조절할 수 있습니다.
주요 특징
- 줄 단위 비교 및 사람이 읽기 쉬운 포맷 제공
- 디렉토리 간 재귀 비교 가능 (-r)
- 공백/대소문자/빈 줄 등 무시 규칙 다양
- 패치(.patch) 생성에 적합한 통합 형식(-u) 지원
- 대용량 파일 비교 성능 최적화 옵션 제공
활용 시나리오 예시
- 코드 리뷰: 변경된 파일만 패치로 추출
- 설정 파일 변경 추적: 배포 전후 설정 비교
- 백업/스냅샷 비교: 특정 시점 간 차이 확인
- 문서/데이터 전처리 단계에서 의도치 않은 변경 탐지
- 보안 점검: 외부에서 배포된 바이너리/스크립트의 의심스러운 변경 확인
diff 출력 형식
diff의 출력 형식은 첫 번째 파일을 두 번째 파일로 변경하기 위한 지침을 나타냅니다.
- `a` (add): 첫 번째 파일에 없는 라인이 두 번째 파일에 **추가**되었습니다. (예: `1a2`)
- `c` (change): 두 파일 모두 해당 라인이 **변경**되었습니다. (예: `1c2`)
- `d` (delete): 첫 번째 파일에 있는 라인이 두 번째 파일에서 **삭제**되었습니다. (예: `1d2`)
주요 옵션
자주 사용하는 옵션을 목적에 따라 그룹화했습니다.
1) 기본 동작 & 출력 형식
2) 비교 범위/대상 지정
3) 출력 제어/무시 규칙
4) 도움말/버전
생성된 명령어:
명령어를 조합해 보세요.
설명:
`diff` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
자주 쓰는 비교 시나리오를 예제로 정리했습니다.
통합 포맷으로 패치 생성
diff -u old.conf new.conf > change.patch
디렉토리 재귀 비교
diff -ruN ./v1 ./v2
공백 차이 무시하고 비교
diff -uw src_old.c src_new.c
나란히 보기 + 공통 줄 숨김
diff -y --suppress-common-lines a.txt b.txt
종료 코드
스크립트에서 분기 처리할 때 참고하세요.
코드 | 의미 |
---|---|
0 | 두 대상이 동일 |
1 | 차이가 있음 |
2 | 오류 발생(사용법 오류/파일 접근 불가 등) |
설치
대부분의 배포판에 기본 포함되어 있으나 없을 경우 diffutils 패키지를 설치하세요.
Debian/Ubuntu
sudo apt update && sudo apt install -y diffutils
RHEL/CentOS/Fedora
sudo dnf install -y diffutils
Arch Linux
sudo pacman -S --needed diffutils
openSUSE
sudo zypper install -y diffutils
팁 & 주의사항
현장에서 자주 놓치는 포인트입니다.
- 패치 포맷은 보통 -u를 표준으로 사용합니다. git도 내부적으로 유사한 통합 포맷을 씁니다.
- 공백 처리 옵션(-w, -b, -B)을 남용하면 실제 의미 있는 변경이 가려질 수 있습니다.
- 윈도우/리눅스 줄바꿈 차이는 --strip-trailing-cr로 정규화하면 비교가 수월합니다.
- 디렉토리 비교 시 -r과 -x/-X(제외 규칙)를 함께 사용하여 불필요한 파일을 거르세요.
- 정말 빠른 존재 여부만 확인하려면 -q 옵션을 사용하세요. 상세 내용은 출력하지 않습니다.