Bash(또는 Cygwin)에서 R 명령을 찾을 수 없음

Olorunfemi Akinlua 2024년2월16일
  1. Notepad++로 bash: '\r': command not found 해결
  2. bash: '\r': command not found 해결 dos2unix 사용
  3. bash: '\r': command not found 해결 sed 사용
Bash(또는 Cygwin)에서 R 명령을 찾을 수 없음

bash: '\r': command not found 또는 syntax error near unexpected token $'\r'와 같은 유사한 오류 메시지의 경우처럼 겉으로 보기에 모든 것을 올바르게 수행한 것처럼 보이는 경우에도 명령이 예상과 다르게 작동할 수 있습니다. ‘`.

이러한 오류 메시지가 표시되면 오류 메시지를 이해해야 합니다. 이 경우 커서를 줄의 시작 부분으로 이동하도록 터미널에 지시하는 캐리지 리턴 문자 \r를 처리해야 합니다.

이 문서는 오류 메시지와 이를 해결하는 방법 또는 다시 발생하지 않도록 방지하는 방법을 이해하는 데 도움이 됩니다.

Notepad++로 bash: '\r': command not found 해결

다른 OS는 다르게 작동하며 Windows는 일반적으로 다른 것입니다. 앞에서 말했듯이 \r 문자가 이 오류의 원인입니다.

\r서로 다른 OS에서 다르게 관리되는 줄 바꿈과 관련이 있습니다.

Unix 및 최신 Mac과 달리 Windows는 \n(LF - 줄 바꿈) 및 \r(CR - 캐리지 리턴)을 줄 바꿈 문자 스타일 및 이전 Mac(OS X 이전의 macOS)으로 사용하는 다른 줄 바꿈 스타일을 사용합니다. ).

Unix, Linux 및 Modern Mac은 \n만 사용하여 새 줄을 시작합니다. 이는 터미널이 텍스트를 처리할 때 중요합니다.

따라서 Windows PC(아마도 Cygwin, Git Bash 또는 WSL2 - Linux용 Windows 하위 시스템)를 사용하는 경우 실행하려는 스크립트에 CRLF 문자(\r\n 개행 문자로) Windows의 기본 메모장 편집기에서 볼 수 있습니다.

윈도우 메모장

이것과 Windows 기반 편집기에서 명령을 실행하는 스크립트 또는 파일을 생성했을 가능성이 있으므로 Windows 스타일(또는 CRLF) 줄 끝이 있고 CRLF 문자를 제거해야 합니다.

간단한 해결책은 다음 명령이 표시되지 않도록 Notepad++와 같은 편집기를 사용하여 파일 형식을 Unix 문자 형식 LF로 변경하는 것입니다.

bash: '\r': command not found
syntax error near unexpected token `$'\r'
`fi

OS(Windows 또는 Mac)에서 Notepad++를 사용하여 작업 중인 스크립트를 열고 Windows (CR LF)/Macintosh (CR) 탭을 두 번 클릭하고 Unix(LF)로 변경하여 파일 형식 설정을 변경합니다. .

notepadpluspluss

그런 다음 새로 구성된 스크립트에서 동일한 명령을 실행하면 문제가 발생하지 않습니다.

아래 내용이 포함된 간단한 스크립트 파일로 동일한 문제를 재현해 보겠습니다.

#!/bin/bash

echo "Testing the Carriage Return Character"
echo "Behavior"
echo "Wow! It works"

예상 출력(오류 없음):

Testing the Carriage Return Character
Behavior
Wow! It works

기본 Windows 스타일 엔딩으로 스크립트 파일을 저장했으며 스크립트 파일을 실행한 결과는 다음과 같습니다.

script.sh

여전히 echo 문을 출력하지만 '\r': command not found를 제공합니다. 동일한 파일을 Unix (LF) 형식으로 저장해 보겠습니다.

스크립트 유닉스

이제 오류 메시지가 존재하지 않습니다.

bash: '\r': command not found 해결 dos2unix 사용

터미널(또는 Cygwin 터미널) 내에 있을 때 줄 끝을 변경하기 위해 텍스트 편집기로 이동하고 싶지 않을 것입니다. 여기서 dos2unixbash: '\r': command not found 문제와 함께 발생합니다.

dos2unix를 사용하면 DOS(Windows) 또는 Mac 형식 줄 바꿈에서 일반 텍스트를 스크립트로 파일을 UNIX 형식 줄 바꿈으로 변환할 수 있습니다.

script.sh의 간단한 dos2unix 명령으로 오류 메시지를 해결할 수 있습니다.

dos2unix.exe script.sh

특히 Windows의 Cygwin 터미널에 있고 패키지를 설치하지 않은 경우 명령을 찾을 수 없음이 표시될 수 있습니다.

Linux는 대부분의 일반적인 배포판과 함께 제공되지만, 없는 경우 아래 명령을 사용하거나 설치 가이드를 따르십시오.

sudo apt install tofrodos

macOS에 dos2unix를 설치하려면 MacPorts를 설치한 다음 아래 명령을 사용하거나 Brew를 통한 설치 가이드를 따르십시오.

sudo port install dos2unix

Cygwin에 설치하려면 설치 파일을 클릭하여 기존 설치를 업데이트해야 합니다. 그런 다음 패키지 선택 화면과 검색 표시줄이 표시됩니다.

패키지 선택

검색 표시줄에서 dos2unix를 검색하고 건너뛰기 값을 두 번 클릭합니다(버전 번호가 표시되어야 함). 그런 다음 다음을 클릭하고 설치를 완료합니다.

이제 스크립트에서 dos2unix 명령을 사용해 보겠습니다.

dos2unix

보시다시피 이 명령은 명령 출력에 표시된 대로 script.sh 파일을 Unix 형식으로 변경하고 동일한 스크립트를 실행하면 더 이상 오류 메시지가 표시되지 않습니다.

dos2unix: converting file script.sh to Unix format...

bash: '\r': command not found 해결 sed 사용

sed는 Cygwin을 포함하여 Linux 터미널을 통해 사용 가능한 텍스트를 구문 분석하고 변환하는 데 도움이 되는 Unix 유틸리티입니다. 이를 통해 스크립트에서 문제를 일으키지 않고 후행 \r 문자를 필터링할 수 있습니다.

아래 명령은 \r 문자를 제거하고 일부 RegEx 표현식 및 유틸리티를 사용할 때 발생하는 오류 메시지를 제거하는 데 도움이 될 수 있습니다.

sed -i 's/\r$//' script.sh

귀하의 경우 [script.sh]를 파일 이름으로 바꿀 수 있습니다.

CRLF 스타일의 스크립트 script.sh에서 sed 명령을 사용해 봅시다.

sed

이제 $ '\r': command not found에서 해방되었습니다.

이 세 가지 대안을 사용하면 작업할 때 스크립트 파일을 Unix (LF) 형식으로 저장하여 문제를 쉽게 방지할 수 있습니다. 그러나 우리가 방지할 수 있고 단순히 액세스할 수 있는 파일인 경우 dos2unix 또는 sed 명령을 사용하여 오류를 처리할 수 있습니다.

Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

관련 문장 - Bash Cygwin

관련 문장 - Bash Error