Stephen Kitt의 답변은 무엇을 다루고 있으며이 변경이 구현 된 이유 를 다루려고합니다 . 먼저 누군가 줄 바꿈 1을 포함하는 파일 이름으로 인해 결과가 모호 해질 수 있음을 관찰했습니다 . 예를 들어, 다음 출력을 고려하십시오.
d41d8cd98f00b204e9800998ecf8427e foo
25af89c92254a806b2e93fffd8ac1814 bar
이 두 개의 파일 평균이되었다 하는가 foo
와 bar
, 또는 그 파일 이름 만 하나 개의 파일은 "foo\n25af89c92254a806b2e93fffd8ac1814 bar"
? 물론, 후자의 가능성은 거의 없지만 가능합니다. 모호성을 해결하기 위해 개발자는 백 슬래시 ( \
)를 사용하여 줄 바꿈을 피하기로 결정했습니다 . 그러면 출력이 구별됩니다. 그러나 다음과 같은 추가 모호성이 있습니다.
764efa883dda1e11db47671c4a3bbd9e foo\nbar
이 파일 이름에 줄 바꿈 또는 백 슬래시 뒤에 n
? 가 포함되어 있습니까? 이 문제를 해결하려면 백 슬래시도 이스케이프 처리해야합니다.
764efa883dda1e11db47671c4a3bbd9e foo\\nbar
마지막으로 파서 가 이스케이프가 수행되었는지 \\
쉽게 감지 할 수 있도록 이러한 이스케이프가 포함 된 각 출력 행 앞에 추가하기 로 결정했습니다 . 아마도 이것은 구문 분석기가 이스케이프 버전 과 비 이스케이프 버전 (GNU 이외)의 출력을 처리 할 수 있도록하기 위해 수행 된 것 입니다. 또한이 플래그는 필요하지 않은 경우 "비용이 많이 드는"탈출을 수행 할 필요가 없음을 의미합니다. 이 구문 분석 자체 의 예를 볼 수 있습니다 (링크 된 버전의 382 행).md5sum
md5sum.c
1 바이 개행 I 캐릭터 의미 \n
때때로 구체적이라 바꿈 또는 LF를 ; 참조하십시오 md5sum.c
.
*sum
유틸리티 (md5sum
예 : e, gsha1sum
등과 같은 제품군 )는 동일합니다.