캐리지 리턴(CR)과 라인 피드(LF)란?
프로그래밍을 하다보면 \n으로 되어있는 문자를 만나게 됩니다.
보통 줄내림이라는 뜻인데 윈도우에서 이것저것 하다보면 \n이 아닌 \r\n도 만날 때가 있습니다.
각각의 의미를 살펴보겠습니다.
\r
- Carriage Return(CR) 라는 의미를 가지며 일반적으로는 맨앞으로 이동하라는 뜻입니다.
\n
- Line Feed(LF) 라는 의미를 가지며 일반적으로는 New Line, 즉 새로운 라인이라는 뜻입니다.
캐리지 리턴(CR)과 라인 피드(LF)의 어원 살펴보기
캐리지 리턴은 아래와 같은 타자기(typewriter)에서 따온 단어입니다.
캐리지 리턴의 영문 뜻은 다음과 같습니다.
- Carrage: 운반, 또는 수송이라는 뜻
- Return: 되돌아가다.
위 영상을 글자를 칠때마다 활자가 나와서 종이에 잉크를 찍어내는데요, 이때 글자는 타자기의 중앙에 정확히 찍히고, 종이가 정해진 간격만큼 왼쪽으로 움직이게 됩니다.
이때 종이를 움직이게 만드는 것이 Carriage입니다.
한줄을 다 치게 되면, 종이를 한 줄 간격만큼 위로 올려주고, 글자를 치기 위해 종이를 오른쪽 끝으로 이동시켜야합니다.
종이를 한 줄 간격만큼 위로 올려주는 행위을 LF(Line Feed)라고 하고,
종이를 오른쪽 끝으로 보내주는 행위를 CR(Carriage Return)이라고 합니다.
프로그래밍 언어에서의 캐리지 리턴(CR)과 라인 피드(LF)
과거 타자기를 제어하는 시절에는 작성하고 있는 문서를 한줄 내려서 작업 하기 위해 CR(커서를 맨앞으로 되돌리기)이후 LF(종이를 한칸 올리기)를 해야 했습니다.
즉 한 줄을 내리기 위해서는 CRLF(\r\n) 을 해야 했습니다. 아스키코드로는 13번과 10번입니다.
타자기를 사용하고 나서부터는 굳이 CR과 LF가 모두 필요하지 않고 LF(Line Feed)만 사용하면 의미를 충분히 전달할 수가 있게 되었습니다.
실제 C언어에서도 CRLF대신 LF만 이용하더라도 다음 줄을 표현할수 있고, 실제로 LF만 사용하면 한줄을 내린다는 것을 표현 할 수 있게 되었습니다.
UNIX 기반 vs Window기반
재밌는 사실은 UNIX 관련 OS들에서는 한 줄 내림을 LF만 이용해서 표시합니다.
그런데 WindowOS에서는 한 줄 내림을 전통적인 방식의 CRLF를 쓰게 된다는 점입니다.
이 때문에 내림을 CRLF로만 인식하는 메모장의 경우에는 UNIX 기반 OS로 작성한 문자를 열었을때 모두 한줄로 나오고 깨져 보이는 현상을 겪게 됩니다.
하지만 최신 에디터릴 이용하면 각각의 os를 호환하기 위해 LF나 CRLF를 똑같이 인식하게 됩니다.
참고
CR(\r), LF(\n)이란 무엇인가?
'웹 프론트 > 웹개발 용어 및 개념 정리' 카테고리의 다른 글
JS : blob에 대해 알아보고 data URL을 통해 표현하기 (createObjectURL, removeObjectURL) (5) | 2022.04.08 |
---|---|
HTTP: Content-Type 에 대해 알아보자 (application/json, application/x-www-form-urlencoded, multipart/form-data) (8) | 2022.02.16 |
HTTP 와 TCP의 Keep-Alive (0) | 2018.09.06 |
Key-Frame 애니메이션이란? (0) | 2018.08.09 |
SVG란? (0) | 2018.08.09 |