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
/bin
PATH(아마도 또는 ) 의 폴더 중 하나에 저장하고 /usr/bin
이름을 diff2로 지정합니다.
이제 다음과 같이 전화할 수 있습니다.
diff2 newfile oldfile
, 그러면 다음이 호출됩니다.diff oldfile newfile