본문 바로가기
개발/Linux

파일 비교 명령어 완벽 가이드: diff, diff3, vimdiff 활용법

by 낭만기사 2025. 4. 23.
파일 비교 명령어 완벽 가이드: diff, diff3, vimdiff 활용법

파일 비교 명령어 완벽 가이드

diff, diff3, vimdiff를 활용한 효율적인 파일 비교 방법

파일 비교의 중요성

소프트웨어 개발, 시스템 관리, 문서 작업 등 다양한 분야에서 파일 간 차이점을 비교하는 작업은 매우 중요합니다. 리눅스/유닉스 시스템에서는 diff, diff3, vimdiff와 같은 강력한 명령어들을 제공하여 파일 비교 작업을 효율적으로 수행할 수 있습니다.

diff 명령어: 두 파일 간 차이점 비교

diff 명령어는 두 파일 간의 차이점을 비교하여 출력하는 기본적인 도구입니다. 줄 단위로 비교하며, 변경된 내용을 명확하게 표시해 줍니다.

기본 사용법

$ diff file1.txt file2.txt

주요 옵션

옵션 설명
-u, --unified 통합 형식(unified format)으로 출력 (가장 일반적으로 사용)
-c, --context 컨텍스트 형식(context format)으로 출력
-i, --ignore-case 대소문자 구분 없이 비교
-w, --ignore-all-space 모든 공백 무시하고 비교
-r, --recursive 디렉토리 재귀적으로 비교
-q, --brief 파일이 다른지 여부만 출력 (차이 내용은 출력하지 않음)

실제 사용 예시

$ diff -u original.txt modified.txt
# 통합 형식으로 차이점 출력

$ diff -r dir1/ dir2/
# 두 디렉토리 내 파일들 재귀적으로 비교
팁: diff 출력 결과에서 '<' 기호는 첫 번째 파일의 내용, '>' 기호는 두 번째 파일의 내용을 나타냅니다. '---' 줄은 변경 전 내용, '+++' 줄은 변경 후 내용을 구분합니다.

diff3 명령어: 세 파일 간 비교

diff3 명령어는 세 개의 파일을 동시에 비교할 때 사용합니다. 특히 두 사람이 동일한 파일을 각각 수정한 후 변경 내용을 병합(merge)할 때 유용합니다.

기본 사용법

$ diff3 myfile.txt oldfile.txt yourfile.txt

주요 옵션

옵션 설명
-m, --merge 병합 가능한 형태로 출력 (편집 가능)
-A, --show-all 모든 충돌을 표시
-e, --ed ed 편집기 스크립트 출력
-x, --overlap-only 세 파일 모두에서 다른 부분만 출력

실제 사용 예시

$ diff3 -m myversion.c original.c yourversion.c > merged.c
# 세 버전의 C 파일을 비교하여 병합 결과를 merged.c에 저장
주의: diff3 결과에서 '====' 표시는 세 파일 모두에서 내용이 다른 충돌(conflict) 부분을 나타냅니다. 이러한 부분은 수동으로 확인하고 해결해야 합니다.

vimdiff 명령어: 시각적 파일 비교

vimdiff는 Vim 편집기의 diff 모드를 사용하여 파일을 비교하는 도구입니다. 색상 강조와 함께 시각적으로 차이점을 표시하므로 직관적으로 비교할 수 있습니다.

기본 사용법

$ vimdiff file1.txt file2.txt
# 또는
$ vim -d file1.txt file2.txt

주요 Vimdiff 명령어

명령어 설명
]c 다음 차이점으로 이동
[c 이전 차이점으로 이동
do (diff obtain) 다른 파일의 변경 내용을 현재 파일에 적용
dp (diff put) 현재 파일의 변경 내용을 다른 파일에 적용
:diffupdate 차이점 비교 다시 수행
zo (z open) 접힌 코드 블록 열기
zc (z close) 코드 블록 접기

세 개 이상의 파일 비교

$ vimdiff file1.txt file2.txt file3.txt
# 세 개의 파일을 동시에 비교
고급 팁: vimdiff에서 :set scrollbind 명령을 사용하면 여러 창을 동시에 스크롤할 수 있습니다. :set wrap을 사용하면 긴 줄을 자동으로 줄바꿈하여 표시할 수 있습니다.

실무에서의 활용 예시

시나리오 1: 코드 변경 사항 확인

$ diff -u original.py modified.py > changes.diff
# 변경 사항을 패치 파일로 저장

$ patch original.py < changes.diff
# 패치 파일 적용

시나리오 2: 협업 시 변경 내용 병합

$ diff3 -m my_version.c base_version.c colleague_version.c > merged.c
# 세 버전의 파일 병합

시나리오 3: 설정 파일 비교

$ vimdiff /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
# 현재 설정과 백업 파일 비교

명령어 비교 표

명령어 비교 대상 주요 특징 적합한 사용 사례
diff 2개 파일 간단한 텍스트 출력, 스크립트에 사용 가능 빠른 차이점 확인, 패치 파일 생성
diff3 3개 파일 병합 지원, 충돌 표시 협업 시 변경 내용 병합
vimdiff 2개 이상 파일 시각적 비교, 실시간 편집 가능 대화형으로 파일 비교 및 수정

© 2023 리눅스 명령어 가이드. 모든 권리 보유.

더 많은 리눅스 팁과 튜토리얼을 보려면 블로그를 구독하세요.

반응형