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

리눅스마스터2급강좌 : 파일비교하기 cmp

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터2급강좌 : 파일비교하기 cmp

파일 비교

cmp

cmp“compare”의 약어로서 두 개의 파일이 어떤 부분이 다른가를 비교할 때에 사용하는 명령어이다.

 

 

 

 

두 개의 파일을 비교하여 단순히 같은가 다른가를 확인할 수도 있으며 또한 몇 행의 몇 번째 문자가 다른가를 확인할 수도 있다.

 

 

 

 

두 파일이 동일한가를 확인하고자 할 때에 주로 사용한다.

 

cmp는 두 파일이 완전히 같다면, 결과가 출력되지 않고, 다른 부분들이 있다면, 처음으로 다른 부분이 발견된 행과 바이트를 출력한다.

 

 

 

 

다음 예제는 두 개의 파일을 단순 비교한 것이다.

 

 

 

 

 

 

 

 

 

 

# cat file1

This is a book.

# cat file2

THis is a book.

# cmp file1 file2

file1 file2 differ : byte 2, line 1

#

 

 

 

 

 

결과문에서 첫 번째 행(line 1)의 두 번째 바이트(byte 2)의 문자가 서로 다르다는 것을 표시하였다.

 

 

 

 

 

 

comm

comm은 지정한 두 파일의 행과 행을 비교할 때에 사용하는 명령어이다.

 

 

 

 

특별한 옵션을 사용하지 않고 comm 명령어로 두 개의 파일을 비교하였을 때의 출력내용은 첫 번째 파일에만 존재하는 내용과 두 번째 파일에만 존재하는 내용 및 두 파일에 공통적으로 존재하는 내용의 순서대로 출력된다.

 

 

 

 

그리고 1. -2. -3 등과 같은 옵션을 사용하면 좀 더 자세한 출력 결과를 얻을 수 있다.

 

 

 

 

 

 

 

 

 

 

# cat file1

APACHE INSTALLATION.

users.

APACHE.

# cat file2

apache installation

users.

apache.

# comm file1 file2

APACHE INSTALLATION.

apache installation

users.

APACHE.

apache.

 

 

 

 

 

위의 파일들에서 file1에만 있는 내용은 “APACHE INSTALLATION.”“APACHE.”이고, file2에만 있는 내용은 “apache installation”“apache.”이며, file1file2 모두에 있는 냉용은 “users.”이다.

 

 

 

 

이 상황에서 comm 명령을 내리면, 세 개의 줄로 결과가 출력이 된다.

 

 

 

 

가장 왼쪽의 출력 내용은 file1에만 있는 것이고, 중앙에 있는 것은 file2에만 있는 것이며, 가장 오른쪽의 출력 내용은 양쪽 파일 모두에 있는 내용이다.

 

 

 

 

 

 

다음은 comm 명령에 사용되는 옵션의 내용이다.

 

옵 션

기 능

-1

file1에만 있는 행들을 무시한다.

-2

file2에만 있는 행들을 무시한다.

-3

양쪽 모두에 있는 행들을 무시한다.

 

diff

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

 

 

 

 

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

 

 

 

 

이런 점에서 파일 비교용 프로그램으로는 diff가 일반적으로 사용된다.

 

diff“diff [옵션] 파일1 파일2” 또는 “diff [옵션] 디렉토리1 디렉토리2”의 형식으로 사용하는데, diff는 명령어의 실행결과로서 종료코드를 반환하는 경우에 차이점이 없다면 0, 차이점이 있다면 1, 실행 시 오류가 발생하면 2의 값을 반환한다.

 

다음은 아무런 옵션 없이 두 파일의 단순 비교를 한 예제이다.

 

 

 

 

 

 

 

 

 

 

# cat file1

This is a book.

# cat file2

THis is a book.

# diff file1 file2

1c1

< This is a book.

---

> THis is a book.

#

 

 

 

 

 

그리고 diff에 다양한 옵션을 함께 사용할 수 있는데, 이는 다음과 같다.

 

옵 션

기 능

--brief

개략적으로 다른 점을 알려준다.

-c

지정된 형식으로 두 파일의 차이점을 자세히 출력한다.

-d

조그만 변화도 찾도록 하여 더욱 상세한 결과를 출력한다.

-r

두 디렉토리를 서브디렉토리까지 재귀적으로 비교한다.

-s

두 파일이 같을 때 보고한다.

-H

용량이 큰 두 개의 파일을 비교할 때 빠른 비교를 위해 사용한다.

 

다음은 --brief 옵션을 사용한 예이다.

 

 

 

 

 

# diff --brief file1 file2

Files file1 and file2 differ

#

 

 

 

 

 

다음은 c 옵션을 사용한 예이다.

 

 

 

 

 

# diff c file1 file2

*** file1 2013-11-22 08:55:24.000000000 +0900

--- file2 2013-11-22 08:55:24.000000000 +0900

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

*** 1 ***

! This is a book.

--- 1 ---

! THis is a book.

#

 

 

 

 

 

다음은 d 옵션을 사용한 예이다.

 

 

 

 

(위 예제에 -d 옵션을 사용하면 옵션이 없는 경우와 동일한 결과가 출력된다.

 

 

 

 

아래의 예는 다른 예이다)

 

 

 

 

 

# diff d ex_file1 ex_file2

26a27

> Nov 2 10:34:04 file sendmail : sendmail shutdown succeeded

43a45

> Nov 2 10:34:08 file exiting on signal 15

#

 

 

 

 

 

 

 

 

 

 

 

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,017 명
  • 현재 강좌수 :  35,690 개
  • 현재 접속자 :  209 명