개요
diff -u는 두 파일의 내용을 비교하여 차이점을 통합(Unified) 형식으로 출력합니다. 이 형식은 변경된 줄과 함께 주변 몇 줄의 맥락을 보여주므로, 어떤 부분이 어떻게 변경되었는지 쉽게 파악할 수 있습니다. 이는 특히 소스 코드 관리나 설정 파일 변경 이력 추적에 필수적인 도구입니다.
주요 특징
- 통합(Unified) 형식으로 차이점 표시
- 변경 사항의 맥락 제공
- 코드 리뷰 및 버전 관리에 유용
- 추가/삭제/변경 사항 명확히 구분
주요 옵션
diff 명령어는 다양한 옵션을 제공하지만, 여기서는 `-u` 옵션과 함께 자주 사용되는 옵션들을 설명합니다.
출력 형식
비교 동작
생성된 명령어:
명령어를 조합해 보세요.
설명:
`diff` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
diff -u 명령어를 활용한 다양한 사용 예시입니다.
두 파일의 Unified 형식 차이점 비교
diff -u file1.txt file2.txt
file1.txt와 file2.txt의 차이점을 Unified 형식으로 출력합니다.
두 디렉토리의 파일들을 재귀적으로 비교
diff -ur dir1 dir2
dir1과 dir2 디렉토리 내의 모든 파일들을 재귀적으로 비교하고 Unified 형식으로 출력합니다.
공백 변화를 무시하고 파일 비교
diff -uw file1.txt file2.txt
파일 내용의 공백 문자(스페이스, 탭 등) 변화를 무시하고 실질적인 내용 차이만 비교합니다.
특정 패턴의 줄을 무시하고 파일 비교
diff -u -I '^#' config1.conf config2.conf
주석(#으로 시작하는 줄)을 무시하고 config1.conf와 config2.conf 파일의 차이점을 비교합니다.
Unified 출력을 패치 파일로 저장
diff -u old_file.txt new_file.txt > changes.patch
두 파일의 차이점을 Unified 형식으로 출력하고, 그 결과를 'changes.patch' 파일로 저장합니다. 이 파일은 'patch' 명령어로 적용할 수 있습니다.
팁 & 주의사항
diff -u 출력 결과를 효과적으로 해석하고 활용하기 위한 팁입니다.
Unified 출력 해석 방법
diff -u의 출력은 다음과 같은 기호들을 사용하여 변경 사항을 나타냅니다.
- --- (세 개의 하이픈): 원본(old) 파일의 경로와 타임스탬프를 나타냅니다.
- +++ (세 개의 플러스): 새(new) 파일의 경로와 타임스탬프를 나타냅니다.
- @@ -OLD_START,OLD_COUNT +NEW_START,NEW_COUNT @@: '척크 헤더'로, 변경이 발생한 파일의 줄 번호 및 범위를 나타냅니다.
- - (하이픈): 원본 파일에만 있는 줄로, 삭제된 줄을 의미합니다.
- + (플러스): 새 파일에만 있는 줄로, 추가된 줄을 의미합니다.
- (공백): 두 파일 모두에 있는 줄로, 변경 없는 맥락 줄을 의미합니다.
patch 명령어와의 연동
diff -u로 생성된 출력은 `patch` 명령어의 입력으로 사용될 수 있습니다. 이를 통해 한 파일의 변경 사항을 다른 파일에 쉽게 적용하거나 되돌릴 수 있습니다. 예를 들어, `diff -u old_file new_file > changes.patch` 명령으로 패치 파일을 생성한 후, `patch -p0 < changes.patch` 명령으로 `old_file`에 `changes.patch`의 변경 사항을 적용하여 `new_file`과 동일하게 만들 수 있습니다.