> 텍스트 처리 및 검색 > diff

diff: 두 파일의 차이점 비교 (Unified 형식)

diff 명령어는 두 파일 또는 디렉토리 간의 차이점을 분석하고 출력합니다. 특히 `-u` (Unified) 옵션은 변경된 줄과 그 주변의 맥락을 함께 보여주는 통합 형식으로 결과를 표시하여, 코드 변경 사항 검토나 버전 관리 시스템에서 변경 이력을 파악할 때 매우 유용합니다. 이 형식은 어떤 부분이 추가, 삭제 또는 수정되었는지 직관적으로 이해할 수 있도록 돕습니다.

개요

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`과 동일하게 만들 수 있습니다.


관련 명령어

기능적으로 유사하거나 함께 자주쓰이는 명령어들입니다.


동일 카테고리 명령어