반응형
03. 윈도우에서 작성한 파일을 리눅스에 올릴 때 생기는 ^M 제거하기
윈도우에서 작성한 파일을 Unix/Linux상에 올리면 개행 문자가 깨져서 ^M가 보이는 경우를 봤을 것이다.
이것은 윈도우에서는 CRLF 가 개행인데 Linux/Unix에서는 LF가 개행이라 나타나는 현상으로 보면 된다.
CR,LF 뜻
- 라인피드(LF : Line Feed) => 현재 위치에서 바로 아래로 이동
- 캐리지리턴(CR: Carriage return) => 커서의 위치를 앞으로 이동
설명은 이정도로 하고 제거 방법을 알아 보자
vi, vim에서 제거하는 방법
:%s/^M//g
# 여기서 ^M은 ^+M이 아니고 Ctrl + v + m 이다.
vi에서 입력한 각 명령어는 아래와 같다.
: # vi, vim에서 명령어를 입력
:%s # 문자열을 치환하겠다는 명령
:%s/^M # ^M 문자열을 치환하겠다
:%s/^M// # ^M 문자열을 공백으로 치환하겠다.
:%s/%M//g # 해당 문서 전체에서 ^M 문자열을 공백으로 치환하겠다.
윈도우에서 Unix / Linux 로 파일 올릴 때 ^M
안생기게 하는 방법
운영체제 마다 줄바꿈 정의가 다르다.
각 운영체제 마다 정의를 살펴 보자.
윈도우/DOS
: CRLF 조합으로 줄바꿈을 정의Unix/Linux/C
: LF 만으로 줄바꿈을 정의
이래서 윈도우에서 작성 된 것을 Unix/Linux 계열로 올리면 vi로 편집했을 때 ^M
이 붙는 것을 확인 할 수 있다.
물론 ftp로 올릴 때 방식이 텍스트/2진 어떤 것을 선택하느냐에 따라 달라질 수 있다.
텍스트 방식으로 올리면 데이터 변환이 생겨 /r/n -> /n 으로 된다.
2진 모드로 올릴때는 변환이 생기지 않아 윈도우에서 작성된 파일이 컴파일이 안되거나 script작성 된것이 동작 안할 수가 있다.
[sftp 전송 방식]
- 텍스트 방식 : 줄바꿈에 대한 변환이 일어남
- 2진 모드 : 줄바굼에 대한 변환이 일어나지 않음 ( 문제가 발생할 수 있다. )
반응형
'IT > [ 기타 ]' 카테고리의 다른 글
[ 기타 ] 02. 마크다운(markdwon) 문법 알아보자 (0) | 2020.08.14 |
---|---|
[ 기타 ] 01. 제안서 작성하기 (0) | 2020.08.14 |
[ 기타 ] IT 프로젝트에 관하여 (0) | 2020.08.12 |