[CS] 새줄 문자 LF, CR

알린의 개발노트·2021년 11월 29일
1

목차


새줄 문자란?

줄의 끝을 나타내는 문자로 개행을 하는 문자, 줄바꿈을 해주는 문자 등 여러 방식으로 정의 할 수 있다. 개행 문자, 줄바꿈문자(line break), EOL(end of line), newline 등 표현 방식도 많다.

새줄 문자의 종류

현재 라인 피드(line feed, LF, '\n', 0x0A), 캐리지 리턴(carriage return, CR, '\r', 0x0D)가 많이 사용된다.

새줄 문자사용 OS
LF유닉스, 맥 OS, 리눅스 등
CRLF윈도우 등
CR9버전 이하 맥 OS

새줄 문자를 왜 설정해야 할까

프로그래밍할 때 이전에 코드를 작업한 환경이 지금 환경과 다를 경우 문제가 발생할 수 있다고 한다. 예를 들면 리눅스에서 작업을 하다가 윈도우에서 작업을 하는 경우 코드에 새줄 문자가 LF에서 CR+LF로 변경되면서 실제 코드는 변경된 게 없지만 의미 없는 커밋이 이루어질 수 있다. 이는 git log를 확인할 때 오해가 발생할 수 있다.

IntelliJ에서 새줄 문자 설정

IntelliJ에서 새줄 문자를 설정하는 방법은 두가지가 있다.

  • IDEA 설정에서 설정하는 방법

    1. Preferences > Editor > Code Style로 들어간다.
    2. General > Line separator에서 원하는 새줄 문자로 설정한다.
      1
  • IDEA 우측 하단에서 설정하는 방법
    IDEA 우측 하단에서 간단하게 설정할 수도 있다. 이곳에서 인코딩 방식과 Tab/space도 설정할 수 있다.
    2

git에서 새줄 문자 설정

core.eof

git에서 새줄 문자 처리 방법을 설정하는 명령어

  • core.eol = native : 시스템 기본 새줄 문자를 적용한다. 윈도우는 CRLF, 리눅스와 맥은 LF를 사용한다.
  • core.eol = crlf : CRLF를 사용한다.
  • core.eol = lf : LF를 사용한다.
## 설정 법
$ git config --global core.eol native

global 로 설정하지 않으면 해당 레포지토리만 적용이 된다. 대신 다른 레포지토리에서는 적용이 안되므로 잘 써야한다.

core.autocrlf

git이 checkin, checkout 할 때 새줄 문자 처리 방법을 설정하는 명령어이다. 설정에 따라 git에서 알아서 바꿔준다.

  • core.autocrlf = false : 파일이 CRLF, LF 무엇을 쓰는지 상관없이 그대로 checkin, checkout한다.
  • core.autocrlf = true : checkin 할 때 CRLF이 LF가 되고, checkout 할 때 LF가 CRLF로 변경된다.
  • core.autocrlf = input : checkin시 CRLF를 LF가 되고, checkout할 때는 변경 없이 그대로 받아온다.
## 설정 법
$ git config --global core.autocrlf true

옵션 확인 방법

## core.eol 설정 확인
$ git config --global --list|grep core.eol

## core.autocrlf 설정 확인
$ git config --global --list|grep core.autocrlf

## 모든 config 확인
$ git config --list

git config --list 명령을 하면 참 많은 옵션이 출력된다. 여기서 core.eol옵션과 core.autocrlf를 global로도 설정하고 로컬로도 설정하면 같은 옵션이 여러 개가 있기도 하다.

3

이렇게 같은 옵션이 여러 개인 이유는 git config 명령어를 입력하면 .git/config와 /etc/gitconfig등 local config와 global config가 모두 보여지기 때문이다. 우선순위는 local config인 더 뒤에 있는 옵션이 적용된다.

새줄 문자를 직접 확인하는 방법

리눅스에서 cat -e 명령어를 이용하여 새줄 문자를 직접 확인할 수 있다. 각 라인의 맨 뒤 문자에 붙는 마크로 확인이 가능하다.

새줄 문자특수 문자
LF$
CR^M
CRLF^M$

4

이런 식으로 맨 뒤에 $만 붙어있는 것은 현재 LF로 저장되어 있다는 의미이다.


참고 자료

https://ko.wikipedia.org/wiki/새줄_문자

https://git-scm.com/book/ko/v2/Git맞춤-Git-설정하기

https://emunhi.com/view/201808/15140916890?menuNo=10004

profile
안녕하세요!

0개의 댓글