패치의 마지막 줄은 FreeBSD 10.2에서는 실패하지만 GNU에서는 작동합니다.
#!/bin/sh
echo a > f1
printf '\0' >> f1
echo c >> f1
cp f1 f2
echo d >> f2
diff -au f1 f2 > diff
patch < diff
FreeBSD는 이것을 할 수 없나요? 매뉴얼 페이지에는 널 바이트가 언급되어 있지 않습니다.
답변1
patch
텍스트 파일용으로 특별히 설계되었습니다. 보세요xxd
, 바이너리를 패치할 수 있습니다. FreeBSD에서도 작동합니다.
답변2
Null 바이트는 텍스트 파일에서 사용되지 않으므로 이는 드문 제한 사항이 아닙니다. 물론 GNU 패치용 FreeBSD 포트도 있습니다.
맥락을 보려면 FreeBSD의 매뉴얼 페이지를 살펴보십시오.
- 이것이 GNU의 차이점이다,동의하다소스 코드 저장소, 실제로는 약간 낡았습니다(8 년).
- 이것은 GNU 패치가 아닙니다, 다시 동의합니다소스 코드 저장소.
GNU 패치와 FreeBSD 패치는 모두 Larry Wall의 패치 프로그램에서 시작되었지만 전자가 더 광범위하게 변경되었습니다. 특히, GNU 패치는 GNU diff에 의해 출력될 수 있는 내장된 널을 처리하도록 확장되었습니다. 아직도, 심지어저것오래전에 끝났어요(1992년경~에 따르면변경 로그).
어떤 이유로든 FreeBSD 개발자는 이 변경 사항을 병합하지 않았습니다. FreeBSD에서 기능이 필요한 경우 GNU 패치 포트(또는 미리 컴파일된 패키지)를 사용할 수 있습니다. 바라보다신선한 항구요약을 제공합니다.