변군이글루

[리눅스] diff 명령어 본문

서___리눅스

[리눅스] diff 명령어

변군 변군이글루 2013.08.19 17:04

DIFF(1)                            GNU Tools                           DIFF(1)

 

 

 

이름

       diff - 두 파일의 차이점을 비교한다.

 

사용법

       diff [options] from-file to-file

 

설명

       diff 는 두개의 파일을 비교하여 그 차이점을 출력한다. 가장 단순한 경우에

       diff from-file to-file 두 파일의 내용을 비교한다.  파일명 대신 에

       - 를 써 넣으면, 표준 입력을 파일대신 사용한다.  특별한 경우로, diff - -

       는 표준입력 자기 자신을 비교한다.

 

       from-file 이 디렉토리, to-file 은 파일일 때 diff to-file     from-

       file   디 렉토리 안에 있는 to-file 과 같은 이름의 파일을 찾아 비교한다.

       반대의 경우도 마찬가지이다.  이때, - 와는 비교할 수 없다.

 

       from-file to-file 이 모두 디렉토리라면, diff 는 알파벳 순서로 두 

       렉 토 리 안의상응하는 파일을 비교한다.  이때 -r 이나 --recursive 옵션이

       주어지지 않으면 재귀적으로(아래 디렉토리에 대해 다시 명령 적용) 동작 하

         않는다.  diff 는 파일인 것처럼 디렉토리 내에 포함된내용 자체를 비교

       하지는 않는다.  표준 입력은 이름이 없고, ‘‘같은 이름을가진 파일’’의 

       념 을 적용할수 없기 때문에 정확히 지정된파일 이름으로는 사용할 수 없다.

 

       diff 옵션들은 - 로 시작된다. 그래서 보통 from-file to-file -  

       시 작 하지 않는다.  하지만, -- 을 인자로 사용했을 경우, 다른 인자들은 -

       로 시작하더라도 파일 이름으로 취급된다.

 

   옵션

       아래는 GNU diff 에서 쓰이는 모든 옵션들의 요약이다.  대부분의 옵션은 같

         기능을 하는 두 개의이름을 갖는다. 하나는 - 가 앞에 오는 단일 문자이

       , 다른 하나는 -- 이 앞에 오는 긴 이름이다. 부가적인 인자를받지  않 는

       복 수 의 단일 문자옵션은 단일 명령 옵션에 결합될 수 있다.  -ac -a -c

       와 같다. 긴 이름의 옵션은 그 이름의특정 부분만으로 줄여 쓸 수 있다. 

       괄 호  ([ and ]) 는 옵션이 부가적인 인자를 가질 수도 있다는 것을 의미한

       .

 

       -lines 문맥을 lines 줄 만큼 보여준다. (여기서 lines 는 정수이다.)   

              옵 션에서는 특별히 출력 형태를 지정하지 않는다.  이 옵션은 -c

              -u 과 같이 사용하지 않으면 아무런 효과가 없다.  이 옵션은 

              반적으로 잘 쓰이지 않는 옵션이다.  patch 가 제대로 동작하기 위해

              서는 적어도두 줄 이상의 문맥이 필요하다.

 

       -a     텍스트 형태의 파일이 아니더라도, 텍스트 형태의 파일로 인식하고두

              파일을 줄단위로 비교한다.

 

       -b     공백 문자의 양의 차이는 무시한다.

 

       -B     빈 줄의 추가나 삭제는 무시한다.

 

       --brief

              정 확한 차이점을 비교하는 것이 아니라, 단순히 두 파일이 다른가만

              비교한다.

 

       -c     context 출력 형식을 사용한다.

 

       -C lines

       --context[=lines]

              context 출력 형태를 사용해서 lines 줄을 보여준다. 만약 lines 

              지 정되지 않으면, 세 줄을 보여준다.  patch 가 제대로 동작하기 위

              해서는 일반적으로최소한 두 줄의 문맥이 필요하다.

 

       --changed-group-format=format

              if-then-else 형식에서 두 파일 사이에다른 줄을 포함하는 문단을 보

              여줄 때, format 형식을 사용한다.

 

       -d      아주 조그마한 변화라도 찾도록 검색알고리즘을 바꾼다.  이 옵션은

              diff 수행 속도를 아주 느리게 한다.

 

       -D name

              선처리기 매크로 name 을 이용해서, 합쳐진 if-then-else 형식출력을

              만든다.

 

       -e

       --ed   적절한 ed 스크립트 출력을 만든다.

 

       --exclude=pattern

              디 렉토리를 비교할 때, 파일과 하위 디렉토리의 basename pattern

              과 일치하면무시한다.

 

       --exclude-from=file

              디렉토리를 비교할 때, 파일과 하위 디렉토리의 basename file 

              있는 어떤 패턴과 일치하면 무시한다.

 

       --expand-tabs

              입력 파일들의 탭 정렬을 유지하기 위해, 출력에서 탭(tab)을 공백문

              자로 확장시킨다.

 

       -f     ed 스크립트와 비슷하게 출력한다. 하지만, 파일에나타난 순서 대 로

              차이점을 나타낸다.

 

       -F regexp

              context unified 형식에서, 차이가 있는각각의 문단에 대해 regexp

              와 일치하는 앞에 나오는 몇몇 줄의 내용을 보여준다.

 

       --forward-ed

              ed 스크립트와 비슷하게 출력한다. 하지만, 파일에 나타난 순서대 로

              차이점을 나타낸다.

 

       -h      현재 이 옵션은 쓰이지 않는다. 단지유닉스 호환성을 유지하기 사용

              된다.

 

       -H     작은 차이점들이 많은 큰 파일을 빠르게 처리하기 위해 사용된다.

 

       --horizon-lines=lines

              일반 접두사(common prefix)의 마지막 lines 줄과일반 접미사(common

              suffix)의 처음 lines 줄을 제외하지 않는다.

 

       -i     대소문자를 구분하지 않는다. 대문자와소문자를 같게 취급한다.

 

       -I regexp

              regexp 에 맞는 줄의 삽입 혹은 삭제에 대한 변화를 무시한다.

 

       --ifdef=name

              선 처 리기 매크로 name 을 이용해서, 합쳐진 if-then-else 형식으로

              출력한다.

 

       --ignore-all-space

              행을 비교할 때 공백 문자를 무시한다.

 

       --ignore-blank-lines

              빈 줄의 추가나 삭제는 무시한다.

 

       --ignore-case

              대소문자를 구분하지 않는다. 대문자와소문자를 같이 취급한다.

 

       --ignore-matching-lines=regexp

              regexp 에 맞는 줄의 삽입 혹은 삭제에 대한 변화를 무시한다.

 

       --ignore-space-change

              공백 문자의 차이는 무시한다.

 

       --initial-tab

              일반 형태나 context 형태의 출력에서 각 줄의텍스트 앞에 공백 문자

              대신 탭을 출력한다.  줄의 탭의 정렬이 자연스러워지게 된다.

 

       -l     한 페이지씩 보기 위해 pr 을 통해 출력을 한다.

 

       -L label

       --label=label

              context 형식과 unified 형식 헤더에서파일 이름 대신 지정된 라벨을

              사용한다.

 

       --left-column

              두행 출력(side by side) 형식에서 공통적으로나오는 라인은 왼쪽 행

              에만 출력한다.

 

       --line-format=format

              if-then-else  형식에서모든 입력 줄을 출력하는데 format 을 사용한

              .

 

       --minimal

              약간의 차이라도 찾을 수 있도록 검색알고리즘을 바꾼다.   이 것 은

              diff 처리 속도를 느리게, 때론 아주 느리게 만든다.

 

       -n     RCS 형식으로 출력한다.  각 명령이 줄의 수를 지정한다는 것만 제외

              하고는 -f 와 비슷하다.

 

       -N

       --new-file

              디렉토리 비교에서, 어떤 파일이 한 디렉토리에만 있다면다른 디렉토

              리에는 비어었는 파일이 있는 것처럼 비교한다.

 

       --new-group-format=format

              if-then-else 형식에서, 두번째 파일에서 나온 줄의그룹을 출력할 때

              format 을 사용한다.

 

       --new-line-format=format

              if-then-else 형식에서, 두번째 파일에서 나온 줄을출력할 때 format

              을 사용한다.

 

       --old-group-format=format

              if-then-else 형식에서, 첫번째 파일에서 나온 줄의그룹을 출력할 때

              format 을 사용한다.

 

       --old-line-format=format

              if-then-else 형식에서, 첫번째 파일에서 나온 줄을출력할 때 format

              을 사용한다.

 

       -p     차이가 있는 부분이 어느 C 함수 안에 있는지 보여준다.

 

       -P     디렉토리를 비교할 때, 두 개의 디렉토리 중 두번째 디렉토리에만 파

              일이 존재한다면, 첫번째디렉토리에는 사실 파일이 없지만 비어있 는

              파일이 있는 것처럼 비교한다.

 

       --paginate

              페이지 단위로 출력하기 위해 pr 을 통해 출력한다.

 

       -q     두 파일의 자세한 차이점이 비교하는 것이 아니라, 단순히 두 파일이

              다른지만 알려준다.

 

       -r     두 디렉토리를 비교할 때, 모든 하위 디렉토리는 재귀적으 로(recur-

              sively) 비교한다.

 

       --rcs  RCS 형식으로 출력한다.  각 명령이 줄의 수를 지정한다는 것만 제외

              하고는 -f 와 비슷하다.

 

       --recursive

              두 디렉토리를 비교할 때, 모든 하위 디렉토리는 재귀적으 로(recur-

              sively) 비교한다.

 

       --report-identical-files

       -s     비교하는 두 파일이 같을 때만 출력한다.

 

       -S file

              디 렉토리를 비교할 때, file 에서부터 비교를 시작한다.  이 옵션은

              보통 이전 비교에서 중간에 멈췄을 경우, 다시 시작할 때 사용하기에

              적절하다.

 

       --sdiff-merge-assist

              sdiff 를 위해 추가적인 정보를 출력한다.  sdiff diff 를 실행할

              때 이 옵션을 이용한다.  이 옵션은 직접 사용자가 이용하는 옵션 은

              아니다.

 

       --show-c-function

              차이가 있는 부분이 어느 C 함수 안에 있는지 보여준다.

 

       --show-function-line=regexp

              context  형식과 unified 형식 출력에서, 각각의 차이가 있는 단락에

              대해 regexp 과 일치하는 앞의 몇 줄을 보여준다.

 

       --side-by-side

              side-by-side (두 열) 형식으로 출력한다.

 

       --starting-file=file

              디렉토리를 비교할 때, file 에서부터 비교를 시작한다.  이 옵션 은

              보통 이전 비교에서 중간에 멈췄을 경우, 다시 시작할 때 사용하기에

              적절하다.

 

       --suppress-common-lines

              side-by-side 형식 출력에서 같은 내용의 줄은출력하지 않는다.

 

       -t     입력 파일의 탭 정렬을 유지하기 위해, 출력할 때탭 을   공 백  

              (space)로 변환해서 출력한다.

 

       -T     일반 형태나 context 형태의 출력에서 각 줄의텍스트 앞에 공백 문자

              대신 탭을 출력한다.  일반적으로 보이게 하기 위해 각 줄에서 탭 들

              을 정렬한다.

 

       --text  텍 스트 파일이 아닌 파일이더라도, 모든 파일을텍스트 파일로 다루

              , 줄 단위로 비교한다.

 

       -u     unified 출력 형식을 사용한다.

 

       --unchanged-group-format=format

              if-then-else 형식에서, 두 파일에 공통으로 들어있는줄의 그룹을 출

              력하는데 format 을 사용한다.

 

       --unchanged-line-format=format

              if-then-else 형식에서, 두 파일에 공통으로 들어있는줄을 출력할 때

              format 을 사용한다.

 

       --unidirectional-new-file

              디렉토리를 비교할때, 두개의 디렉토리중 두번째 디렉토리에만 파 일

                 존재한다면, 첫번째디렉토리에는 사실 파일이 없지만 빈 파일이

              있는 것처럼 처리한다.

 

       -U lines

       --unified[=lines]

              unified 출력 형태를 사용해서, 문맥의 lines 줄을 보여준다.  만 약

              lines  가 지정되지 않으면, 세 줄을 보여준다.  patch 가 제대로 동

              작하기 위해서는 일반적으로최소한 두 줄 이상의 문맥이 필요하다.

 

       -v

       --version

              diff 의 버전 정보를 출력한다.

 

       -w     각 줄을 비교할 때, 공백은 무시한다.

 

       -W columns

       --width=columns

              side-by-side 출력 형식에서, 한 열을 columns 만큼의 넓이로 출력한

              .

 

       -x pattern

              디렉토리들을 비교할 때, pattern 과 일치하는 basename을 갖는 파일

              과하위 디렉토리를 무시한다.

 

       -X file

              디렉토리들을 비교할 때, file 에 포함된 어떠한 형태와 일 치 하 는

              basename을 갖는파일과 하위 디렉토리를 무시한다.

 

       -y     side-by-side 출력 형식을 사용한다.

 

관련 항목

       cmp(1), comm(1), diff3(1), ed(1), patch(1), pr(1), sdiff(1).

 

진단

       종 료시 0은 차이점이 없는 것이고, 1은 차이점이 있는 것, 2는 문제가 발생

       한 것을 의미한다.

 

번역

       ASPLINUX <man@asp-linux.co.kr>, 2000년 7월 29

       한글 Manpage 프로젝트 (http://man.kldp.org), 2004년 3월 8

 

 

 

GNU Tools                         1993-09-22                           DIFF(1)

 

예)

[root@lamp ~]# diff -Nur a.txt b.txt
--- a.txt 2013-08-19 17:03:52.799591915 +0900
+++ b.txt 2013-08-19 16:59:20.750010797 +0900
@@ -6,3 +6,4 @@
 compat-expat1-1.95.8-8.el6.i686 설치
 compat-libcap1-1.10-1.i686 설치
 compat-libgfortran-41-4.1.2-39.el6.i686 설치
+*** FINISHED INSTALLING PACKAGES ***

 

 

 

 

0 Comments
댓글쓰기 폼