리눅스 환경에서 설정 파일을 수정하거나 소스 코드의 변경 사항을 확인할 때, 눈으로 일일이 대조하고 계신가요? diff 명령어는 두 파일 사이의 물리적인 차이를 비트 단위로 분석하여 어떤 줄이 추가되고, 삭제되고, 수정되었는지 한눈에 보여주는 필수 도구입니다.
단순한 비교를 넘어 패치(patch) 파일 생성이나 디렉토리 구조 비교까지 가능해지는 diff 명령어의 모든 것을 지금 바로 알아보겠습니다.
1. diff 명령어의 기본 문법과 결과 해석
가장 기본적인 사용법은 diff [옵션] [파일1] [파일2] 형식입니다. 실행 시 나타나는 기호들의 의미를 아는 것이 핵심입니다.
- a (Add): 파일 1에 내용을 추가해야 파일 2와 같아짐
- c (Change): 파일 1의 해당 내용을 수정해야 함
- d (Delete): 파일 1에서 내용을 삭제해야 함
- < : 첫 번째 파일의 내용
- > : 두 번째 파일의 내용
2. 업무 효율을 높여주는 핵심 옵션 3가지
단순 비교보다는 가독성을 높여주는 다음 옵션들이 실무에서 훨씬 자주 사용됩니다.
① -y (--side-by-side): 좌우 비교
화면을 반으로 나누어 양쪽 파일을 동시에 보여줍니다. 가로로 넓은 모니터를 사용할 때 가장 직관적입니다.
② -u (Unified Output): 통합 형식
변경 전후를 +와 - 기호로 표시하며, 주로 Git Diff나 소프트웨어 패치를 만들 때 표준으로 사용되는 형식입니다.
③ -r (Recursive): 디렉토리 전체 비교
파일 하나가 아니라 폴더 내의 모든 파일과 하위 디렉토리까지 샅샅이 뒤져 차이점을 찾아냅니다.
3. diff 출력 모드별 상세 비교
| 출력 모드 | 주요 특징 | 추천 사용 상황 |
|---|---|---|
| Normal (기본) | 편집 지침(a, c, d) 위주 표시 | 간단한 라인 변경 확인 시 |
| Context (-c) | 변경 지점 앞뒤 문맥 포함 표시 | 코드 흐름 파악이 중요할 때 |
| Unified (-u) | +, - 기호로 압축된 정보 제공 | 개발 및 패치 파일 제작 |
| Side-by-side (-y) | 좌우 2단 구성으로 직접 비교 | 시각적 대조가 필요할 때 |
4. 결론 및 요약
리눅스 diff 명령어는 단순한 도구를 넘어 시스템 관리와 협업의 기본입니다. 처음에는 결과 창의 기호가 낯설 수 있지만, -u 옵션과 -y 옵션만 잘 활용해도 업무 시간을 획기적으로 단축할 수 있습니다.
💡 지금 바로 실행해 보세요!
여러분이 관리하는 설정 파일의 백업본과 원본을 diff -u original.conf backup.conf 명령어로 비교해 보세요. 생각지 못한 설정 오류를 발견할 수도 있습니다!