일부 코드 스타일 도구는 이것을 권장하며 빈 줄 누락에 대해 경고하는 일부 유닉스 명령 줄 도구를 보았습니다.
빈 줄이 추가 된 이유는 무엇입니까?
\n\n
) 또는 새 줄 을 의미 \n
합니까?
cat
쉘에 파일을 넣으면 이유를 알 수 있습니다. 파일이 내 쉘 프롬프트를 다른 곳 (줄 시작 부분)에 나타나게하면 아마 당신을 미워할 것입니다. ;)
일부 코드 스타일 도구는 이것을 권장하며 빈 줄 누락에 대해 경고하는 일부 유닉스 명령 줄 도구를 보았습니다.
빈 줄이 추가 된 이유는 무엇입니까?
\n\n
) 또는 새 줄 을 의미 \n
합니까?
cat
쉘에 파일을 넣으면 이유를 알 수 있습니다. 파일이 내 쉘 프롬프트를 다른 곳 (줄 시작 부분)에 나타나게하면 아마 당신을 미워할 것입니다. ;)
답변:
텍스트 파일의 마지막 데이터 행이 줄 바꿈 또는 캐리지 리턴 / 줄 바꿈 조합으로 종료되지 않으면 이전 도구가 제대로 작동하지 않습니다. 대신 ^ Z (eof)로 끝나는 라인을 무시합니다.
\n
)을 가정 합니다. Vim과 같은 여러 텍스트 편집기와 여러 컴파일러 (특히 C ++ 및 Python)가 경고를 표시합니다. (C ++의 경우 표준에서 명시 적으로 요구합니다.)
\n\n
.
두 개의 텍스트 파일을 함께 연결하려고하면 첫 번째 파일이 줄 바꿈 문자로 끝나면 훨씬 더 행복해집니다.
텍스트 편집기에서 파일 끝으로 이동할 때 커서 위치가 더 좋다는 사실 외에도.
파일 끝에 줄 바꿈이 있으면 파일이 잘리지 않았는지 간단히 확인할 수 있습니다.
이 같은 추론 다음 파일을 추가 할 경우 인수는 청소기의 차이점에 대해 할 수있는 이유는이 목록에서 허용 쉼표를 후행하는?
다음은 링크 된 리소스에서 복사 (그리고 약간 잘라 내기)되었습니다.
바꾸다:
s = [
'manny',
'jack',
]
에:
s = [
'manny',
'jack',
'roger',
]
diff의 한 줄 변경 만 포함합니다.
s = [
'manny',
'jack',
+ 'roger',
]
후행 쉼표를 생략하면 더 혼란스러운 여러 줄 diff를 이깁니다.
s = [
'manny',
- 'jack'
+ 'jack',
+ 'roger'
]
파일 끝에 빈 줄이 나타나서 입력 스트림에서 표준 판독 값이 언제 판독을 종료해야하는지 알 수 있으며 일반적으로 EOF를 반환하여 종료에 도달했음을 나타냅니다. 대부분의 언어는 EOF 마커를 처리 할 수 있습니다. DOS에서 EOF 마커는 F6 키 또는 Ctrl-Z, * nix 시스템의 경우 Ctrl-D였습니다.
전부는 아니더라도 대부분의 경우 실제로 EOF 마커까지 직접 읽으므로 런타임 라이브러리의 입력 읽기 기능은 더 이상 읽기를 중지해야 할 시점을 알 수 있습니다. 추가 모드를 위해 스트림을 열면 EOF 마커가 지워지고 그 시점에 EOF 마커가 삽입 될 닫기가 명시 적으로 호출 될 때까지 EOF 마커가 지워집니다.
오래된 도구는 빈 줄과 EOF 마커가 필요했습니다. 오늘날 도구는 빈 줄을 처리하고 무시할 수 있습니다.
\r\n
대신 \n
DOS는 ASCIIZ와 ASCII $를 혼합하여 사용합니다. 더 나쁜 것은 나중에 Windows에서 대개 대부분의 텍스트 파일 시작 부분에 BOM (Unicode byte order mark)을 삽입하는 것입니다. 사랑스러운 "고유성"
또한 파일을 수정하고 파일 끝에 일부 코드를 추가하면 diff (적어도 표준 구성의 git diff)는 마지막 행을 변경했지만 실제로 수행 한 유일한 작업은 개행 기호를 추가 한 것으로 나타납니다. 따라서 cvs 보고서는 덜 편리해집니다.
일부 언어는 입력 파일을 입력 줄로 정의합니다. 여기서 각 입력 줄은 캐리지 리턴으로 끝나는 일련의 문자입니다. 해당 문법이 정의되어 있으면 파일의 마지막 유효한 행도 캐리지 리턴으로 종료해야합니다.
텍스트 파일의 정의 때문입니다. 유닉스 환경에서 새 텍스트 파일을 만들면 해당 파일의 내용은 줄 바꿈 문자 '\ n'입니다.
이것이 없으면 파일은 실제로 텍스트 파일로 식별되지 않습니다. 이제이 텍스트 파일에 코드를 추가 하면 텍스트 파일 자체 를 정의하는 이 새 줄을 제거하지 않습니다 .