How are the Line feed character different between Linux and Windows?
✅ ASCII code
리눅스와 윈도우 텍스트 줄바꿈 개행 문자가 어떻게 다른지 알아보기 전에 아스키 코드에 대해서 먼저 알아야 합니다.
- Hex : 16진수 ( hexadecimal )
- Dec : 10진수 ( decimal )
- Oct : 8진수 ( octal )
아스키코드(ASCII 코드)는 컴퓨터에서 문자와 숫자를 표현하기 위해 사용되는 일련의 표준화된 숫자 코드입니다. "ASCII"는 "American Standard Code for Information Interchange"의 약자이며, 미국 표준 협회(ANSI)가 개발하였습니다.
아스키코드는 Non-Graphics 문자와 Graphics 문자의 인코딩 규칙을 정의한 테이블입니다. Non-Graphics 문자는 back space처럼 그래픽으로 표현되지 않는 문자입니다. 0부터 127까지의 숫자를 사용하여 영문 알파벳, 숫자, 구두점, 특수 문자 등을 나타냅니다. 각각의 숫자는 해당하는 문자 또는 기호와 매핑되어 있습니다. 예를 들어, 10진수로 65는 대문자 'A'를 나타내며, 10진수로 97은 소문자 'a'를 나타냅니다. 저희가 알아볼 것은 줄바꿈이므로 10진수로 10, 13에 해당하는 CR과 LF에 대해 알아보겠습니다.
✅ 개행 문자
개행 문자란 줄바꿈(new line) 문자를 의미합니다. 컴퓨터에서 줄바꿈 문자를 나타내는 제어문자는 아래와 같이 2가지가 있습니다.
\r
: CR (Carriage Return) 현재 라인의 제일 앞으로 이동합니다. 10진수로 13, 16진수로 0d로 표시됩니다.
\n
: LF (Line feed) 다음 줄로 이동합니다. 10진수로 10,16진수로 0a로 표시됩니다.
위 두 개의 개행 문자를 통해서 텍스트에서 다음 줄로 넘어갈 때 컴퓨터가 인식할 수 있도록 표시하는데 운영체제마다 사용하는 개행 문자가 다릅니다. OS별 사용하는 개행 문자는 아래와 같습니다.
—OS별 개행 문자
- DOS(Windows) :
\r\n
- UNIX 혹은 Linux :
\n
- Mac :
\r
, 이것만으로 CR+LF을 의미한다.
Windows OS를 사용하고 있기 때문에 A 줄바꿈 텍스트를 저장하고 노트패드++로 확인해 보았습니다.
현재 16진수 Hex로 표시되어 있습니다. 대문자 A는 41, /r
은 0d, /n
은 0a로 표시된 것을 확인할 수 있습니다.
이렇게 개행 문자가 다르기 때문에 Git을 통해 형상관리를 할 때 OS가 다를 경우 변경된 코드가 없어 보여도, 개행 문자 때문에 차이가 난다고 표시될 때가 있습니다.
🏷️이미지 출처 및 참고한 사이트
Uploaded by N2T