"diff orig new" 대 "diff new orig" [닫기]

"diff orig new" 대 "diff new orig" [닫기]

2개 파일 비교를 사용하는 경우 diff해당 original파일이 첫 번째 인수로 제공되고 new(수정됨)이 두 번째 인수로 제공됩니다.

diff original new

아마도 이 순서 뒤에 숨어 있는 논리는 왼쪽에서 오른쪽으로의 시간 흐름 규칙을 사용하여 원본을 새 것으로 변환하는 방법을 보여주기 위한 것입니다.

이 논리에 문제가 있습니다. 두 파일을 비교할 때 직관적으로 역 표기법을 사용합니다.

diff new original

이렇게 하면 변경 사항을 확인한 후 이전 파일에 새 파일을 넣어 새 버전으로 "패치"할 수 있습니다.

cat new > original

그러나 "my" 역 표기법을 사용하면 diff에 +삭제 및 -추가 내용이 표시되므로 혼란스럽습니다.

이 문제를 어떻게 해결할 수 있나요?

답변1

매뉴얼 페이지를 잠깐 살펴보면 명시적으로 표현하고 싶다면 --from-file=original및 옵션을 사용할 수 있다는 것을 알 수 있습니다. --to-file=new약간의 입력이 더 필요하지만 필요한 유연성을 제공하고 상황을 명확하게 하는 추가 이점도 있습니다.

diff --to-file=new --from-file=original

원한다면 원하는 순서대로 파일 이름을 가져오고 실행하는 간단한 래퍼 스크립트를 작성할 수도 있습니다.

편집: 이것은 GNU diff용입니다. 그러나 이것이 표준(POSIX) 옵션인지는 확실하지 않습니다.

답변2

간단한 해결책이 있습니다!

다음 스크립트를 작성하세요.

if [ "$#" -ne 2 ]; then
    echo "USAGE: diff2 newfile oldfile"
    exit 1;
fi

diff $2 $1

/binPATH(아마도 또는 ) 의 폴더 중 하나에 저장하고 /usr/bin이름을 diff2로 지정합니다.

이제 다음과 같이 전화할 수 있습니다.

diff2 newfile oldfile, 그러면 다음이 호출됩니다.diff oldfile newfile

관련 정보