Reminiscence

리눅스와 윈도우가 인식하는 \n(개행문자)에는 차이가 있다.

윈도우는 엔터키를 눌러 개행문자입력할 경우 해당 개행문자는  Carriage Return(CR)과 Line Feed(LF)가 함께 들어가게 된다. 즉, CR과 LF가 함께 들어가야만 하나의 라인이 끝난것으로 인식을 하는것이다.

하지만 리눅스는 Carriage Return(CR) 하나만으로 윈도우의 CR+LF기능을 함께 처리 한다.
따라서 윈도우에서 작성한 텍스트 파일 또는 소스파일을 그대로 Linux 시스템에 올리게 되면 해당 파일이 정상적인 작동을 하지 않는 경우가 발생 할 수 있는 것이다.

이는 윈도우에서 작성할때 입력된 CR은 VI에서 인식이 되나 LF가 인식이 되지 않기 때문이며, LF코드값을 삭제해 주면 정상적인 사용이 가능하다.

LF 코드값은 리눅스에서는 Vi 라는 에디터 프로그램을 이용하여 간단히 수정할 수 있다.

Vi에서 해당 파일을 오픈할때 그냥 오픈할 경우 LF값이 보이지 않으므로 바이너리(Binary)로 열어 코드값을 치환한다.


Ex ) vi -b 파일명


이걸 몰라 삽질을 20분!!! ㅜ_ㅜ 완전 안습쓰나미다... ㅜ_ ㅜ


PS. vi -b 파일명으로 열었을때 ^M 문자가 보이는 경우 정상적으로 스크립트가 실행되지 않을때가 있습니다. 이럴땐 ^M 문자를 없애야 하는데 이걸 어떻게 없애야 할지 걱정스러울 때가 있을 것 입니다. (아시는 분은 패에에에스~ ~)

vi에서 제일 아래 행으로 내리세요 (Shift + G)
: 를 누르셔서 실행창을 띄우신 후 아래와 같이 입력 하시면 됩니다.

: 1, s/^M//g
여기서 ^M을 입력하는 방법은 Ctrl키를 누르신 상태에서 V와 M을 순서대로 누르시면 입력이 가능 합니다.
신고

댓글 0개가 달렸습니다.