"diff orig new" 대 "diff new orig"

"diff orig new" 대 "diff new orig"

를 사용하여 두 파일을 비교할 때 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

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

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

답변2

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

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

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

diff $2 $1

/binPATH(아마도 또는 ) 의 폴더 중 하나에 /usr/bindiff2로 저장합니다.

이제 다음과 같이 호출할 수 있습니다.

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

관련 정보