강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

두파일 비교의 진정한 달인 diff 1편: 기본 사용법

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

두파일 비교의 진정한 달인 diff 1: 기본 사용법

 

 

 

 

이번에는 일반적인 두파일비교에 사용되는 diff에 대한 설명이다.

 

 

 

 diff "differences"의 약어로서 두 파일 사이의 내용을 비교하는 명령어이다.

 

 

 

  두 파일의 다른 점을 확인하는 명령어로는 cmp가 있지만 diff가 보다 직관적이고 명확하게 찾아준다.

 

 

 

 그리고 diff의 명령어의 실행결과 차이점이 없다면 0, 차이점이 있다면 1, 실행시 에러가 발생하면 2이상의  종료코드값을 반환한다.

 

 

 

 

 

두파일의 내용에 대한 차이점을 확인하기 위하여 가장 좋은 명령어가 diff일 것이다.

 

 

 

 아래의 예는 file1 file2의 차이점을 확인하기 위하여 아무런 옵션없이 그냥 단순비교를 한 것이다.

 

 

 

  diff명령어로 file1 file2파일을 비교하는 가장 간단한 방법이다.

 

 

 

 

 

[root@sulinux ~]# cat file1

Linux is a Operating System.

 

I am a Linux Engineer.

[root@sulinux ~]#

[root@sulinux ~]# cat file2

Linux is a Operating System.

 

I am a Linux System Engineer.

[root@sulinux ~]#

[root@sulinux ~]# diff file1 file2

3c3

< I am a Linux Engineer.

---

> I am a Linux System Engineer.

[root@sulinux ~]#

 

 

 

 

위의 결과 file1 file2의 차이점을 확인할 수 있다.

 

 

 

 필자가 부연 설명할 여지없이 두파일이 어디에 어떤 내용으로 다른가를 정확하게 알 수 있다.

 

 

 

 

 

diff를 이용하여 단순히 두 파일이 같은가 다른가를 확인하려면 "--brief"옵션을 사용하면 된다.

 

 

 

 아래의 예는 diff명령어로 file1 file2파일을 비교하면서 --brief옵션을 사용한 것이다.

 

 

 

 

 

[root@sulinux ~]# cp file1 file3

[root@sulinux ~]#

[root@sulinux ~]# diff --brief file1 file2

Files file1 and file2 differ

[root@sulinux ~]#

[root@sulinux ~]# diff --brief file1 file3

[root@sulinux ~]#

 

먼저 file1을 동일한 파일로 file3으로 복사하였다.

 

 

 

 file3 file1에서 복사되었기 때문에 둘은 완전히 동일한 파일이다.

 

 

 

 하지만 앞의 예에서 보았듯이 file1 file2는 다른 파일이다.

 

 

 

 

 

이런 상태에서 file1 file2 diff로 비교해 본 결과 이 두파일은 서로 다르다는 간단한 결과메시지를 출력하였다.

 

 

 

 그렇지만, file1 file3은 완전히 동일한 파일이기 때문에 아무런 메시지도 출력되지 않은 것이다.

 

 

 

 

 

이번에는 diff로 정의된 포맷으로 두파일의 차이점을 출력한 예이다.

 

 

 

 diff명령어에 지정된 포맷으로 두 파일의 차이점을 출력한다.

 

 

 

 아래 예의 결과는 두 파일의 차이점을 보다 자세하게 출력하고 있으며 이 출력폼(FORM) diff명령어에 지정되어 있는 출력형태이다.

 

 

 

 

 

[root@sulinux ~]# diff -c file1 file2

*** file1       2022-12-22 20:58:25.000000000 +0900

--- file2       2022-12-22 20:59:00.000000000 +0900

***************

*** 1,3 ****

  Linux is a Operating System.

 

! I am a Linux Engineer.

--- 1,3 ----

  Linux is a Operating System.

 

! I am a Linux System Engineer.

[root@sulinux ~]#

 

 

 

즉 위의 예와 같이 정의된 포맷으로 두 파일의 차이점을 확인하고자 한다면 diff명령어에 -c옵션을 사용하면 된다.

 

 

 

 

 

다음은 diff를 이용하여 두파일의 자세한 비교를 한 예이다.

 

 

 

 diff명령어로 보다 자세한 두 파일의 비교를 하고자 한다면 -d옵션을 사용하면 된다.

 

 

 

 각각의 파일을 세밀하게 분석하여 두 파일을 비교하는 옵션이다.

 

 

 

 가장 작은 변화된 부분까지도 찾기 위하여 알고리즘을 변경하기도 한다.

 

 

 

 따라서 diff수행시에 수행속도가 느려질 수도 있다.

 

 

 

 

 

[root@sulinux ~]# diff -d file1 file2

3c3

< I am a Linux Engineer.

---

> I am a Linux System Engineer.

[root@sulinux ~]#

 

 

 

 

즉 위의 결과를 보면 file1 file2파일을 비교하면서 보다 자세한 결과를 확인하기 위하여 -d옵션을 사용한 것이다.

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,044 명
  • 현재 강좌수 :  35,858 개
  • 현재 접속자 :  83 명