본문 바로가기

리눅스

[draft] Shell 스크립트에서 CRLF와 LF 문제를 해결하는 방법

728x90

Shell 스크립트에서 CRLF(Carriage Return Line Feed)와 LF(Line Feed) 문제를 해결하는 방법

CRLF는 Windows 시스템에서 사용되는 줄 끝 표시 방식이고 LF는 Unix/Linux 시스템에서 사용됩니다.

CRLF와 LF란 무엇인가?

CRLF(Carriage Return, Line Feed) : Windows에서 일반적으로 사용되는 개행 문자입니다. 문자열의 끝을 나타내는 데 CR(\r)과 LF(\n) 두 개의 문자를 사용합니다.

LF(Line Feed) : Unix/Linux 시스템에서 일반적으로 사용되는 개행 문자입니다. 문자열의 끝을 나타내는 데 LF(\n) 한 개의 문자를 사용합니다.

문제 확인하기

일반적으로 CRLF 문제는 스크립트를 실행할 때 다음과 같은 오류 메시지가 나타나는 것으로 확인할 수 있습니다.

  • bash: command not found
  • unexpected end of file
  • bad interpreter: No such file or directory

해결 방법

1. dos2unix 사용하기

dos2unix 명령어는 CRLF를 LF로 변환하는 데 사용할 수 있는 유틸리티입니다. 이 도구는 일반적으로 Linux 배포판에서 기본적으로 제공되거나 패키지 관리자를 통해 설치할 수 있습니다.

 

설치

  • Ubuntu/Debian 기반 시스템
sudo apt-get install dos2unix
  • Red Hat/CentOS 기반 시스템
sudo yum install dos2unix

변환 실행

  • CRLF를 LF로 변환합니다.
dos2unix your_script.sh
728x90

2. sed 사용하기

sed 명령어를 사용하여 파일에서 CRLF를 제거할 수도 있습니다.

 

your_script.sh 파일에서 줄 끝의 \r (CR)을 제거합니다.

sed -i 's/\r$//' your_script.sh

3. tr 사용하기

tr 명령어를 사용하여 CRLF를 LF로 변환할 수도 있습니다.

 

your_script.sh에서 CR을 제거하여 fixed_script.sh에 저장합니다.

tr -d '\r' < your_script.sh > fixed_script.sh

4. 편집기 사용하기

일부 텍스트 편집기는 파일의 줄 끝 형식을 변경할 수 있는 기능을 제공합니다.

예를 들어, VS Code, Sublime Text, Notepad++와 같은 편집기를 사용할 수 있습니다.

 

VS Code

  • 파일을 열고 오른쪽 하단에서 CRLF를 클릭하여 LF로 변경합니다.

Notepad++

  • 메뉴에서 Edit > EOL Conversion > Unix (LF)를 선택합니다.

Shell 스크립트의 CRLF와 LF 문제를 해결할 수 있습니다.

 

728x90