DIFF(1)

명칭
diff - 2 개의 텍스트 파일의 사이의 차이를 요구한다

서식
diff [options] from-file to-file

해설
diff 의 가장 단순한 사용 방법은, from-file (와)과 to-file 의 2 개의 파일을 지정하는 것입니다. 이 경우, diff (은)는, 그 2 개의 파일의 내용을 비교합니다. 파일명 (으)로서`-'를 지정했을 경우는, 표준 입력으로부터 읽기를 행합니다. 특수한 경우로서 diff - - (은)는 표준 입력을 그것 자신과 비교합니다.

만약, from-file (으)로서 디렉토리를 지정해 to-file 하지만 디렉토리가 아니었던 경우, diff 하 to-file 그리고 지정한 파일명과 같은 이름의 파일을 from-file 의 디렉토리로부터 찾아, 그 파일과의 사이에 비교를 행합니다. 그 반대로, to-file 하지만 디렉토리에서 from-file 하지만 디렉토리가 아닌 경우도, 똑같이 처리합니다. 덧붙여 디렉토리가 아닌 (분)편의 파일에 `-'를 지정할 수 없습니다.

from_file (와)과 to_file 의 양쪽 모두가 디렉토리였던 경우, diff (은)는, 양쪽 모두의 디렉토리내에서 파일명이 같은 파일끼리를 알파벳순서에 비교해 갈 것입니다. 이 때, -r 혹은, --recursive 옵션이 지정되어 있으면, 서브 디렉토리안의 파일도 재귀적으로 비교해 갈 것입니다. diff (은)는, 디렉토리의 실제의 내용을 파일과 같이 비교하지 않습니다. 표준 입력은 이름 하지만 없고``같은 이름을 가진 파일''의 개념을 적용할 수 없기 때문에, 완전 지정한 파일은 표준 입력이어 되지 않습니다.

diff 의 옵션은 - 그리고 시작됩니다. 따라서 통상 from_file (와)과 to_file 하 - 그리고 시작되지 않습니다. 그렇지만 그 자체가 인수이다 -- 의 다음에는, 남겨진 인수가 - 그리고 시작되어 있어도 파일명으로서 취급합니다.

  옵션
GNU diff 의 모든 옵션의 요약은 이하와 같습니다. 대부분의 옵션 (은)는 2 개(살)의 동등한 이름을 가집니다. 1 개(살)은 - 그리고 시작되는 1 캐릭터의 이름으로, 이제(벌써) 1 개(살)은, -- 그리고 시작되는 긴 이름입니다. 복수의 1 캐릭터의 옵션 (인수를 가지지 않는 경우)은, 1 개의 캐릭터 라인에 정리해 버려 상관하지 않습니다. 즉 -ac 하 -a -c (와)과 동등합니다. 긴 이름의 옵션은 그 이름의 접두사가 일의적으로 정해지면 어떤 생략에서도 할 수 있습니다. 꺾쇠 괄호 ([ (와)과 ]) (은)는, 옵션이 생략 가능한 인수를 가지는 것을 나타냅니다.

-lines
    -c 인가 -u (와)과 조합해, 차이점의 전후 (context)의 표시행수를 `숫자' 그리고 지정합니다. 이 옵션만으로는, 출력 포맷은 변화하지 않습니다. 이 옵션은 구식 (obsolete)입니다. patch (을)를 잘 일하게 하기 위해서(때문에)는, 적어도 전후 2 행씩은 필요합니다.

-a

--text
    텍스트 파일이 아닌 것 같은 것에 대해서도, 모든 파일을 텍스트로 간주해, 1 행씩 비교해 갈 것입니다.

-b

--ignore-space-change
    공백의 수의 차이를 무시합니다.

-B

--ignore-blank-lines
    공행이 들어가 있는 것도 깔고는 부족한등의 차이는 무시합니다.

--brief

-q  파일의 차이의 자세한 것은 표시하지 않고, 차이가 나는지 어떤지만을 보고합니다.

-c  ``context output format''를 사용합니다.

-C 행수

--context[=행수]
    ``context output format''를 사용합니다. 불일치의 행의 전후에,`행수' 그리고 지정한 행수만큼 표시합니다 (context). patch (을)를 잘 일하게 하기 위해서(때문에)는, 적어도 2 행의 context 가 필요합니다.

