POSIX는 텍스트 파일을 다음과 같이 정의합니다.
0 개 이상의 줄로 구성된 문자가 포함 된 파일입니다. 행은 NUL 문자를 포함하지 않으며 <newline> 문자를 포함하여 길이가 {LINE_MAX} 바이트를 초과 할 수 없습니다. POSIX.1-2017은 텍스트 파일과 이진 파일을 구분하지 않지만 (ISO C 표준 참조) 많은 유틸리티는 텍스트 파일을 조작 할 때 예측 가능하거나 의미있는 출력 만 생성합니다. 이러한 제한이있는 표준 유틸리티는 항상 STDIN 또는 INPUT FILES 섹션에 "텍스트 파일"을 지정합니다.
출처 : http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_403
그러나 내가 명확하지 않은 몇 가지가 있습니다.
텍스트 파일이 일반 파일이어야합니까? 위의 발췌 부분에서 파일은 반드시 일반 파일이어야한다고 명시하지 않습니다
하나의 문자와 하나의 문자 만 포함하는 경우 파일을 텍스트 파일로 간주 할 수 있습니까 (즉, 줄 바꿈으로 끝나지 않는 단일 문자)? 나는이 질문이 이질적으로 들릴지 모르지만 "하나 이상의 문자"대신 "문자"라는 단어를 사용합니다. 다른 사람들은 동의하지 않을 수 있지만 "하나 이상의 문자"를 의미하는 경우 명시 적으로 말해야한다고 생각합니다
위의 발췌에서 "줄"을 참조합니다. 이름에 "Empty Line", "Display Line", "Incomplete Line"및 "Line"이라는 네 개의 정의가 있습니다. "빈", "디스플레이"및 "불완전"을 생략하여 "라인"을 의미한다고 추론해야합니까? 또는 위의 발췌에서 한 줄로 간주되는 것으로 정의 된 네 가지 정의가 모두 있습니까?
이 텍스트 블록 뒤에 나오는 모든 질문은 "문자"가 "하나 이상의 문자"를 의미한다고 추론하는 데 달려 있습니다.
- 파일이 비어 있으면 파일이 하나 이상의 문자를 포함하지 않기 때문에 텍스트 파일이 아니라고 유추 할 수 있습니까?
이 텍스트 블록 뒤에 나오는 모든 질문은 위의 발췌에서 줄이 "줄"로 정의되고 이름에 "줄"이 포함 된 다른 세 가지 정의는 제외되어야한다는 유추에 따라 다릅니다.
"0 줄 이상"의 "0"은 줄 바꾸기로 끝나지 않은 하나 이상의 문자가 포함 된 파일이 여전히 텍스트 파일로 간주 될 수 있음을 의미합니까?
"0 개 이상의 라인"은 단일 "라인"(0 개 이상의 문자와 종료 개행)이 작동하면 마지막 라인이 "불완전한 라인"(하나 이상의 비-라인)이되는 것이 불법임을 의미합니까? 파일 끝에 줄 바꿈 문자)?
"[줄 바꿈 없음] 길이가 줄 바꿈 문자를 포함하여 {LINE_MAX} 바이트를 초과 할 수 없음"은 텍스트 파일의 지정된 "줄"에 허용되는 문자 수에 제한이 있음을 의미합니다. Ubuntu 18.04 및 FreeBSD 11.1의 LINE_MAX는 "2048"입니까?