고객사 방문하여 작업 중 접해서 당혹스러운 상황에 다행히도 도움을 받아 해결했지만, 잊지 않도록(?) 기록해두기 ...
1. Check
# vi -b <% file name %>
2. Remove
:%s/^M$//g
Note. '^M' = <Ctrl> + <V> + <M>
Not! '^'+'M'
Windows/DOS : CRLF(Carriage return) 조합으로 줄바꿈을 정의 (커서의 위치를 앞으로 이동)
Unix/Linux/C : LF(Line Feed) 만으로 줄바꿈을 정의 (현재 위치에서 바로 아래로 이동)
이로 인해(개행 방식 차이), 윈도우에서 작성된 것을 Unix/Linux 계열로 올리면 vi로 편집시 ^M이 붙는 경우가 발생함.
- ftp를 통해 전송하면 방식이 텍스트/2진 중 어떤 것을 이용하는가에 따라 달라질 수 있음
-- 텍스트 방식으로 전송하면 데이터 변환이 생겨 '/r/n' > '/n' 으로 됨.
-- 2진 모드로 전송하면 변환이 생기지 않아, 윈도우에서 작성된 파일이 컴파일이 안되거나 script작성 된것이 동작 안할 수 있음
vi:
:%s/^M//g
tr(translate):
tr -d ^M <% file %> <% newfile %>
sed(stream editor):
sed 's/^M//g' <% file %> > <% newfile %>
참조자료:
server-engineer.tistory.com/482
misctechmusings.com/remove-ctrl-m-characters-linux