dos2unix가 기본적으로 특수 문자가 포함된 파일 변환을 중단하는 이유는 무엇입니까?

dos2unix가 기본적으로 특수 문자가 포함된 파일 변환을 중단하는 이유는 무엇입니까?

매뉴얼 페이지 상태 dos2unix:

Binary files are automatically skipped, unless conversion is forced.

...

-f, --force
    Force conversion of binary files.

특수 기호(예: 수직 탭)가 포함된 파일에서 이 플래그 없이 실행하면 dos2unix다음 메시지와 함께 실패합니다.-f

dos2unix: Binary symbol found at line 123
dos2unix: Skipping binary file foo.csv

내 질문은 특수 기호가 있는 파일이 발견되면 왜 기본 동작이 dos2unix사용자가 실수했다고 가정하는 것입니까? 사용자가 실제 바이너리에서 이것을 실행하여 손상시킬 수 있다는 것은 단지 조심하기 위한 것입니까?

답변1

이는 텍스트 파일의 두 문자가 DOS/Windows에서 줄 끝으로 사용하고 Unix/Linux 줄 끝으로 대체되어야 한다는 dos2unix것이 알려져 있지만 "이진" 파일에서는 그렇게 명확하지 않기 때문에 수행됩니다 .0x0d0a0x0a

"바이너리" 파일은 실행 파일, 아카이브, 데이터베이스, 알려지지 않은 프로그램의 데이터 파일 또는 앞서 언급한 압축 버전일 수 있습니다. 여기에는 10진수 값을 포함하는 데이터 바이트 쌍 0x0d0a이나 심지어 CPU 명령도 포함될 수 있습니다.short int3338

이 파일을 교체하면 0x0d0a파일이 손상됩니다(작동하지 않게 됩니다).0x0a

이는 일반적으로 좋지 않은 생각이므로 dos2unix기본적으로 수행되지 않습니다.

그러나 Unix 방식은 사람들이 자신이 무엇을 하고 있는지 알고 있다고 가정하고(원한다면 스스로 발을 쏘는 것) dos2unix"바이너리"를 탐지하는 데 완벽하지 않기 때문에 거짓 긍정의 경우 이를 무시하는 것이 가능합니다.

답변2

바이너리 파일에서 실행하시겠습니까? 무작위 희망은 모든 사람이 0x0d0a가져야 하는 것입니까 0x0a? 이는 ASCII 텍스트 파일용으로 설계되었습니다. 유니코드를 처리할 수 있는지는 확실하지 않습니다. 보호 조치로 바이너리 손상을 방지합니다.

관련 정보