diff 명령어는 두 파일 또는 디렉터리 간의 차이점을 비교하는 데 사용됩니다. 이 도구는 텍스트 파일을 줄 단위로 분석하여 변경된 부분을 식별합니다.
기본 문법
diff [옵션]... [파일1|디렉터리1] [파일2|디렉터리2]
주요 옵션
- -a, --text: 모든 파일을 텍스트로 처리하여 비교
- -b, --ignore-space-change: 공백 문자 변경 무시
- -B, --ignore-blank-lines: 빈 줄 무시
- -c, -C NUM, --context[=NUM]: 컨텍스트 형식으로 출력 (기본 3줄)
- -d, --minimal: 최소한의 변경 사항만 표시 (속도 저하 가능성 있음)
- -i, --ignore-case: 대소문자 구분 안 함
- -q, --brief: 차이점 존재 여부만 출력
- -r, --recursive: 디렉터리 내부 재귀적으로 비교
- -u, -U NUM, --unified[=NUM]: 통합 형식으로 출력 (기본 3줄)
- -y, --side-by-side: 나란히 비교 형식
사용 예제
두 개의 텍스트 파일 생성:
echo -e "text line\n\nOriginal file\nExtra data\nUser Info" > file_a.txt
echo -e "text line\n\nModified file" > file_b.txt
기본 비교 실행:
diff file_a.txt file_b.txt
출력 결과:
3,5c3
< Original file
< Extra data
< User Info
---
> Modified file
병렬 비교 형식 적용:
diff -y file_a.txt file_b.txt
출력 결과:
text line text line
Original file | Modified file
Extra data <
User Info <
통합 형식으로 비교:
diff -u file_a.txt file_b.txt
출력 결과:
--- file_a.txt 2023-10-01 10:00:00.000000000 +0900
+++ file_b.txt 2023-10-01 10:00:00.000000000 +0900
@@ -1,5 +1,3 @@
text line
-Original file
-Extra data
-User Info
+Modified file
디렉터리 비교 예시:
mkdir folder1 folder2
echo "content A" > folder1/doc1.txt
echo "content B" > folder2/doc1.txt
echo "unique" > folder1/extra.txt
diff folder1 folder2
출력 결과:
diff folder1/doc1.txt folder2/doc1.txt
1c1
< content A
---
> content B
Only in folder1: extra.txt
변경 사항을 패치 파일로 저장:
diff -u file_a.txt file_b.txt > update.patch
고급 기능
Vim 에디터에서도 유사한 기능을 제공합니다:
vimdiff file_a.txt file_b.txt
이 명령은 시각적으로 차이점을 강조하여 표시하며, Vim의 편집 기능과 결합해 사용할 수 있습니다.