Categories: 문제해결

리눅스 ^M 문자 지우는 방법

서로 다른 운영체제간의 텍스트 파일을 전송할 때 (예 : 윈도우에서 리눅스로 파일 업로드) 각 라인의 끝에 ^M 이라는 문자가 포함될 때가 있습니다.

이는 개행 문자를 처리하는 방식이 서로 다르기 때문에 파일을 특정 방식으로 변환하지 않고 그대로 가져오게 되어 발생하게 됩니다. 최근 리눅스에서는 이러한 문제를 대부분 대체해주지만 혹여나 해당 문자가 포함되어 있다면 아래 방법으로 ^M 문자를 지울 수 있습니다.

리눅스 ^M 문자 제거 방법


  1. vi 바이너리 모드로 접근 (^M 개행문자 제거)
    vi -b
    -b 옵션을 붙여 vi를 실행하면 ^M 개행 문자가 제거된 상태로 편집 모드에 진입하게 됩니다.
  2. dos2unix 설치
    dos2unix는 이러한 문제를 해결하기 위한 변환기입니다. ^M 문자가 포함된 파일을 아래 명령어와 같이 사용하여 쉽게 변환이 가능합니다.
    $ sudo yum install dos2unix (또는 sudo apt install dos2unix)
    $ dos2unix [filename] 반대로 unix2dos 명령어를 사용하여 ^M 문자를 추가할 수도 있습니다.
  3. vi 또는 vim 에서 아래 명령어 실행
    vi 또는 vim 에서 ‘ : ‘ 를 입력하여 명령 모드를 실행한 후 아래와 같이 입력합니다.
    :set fileformat=unix (:set ff=unix로 입력해도 됩니다.)
    반대로 :set fileformat=dos 를 입력하면 ^M 을 붙이게 됩니다.
    만약 vi 가 이전 버전이라면, :set textmode 로 시도해보시면 됩니다.
  4. 직접 제거
    마지막으로 vim에서 ^M 문자를 직접 제거하는 방법이 있습니다. 길이가 짧다면 그냥 지우셔도 무관하지만 긴 내용인 경우 정규식을 사용하여 바로 제거할 수 있습니다.
    :%s/^M$//g
    (명령 모드 상태에서 %s/ 까지는 직접 입력한 후 Ctrl + V 과 Ctrl + M을 이용하여 ^M 을 입력해야 합니다.)
JooTC

안녕하세요. 테크놀로지에 관심이 많은 블로거입니다.

Recent Posts

Zalgo 텍스트와 이를 방지하는 방법

인터넷 커뮤니티 사이트에서 게시글이나 댓글에 간혹 장난을 목적으로 작성된 특이한 글자를 볼 수 있습니다. 위…

3주 ago

리눅스 kill, killall 명령어 – 특정 프로세스 종료하기

리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…

3주 ago

JavaScript typeof null이 ‘object’인 이유

JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…

4주 ago

Mocha Error: Resolution method is overspecified. 해결 방법

NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…

4주 ago

윈도우 11 설치 시 Microsoft 계정 로그인 없이 로컬 계정 만들기

언제부턴가 윈도우 11을 처음 설치할 때 마이크로소프트(Microsoft) 계정 로그인을 강제로 요구하게 되었습니다. 물론 마이크로소프트 계정이…

6개월 ago

에어팟 프로 2 케이스 스피커 소리를 완전히 끄는 방법

애플 에어팟 프로 2 (AirPods Pro 2) 케이스에는 스피커가 내장되어 있습니다. 그런데 간혹 아무 것도…

9개월 ago