리눅스 vi 에디터에 있는 ^M문자 한번에 지우기 ( AWS / EC2 / Linux / Jenkins )
🌜 Server/AWS & Linux

리눅스 vi 에디터에 있는 ^M문자 한번에 지우기 ( AWS / EC2 / Linux / Jenkins )

안녕하세요. 그린주입니다 ๑'ٮ'๑

오늘도 힘차게 시작해보겠습니다!

 

개요

이번 글에서는 리눅스 vi 에디터에 있는 ^M문자를 한 번에 지우는 방법을 공유하려고 합니다.


목차

^M문자가 생기는 이유

^M문자 제거


^M문자가 생기는 이유

리눅스에 있는 sh파일을 젠킨스 Execute shell에서 실행시켰더니 이런 에러 메시지가 나왔습니다. 어떻게 해결해야 될까요?

/bin/bash^M: bad interpreter: No such file or directory

이것은 윈도우에서 스크립트 파일을 생성했거나 수정하고, 리눅스에서 실행했을 때 나타나는 오류입니다.

 

정확히는 줄 끝(줄 바꿈)을 의미하는 개행 문자가 달라서 발생하는 문제이다. 리눅스는 개행 문자가 LF = ‘\n’ = 0x0A이고, 윈도우는 CRLF = ‘\r’ + ‘\n’ = 0x0 D 0x0A인데, 파일 안에 LF와 CRLF가 섞여 vi 에디터는 CRLF를 ^M문자로 표시하기 때문입니다.

 

문제 해결은 간단합니다. vi의 바이너리 모드로 들어가면 ^M문자가 보입니다. 이것을 지워주면 에러는 없어집니다.

$ vi -b 파일명

윈도우 crlf.txt
리눅스 vi crlf.txt
리눅스 vi -b crlf.txt


^M문자 제거

아래 명령어를 수행하면 ^M 문자가 한 번에 제거됩니다.

//아래 ^M은 (Ctrl + v + m)을 입력해야 합니다.
:%s/^M//g

 

명령어를 작성 중 모든 ^M문자에 강조 표시되는 것을 볼 수 있습니다.

 

명령어를 실행하면 총 몇 개가 실행되었는지 확인됩니다.


마무리

이렇게 리눅스 vi 에디터에 있는 ^M문자를 한 번에 지우는 방법 에 대해 적어보았습니다.
다들 성공하셨을까요?? 끝까지 파이팅입니다!


긴 글 봐주셔서 감사합니다!
오늘도 행복한 하루 보내세요 '◡'✿


참고

http://chomman.github.io/blog/linux/binshm-bad-interpreter-no-such-file-or-directory-%EC%98%A4%EB%A5%98-%EB%B0%9C%EC%83%9D-%EC%8B%9C/

http://www.globaltek.kr/how-to-delete-ctrl-m


728x90
728x90