카테고리 없음

CRLF / LF 의 이해

1223gogo 2023. 2. 11. 22:38

이번에 배치 작업을 테스트서버에 배포하면서 발생한 이슈에 대해 공부해보고자 한다.

putty로 잘 작동하던 배치가 배치 프로그램(Batch Program, jFlow라는 배치작업자동화 솔루션을 사용)을 사용하여 수행하니까 적절히 수행되지 않는 문제가 발생하였다.

원인을 분석해본 결과 리눅스 프로그램이 LF만 인식을 하고 CR을 인식하지 못하여 발생한 문제라는 사실을 알게되었다.

CR, LF 란?

  • CR : Carriage Return (\r)
  • LF : Line Feed(\n)

타자기를 사용하던 시기에 줄바꿈을 위해 사용하던 방식이다. 

 

CR : 커서를 맨 왼쪽으로 당겨주는 동작이다.

LF : 종이를 한 줄 올려 줄을 바꿔주는 동작이다.(타자기의 경우에는 커서는 그대로 있고 줄만 바뀐다.)

 

윈도우 : CRLF(\r\n)가 Default

Linux, Unix : LF(\n)가 Default

 

워드패드에서 줄바꿈이 CRLF로 작성되어있는 쉘 스크립트를 발견하고 LF로 바꾼 후 수행하니 잘 되는 것을 확인했다.

 

그렇다면 왜 Putty에서는 오류가 발생하지 않았을까?

아래 Putty의 위키백과에 따르면 마이크로소프트 윈도우용으로 작성되었다고 하니 CRLF로 인식을 하여 오류가 발생하지 않았을 수도 있겠다고 생각했다.

PuTTY는 본래 마이크로소프트 윈도우용으로 작성되었으나 다른 다양한 운영 체제에도 포팅되었다. 
공식 포팅은 일부 유닉스 계열 플랫폼에서 사용할 수 있으며 클래식 맥 OS와 macOS으로의 포팅을 추진하고 있다. 
심비안[6][7], 윈도우 모바일과 같은 운영 체제에 대한 비공식 포팅도 존재한다.

 

배치 개발을 위해 쉘 스크립트(Shell Script)를 만들었다.

 

*쉘 스크립트란? 

.sh 의 확장자를 가지는 파일이다.

bash 언어를 통해 작성한다.