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 문제 발생 시 증상
일반적으로 CRLF 문제는 스크립트를 실행할 때 다음과 같은 오류 메시지가 나타나는 것으로 확인할 수 있습니다.
bash: command not found
unexpected end of file
bad interpreter: No such file or directory
특히 shebang(#!/bin/bash) 줄에 CRLF가 포함된 경우 존재하지 않는 인터프리터로 인식하여 오류가 발생합니다.
CRLF 문제 확인 방법
file 명령어로 확인
file your_script.sh
your_script.sh: Bourne-Again shell script, ASCII text, with CRLF line terminators
- CRLF 사용 중
해결 방법
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
- CRLF → LF 자동 변환
- 파일 내용 손상 없음
- 대량 파일 처리 가능
2. sed 사용하기
sed 명령어를 사용하여 파일에서 CRLF를 제거할 수도 있습니다.
your_script.sh 파일에서 줄 끝의 \r (CR)을 제거합니다.
sed -i 's/\r$//' your_script.sh
- 각 줄 끝의 \r 제거
- GNU sed 기준
- macOS에서는 sed -i '' 필요
3. tr 사용하기
tr 명령어를 사용하여 CRLF를 LF로 변환할 수도 있습니다.
your_script.sh에서 CR을 제거하여 fixed_script.sh에 저장합니다.
tr -d '\r' < your_script.sh > fixed_script.sh
- 원본 파일 유지
- 결과 파일은 LF 형식
4. 편집기에서 변경하기
일부 텍스트 편집기는 파일의 줄 끝 형식을 변경할 수 있는 기능을 제공합니다.
예를 들어, VS Code, Sublime Text, Notepad++와 같은 편집기를 사용할 수 있습니다.
VS Code
- 파일을 열고 오른쪽 하단에서 CRLF를 클릭하여 LF로 변경합니다.
Notepad++
- 메뉴에서 Edit > EOL Conversion > Unix (LF)를 선택합니다.
Shell 스크립트의 CRLF와 LF 문제를 해결할 수 있습니다.
'리눅스' 카테고리의 다른 글
| [draft] NGINX 저장소의 만료된 GPG 키 갱신 방법 (0) | 2026.01.16 |
|---|---|
| [draft] 로컬 IP 및 공인 IP 확인하는 방법 (0) | 2026.01.16 |
| [draft] CentOS 7에서 Google OTP를 설치 및 설정하는 방법 (0) | 2026.01.16 |
| [draft] Ubuntu Server 22.04 LTS를 설치하는 방법 (0) | 2026.01.16 |
| [draft] passwd 명령어 (0) | 2026.01.16 |