파일 비교 명령어 완벽 가이드
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 -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에 저장
# 세 버전의 C 파일을 비교하여 병합 결과를 merged.c에 저장
주의: diff3 결과에서 '====' 표시는 세 파일 모두에서 내용이 다른 충돌(conflict) 부분을 나타냅니다. 이러한 부분은 수동으로 확인하고 해결해야 합니다.
vimdiff 명령어: 시각적 파일 비교
vimdiff
는 Vim 편집기의 diff 모드를 사용하여 파일을 비교하는 도구입니다. 색상 강조와 함께 시각적으로 차이점을 표시하므로 직관적으로 비교할 수 있습니다.
기본 사용법
$ vimdiff file1.txt file2.txt
# 또는
$ vim -d 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
# 패치 파일 적용
# 변경 사항을 패치 파일로 저장
$ 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개 이상 파일 | 시각적 비교, 실시간 편집 가능 | 대화형으로 파일 비교 및 수정 |
반응형
'개발 > Linux' 카테고리의 다른 글
리눅스 파일 편집 명령어: ex, ed, patch 완벽 가이드 (0) | 2025.04.22 |
---|---|
리눅스 파일 편집 명령어: joe, jed, sed 완벽 가이드 (0) | 2025.04.22 |
리눅스 파일 편집 명령어: emacs, gedit, pico 비교 및 활용 가이드 (0) | 2025.04.22 |
리눅스 파일 편집 명령어: nano, vi, vim 완벽 가이드 (0) | 2025.04.21 |
리눅스 파일 보기 명령어: tail과 cat 활용 가이드 (0) | 2025.04.21 |