POSIX와 SUS(Single UNIX Spec) 모두 라인을 다음과 같이 정의합니다.
<newline>
0개 이상의 비문자와 종료 문자의 시퀀스입니다<newline>
.
많은 배포판에서는 POSIX보다 LSB를 선호합니다. LSB에는 많은 POSIX/SUS 표준이 포함되어 있지만 전부는 아닙니다.
LSB v4.1을 사용하면 여전히 NEWLINE 문자로 줄을 종료해야 합니까?
답변1
~에서"범위" 장:
LSB(Linux Standard Base)는 애플리케이션 컴파일을 위한 시스템 인터페이스와 설치 스크립트를 지원하는 최소 환경을 정의합니다. 그 목적은 LSB 호환 대용량 애플리케이션을 위한 통일된 산업 표준 환경을 제공하는 것입니다.
[...]
LSB는 주로 바이너리 인터페이스 정의입니다. 애플리케이션에 사용 가능한 모든 소스 수준 API가 이 사양에 포함되는 것은 아닙니다.
표준 유틸리티(일부 확장 제외)의 동작과 관련된 대부분의 사항과 기본 용어 정의 등 LSB에서 정의되지 않은 사항은 POSIX 표준(일부 확장 제외)을 참조합니다.규범적인LSB에 대한 참조(예: LSB는 POSIX 위에 구축됨)
POSIX 표준우리에게 말해주세요하나철사예
<newline>
0개 이상의 비문자와 종료 문자의 시퀀스입니다<newline>
.
이는 LSB 4.1을 준수하는 시스템에서도 텍스트 줄이 개행 문자로 끝나야 함을 의미합니다.
답변2
POSIX
귀하는 이 요구 사항의 결과를 오해한 것 같습니다 .
줄바꿈으로 끝나지 않는 것은 줄이 아닙니다.
예를 들어, wc
파일에 줄 바꿈이 전혀 포함되어 있지 않으면 Linux에서도 0줄이 보고됩니다.
추가한 새 질문은 특정 사용 사례와 그에 따른 문제에 대해 묻기 때문에 첫 번째 질문과 약간 다르게 보입니다.
첫째, 줄 바꿈으로 끝나는 긴 파일은 Linux와 관련이 없는 다른 문제를 일으킬 수 있습니다. C 포함 파일이 줄 바꿈으로 끝나지 않는 경우 C 소스의 다음 줄 텍스트가 처음에만 예상대로 작동하면 파일 C 소스의 #include가 실패할 수 있습니다.
또한 일부 프로그램은 줄 바꿈 문자로 끝나지 않는 경우 파일의 마지막 줄을 무시합니다.
nul
SCCSv4 및 SCCSv5와 같은 소프트웨어는 파일에 바이트가 포함되어 있거나 개행 문자로 끝나지 않는 경우 파일을 "바이너리"로 분류합니다. 이로 인해 최적이 아닌 증분 처리가 발생합니다.
결국 LSB
리눅스에는 바이너리 표준이 있지만 서로 다른 플랫폼 간에 파일이 복사되는데, 이런 면에서는 LSB
차이가 있더라도 POSIX
이는 변하지 않습니다 POSIX
.
UNIX
아마도 이전에는 어떤 편집기도 개행 문자로 끝나지 않는 파일을 만들 수 없었다는 사실을 아는 것이 도움이 될 것입니다. 이러한 파일을 생성할 수 있는 최초의 편집기는 1979년에 있었고 , 그 뒤를 이어 Gosling EMACS
1980년에 VED
출시되었습니다 UNOS
(최초의 UNIX 복제본).
따라서 사용자에게 그러한 파일을 피하도록 지시하는 것이 좋은 습관인 것 같습니다...