--changed-group-format=format
    if-then-else 형식의 양쪽 모두의 파일로부터 다른 행을 포함한 부분을 출력한다 위해(때문에) format (을)를 사용한다.

-d

--minimal
    보다 작은 차분을 찾아내는 알고리즘으로 변경합니다. 이 옵션을 지정하면(자) diff 의 처리 속도는 늦어집니다 ( 꽤 늦어질 수도 있습니다).

-D name

--ifdef=name
    프리프로세서 매크로 name 의 조건 기술을 이용한 if-then-else 형식에 merge 해 출력합니다.

-e

--ed
    ed 의 스크립트의 형식에서 출력합니다.

--exclude=pattern

-x pattern
    디렉토리 단위의 비교때, 파일이나 디렉토리명이 pattern 에 매치 했을 경우는, 비교하지 않게 합니다.

--exclude-from=file

-X file
    디렉토리 단위의 비교때, 파일이나 디렉토리명이 file 의 안에 포함되는 패턴에 매치 했을 경우는, 비교하지 않게 합니다.

--expand-tabs

-t  입력 파일의 탭에 의한 위치 조정을 잔돈으로 바꾸지 않게, 탭을 공백에 전개합니다.

-f

--forward-ed
    ed 의 스크립트와 일견 같은 출력을 합니다. 다만, 파일에 나타나는 순서가 다릅니다.

-F regexp

--show-function-line=regexp
    context diff 형식 및 unified diff 형식에 대해, 차분의 블록마다, 차분의 블록에 선행해, 한편 regexp 에 매치 하는 행중에서 가장 블록에 가까운 행을 출력합니다.

-h  아무것도 기능은 없습니다. 통상의 UNIX 의 diff 와의 호환을 위해서(때문에) 있습니다.

-H

--speed-large-files
    작은 차이가 여기저기에 있는 것 같은 큰 파일의 처리를 고속화하는 휴리스틱을 이용합니다.

--horizon-lines=lines
    2 개의 파일의 선두와 말미에 있어서의 공통 부분 중 lines 행을 남긴채로 차분을 검색합니다

-i

--ignore-case
    영대 캐릭터와 소문자의 차이를 무시합니다.

-I regexp

--ignore-matching-lines=regexp
    정규 표현 regexp 에 매치 한 행이 추가 혹은 삭제되고 있어도 무시합니다.

--initial-tab

-T  통상 형식 및 context diff 형식에 대해, 텍스트 선두에 공백 캐릭터는 아니고 탭을 넣습니다. 행에 포함되는 탭이 원과 같은 형태로 보입니다.

-l

--paginate
    출력을 pr 에 통해 페이지부를 행합니다.

-L label

--label=label
    context diff 형식 및 unified diff 형식에 대해, 출력에 부가되는 파일명 대신에, label 그리고 지정한 label를 사용합니다.

--left-column
    2 단조형식에 대해, 2 개의 공통의 행의 왼쪽의 란만을 표시합니다.

--line-format=format
    format (을)를 이용해, 모든 입력행을 if-then-else 형식에서 출력합니다.

-n

--rcs
    RCS 형식의 차분을 출력합니다. -f (와)과 닮아 있습니다만, 각 명령에는 적용한 행수가 붙은 형태가 됩니다.

-N

--new-file
    디렉토리 단위의 비교때에, 다른 한쪽의 디렉토리에만 존재하는 파일에 관계해서는, 다른 디렉토리에서는 하늘의 파일이 있는 것으로서 취급합니다.

--new-group-format=format
    2 번째의 파일에만 존재하는 부분을 if-then-else 형식에서 출력하기 위해서 format (을)를 사용합니다.

