DIFF3(1)

이름
diff3 - 세 개의 파일들 사이에서 다른 점을 찾는다.

사용법
diff3 [-3aeimxAETX] [-L LABEL] [--easy-only] [--ed] [--initial-tab] [--label=LABEL] [--merge] [--overlap-only] [--show-all] [--show-overlap] [--text] MINE OLDER YOUR diff3 [-v] [--help] [--version]

설명
diff3는 세 개의 파일을 비교해서 다른 점을 출력한다. 비교되는 세 개의 파일은 MINE, OLDER, 그리고 YOURS이다. 세 파일 중 최대 한개는 `-' 가 될 수 있는데, 이것은 diff3에게 그 파일에 해당하는 내용을 표준 입력에서 읽어들이라는 뜻이다. 보통 diff3는 작업을 수행하기 위해 diff(1)를 호출한다. 하지만, DIFF 환경 변수를 수정해서 다른 프로그램을 사용할 수도 있다.

옵션

-3, --easy-only
    중첩되지 않는 변화만 출력하라는 점을 제외하고는 -e와 비슷하다.

-a, --text
    텍스트 파일이 아닌 것같이 보이더라도 모든 파일을 텍스트 파일로 취급하고, 이것들을 한줄 한줄씩 비교하게 한다.

-e, --ed
    OLDER 를 기준으로 YOURS 와 다른 점을 MINE 에 적용시키기 위한 ed 스크립트를 만든다.

-i  System V 호환성을 위해 ed 스크립트 끝에 `w'와 `q' 명령을 추가한다. 이 옵션은 반드시 -AeExX3 옵션 중 하나와 함께 쓰여야 하며, -m 옵션과는 함께 쓰일 수 없다.

-m, --merge
    첫번째 파일에 edit 스크립트를 적용하고, 결과를 표준 출력으로 보낸다. diff3에서 ed로 파이핑하는 것과는 달리, 이 작업은 이진 파일이나 종결되지 않은 줄에 대해서도 동작한다. edit 스크립트 옵션이 지정되어 있지 않으면 -A 옵션으로 가정하고 수행한다.

-x, --overlap-only
    -e 옵션과 비슷하지만, 중첩된 변화만을 출력한다.

-A, --show-all
    OLDER 를 기준으로 YOURS 와의 차이점을 MINE 에 통합시킨다. 이때 모든 중첩된 변화는 괄호 줄로 묶어놓는다.

-E, --show-overlap
    -e 옵션과 비슷하지만, 첫번째와 세번째 파일의 중첩된 차이점을 묶는 괄호 줄을 보여준다. -e 옵션과 같이 사용했을 때, 중첩된 차이점은 아래와 같은 형식으로 나온다.

    <<<<<<< MINE
    lines from MINE
    =======
    lines from YOURS
    >>>>>>> YOURS

-L LABEL, --label=LABEL
    -A, -E, -X 옵션에서 사용되는 괄호 출력을 위해 LABEL 라벨을 사용한다. 이 옵션은 세개의 입력 파일에 대해 각각 한번씩 적용시켜야 한다. 기본 라벨은 입력 파일의 이름이다. 그래서 diff3 -L X -L Y -L Z -m A B C 명령은 diff3 -m A B C 명령과 같은 동작을 하지만, 출력에서 입력 파일의 이름이 A, B, C 대신 X, Y, Z로 붙게 된다.

-T, --initial-tab
    일반 형식에서 각 줄 앞에 두개의 빈칸 대신 탭을 출력한다. 이것은 각 줄을 탭으로 정렬하기 위해 사용된다.

-X  -E와 비슷하지만, 중첩된 변화만을 출력한다. 다른 말로, -x와 비슷하지만, -E 옵션에서처럼 차이점을 괄호로 묶는다.

--help
    사용법을 표준 출력에 보여주고, 종료한다.

-v, --version
    diff3의 버전 정보를 출력한다.

출력 형식
각각의 차이를 나타내는 텍스트 블럭은 `===='로 표시된 줄로 시작한다. 세 파일의 차이를 나타내는 블럭에서는 단순한 `====' 갖고, 두 파일의 차이를 나타내는 블럭에서는 `1', 2', `3' 중 한쪽에 그 차이가 나는 파일을 나타내기 위해 추가된다. 각 블럭에는 2개, 또는 3개의 입력행 세트가 포함되어 각각의 행 세트가 어느 파일에서 나온 것인지 나타내는 1개 또는 2개의 명령어가 앞에 나오게 된다. 기본 동작에서는 입력행 앞에 2개의 빈칸이 붙어 명령어와 구별할 수 있게 되어 있다. `-T' 옵션이 설정되면, diff3는 빈칸 대신 탭을 사용하므로 입력에 있던 탭에 의한 자리수가 그대로 보존된다.

  명령어 형식

FILE:La
    이 블럭은 FILE의 L 행 다음에 나타나야 할 것으로, 그 파일에는 존재하지 않는다. 이 파일을 수정해 다른 파일과 같게 하려면, 다른 파일에서 블럭을 가져와 추가해야 한다. 예를 들어 `1:11a'은 이 블럭은 첫번째 파일의 11 행 다음에 나와야 할 것으로 첫번째 파일에는 포함되지 않은 것 말한다.

FILE:Rc
    이 블럭에는 FILE의 행 범위 R이 포함되어 있다. 행 범위 R은 2 개의 행 번호를 쉼표로 단락지은 것이다. 숫자가 하나라면 한 줄 범위라고 해석된다. 이 파일을 편집해 다른 파일과 같게 하려면, 그 행 범위를 다른 파일로부터 가져와 변경해야 한다. 예를 들어, `2:11,13c'은 이 블럭이 두번째 파일의 11-13 행의 내용을 포함한다는 의미이다.

    입력행 묶음의 마지막 행이 개행으로 끝나지 않은 경우는 출력의 다음 행이 `\'로 시작되므로 개행으로 끝나는 경우와 구별할 수 있다.

진단
diff3는 아래 값 중 하나를 반환하고 종료한다.

0   diff3가 성공적으로 종료되었으며, 중첩된 변화(충돌)을 찾지 못했다.

1   충돌이 발견되었다.

2   오류가 발생했다.

관련 항목
cmp(1), comm(1), diff(1), ed(1), patch(1), sdiff(1).

주의
Report bugs to bug-gnu-utils@gnu.org. Page updated by Ragnar Hojland Espinosa <ragnar@ragnar-hojland.com>

번역
한글 Manpage 프로젝트 (http://man.kldp.org) 2004년 3월 24일