--new-line-format=format
    if-then-else 형식에서 2 번째의 파일에만 존재하는 행을 출력하기 위해서 사용한다 format

-o  낡은 전통적인 출력 포맷을 사용한다

--old-group-format=format
    if-then-else 형식에서 1 번째의 파일에만 존재하는 부분을 출력하기 위해서 사용한다 format

--old-line-format=format####
    if-then-else 형식에서 1 번째의 파일에만 존재하는 행을 출력하기 위해서 사용한다 format

-P

--unidirectional-new-file
    디렉토리의 비교에 있어, 2 번째의 디렉토리 밖에 존재하지 않는 파일 (이)가 있으면, 1 번째의 디렉토리에도 사이즈 0 의 파일이 있으면(자) 간주합니다.

-r

--recursive
    디렉토리 단위의 비교때에, 서브 디렉토리가 있으면, 그 부하도 재귀적으로 검색해 비교를 행합니다.

--report-identical-files

-s  파일의 내용이 같았던 때에, 그 취지를 보고합니다.

-S file

--starting-file=file
    디렉토리 단위의 비교때에, file 그리고 지정한 파일명으로부터 실행합니다. 이것은, 일련의 비교 작업을 중단한 후에 도중부터 재개하는데 편리합니다.

--sdiff-merge-assist
    sdiff 작업의 도움이 되는 보충의 정보를 표시합니다. 보통, sdiff 하지만 diff (을)를 실행하려면 이 옵션을 붙이므로, 유저가 직접 이 옵션을 사용할 것은 없습니다.

--show-c-function
    C 의 프로그램을 인식해, 어느 함수로 변경이 있었는지를 표시합니다.

--side-by-side

-y  비교하는 2 개의 파일의 내용을, 옆에 늘어놓아 표시합니다 (side-by-side 형식).

--suppress-common-lines
    side-by-side 형식의 표시로, 같은 내용의 행은 표시하지 않게 합니다.

-u  unified diff 형식을 이용합니다.

--unchanged-group-format=format
    if-then-else 형식에서 변경이 없었던 부분을 출력하기 위해서 사용한다 format

--unchanged-line-format=format
    if-then-else 형식에서 변경이 없었던 행을 출력하기 위해서 사용한다 format

-U 행수

--unified[=행수]
    unified diff 형식으로 합니다. 불일치의 행의 전후에,`행수'로 지정한 행수의 매치 한 행도 표시합니다. `행수'를 생략 했을 경우는 3 행이 됩니다. patch 를 잘 일하게 하기 위해서(때문에)는, 적어도 전후 2 행은 필요합니다.

-v

--version
    diff 의 버젼을 표시합니다.

-w

--ignore-all-space
    비교시에, 수평 방향의 공백은 무시하도록(듯이) 합니다.

-W columns

--width=columns
    side-by-side 형식의 표시로, 1 행의 폭을 columns 그리고 지정한 캐릭터수로 합니다.

환경 변수
환경 변수 DIFF_OPTIONS 하 diff 의 디폴트 옵션의 조를 보관 유지 가능합니다. 이러한 옵션은 최초로 해석되어 명시적인 명령행 파라미터에 의해 덧쓰기됩니다.

사용예
로컬 소스 트리에 대해서 간 변경 (신규 파일을 포함할 수 있다) (을)를 파일에 보존해, (아마 send-pr(1) 프로그램을 사용해) 타인에게 보여지도록(듯이) 하려면 ,

diff -crN foo.orig foo >foo.diff

(와)과 박습니다. 여기서, foo.orig (와)과 foo (은)는, 디렉토리 계층에서 만나도 괜찮습니다 해, 단일 파일이어도 괜찮습니다.

관련 항목
cmp(1), comm(1), diff3(1), ed(1), patch(1), pr(1), sdiff(1)

반환값
비교 결과적으로, 차이가 없었던 경우는 0 을, 차이가 발견되었을 경우는 1 을, 무엇인가 에러가 일어났을 경우는 2 를 돌려줍니다.