BASH: �ls: 오류 입력 'ñ'에서 명령을 찾을 수 없습니다.

BASH: �ls: 오류 입력 'ñ'에서 명령을 찾을 수 없습니다.

실수로 "ñ"(모든 명령 예상)를 입력한 다음 이를 제거하고 올바른 문자를 입력하면 출력에 특수 문자가 포함된 명령이 반환됩니다. 분명히 쉘이 명령을 인식하지 못하므로 주의해서 다시 입력해야 합니다. 다시 입력하지 않으려면 "ñ" 문자를 입력하세요.

예를 들어

Wrong typing       @tachomi:~$ ñs
Correct typing     @tachomi:~$ ls
Output             �ls: command not found
  • 잘못된 문자를 제거했기 때문에 이런 현상이 발생하는 이유는 무엇입니까?
  • 이 문제를 어떻게 해결할 수 있나요?

ñ , '이런 종류의 문자 등은 쉘과 호환되지 않기 때문에 "메모리"가 인식하지 못하는 것을 유지한다고 생각 하지만 왜 이런 일이 발생하는지 확인하고 싶습니다.

나는 bash 쉘을 사용하고 있습니다

답변1

멀티바이트 인코딩(아마도 UTF-8)을 이해하는 터미널(또는 터미널 에뮬레이터)이 있지만 셸은 그렇지 않습니다. 환경 변수를 LANG로 설정 C.UTF-8하거나 실행 locale -a하여 다른 가능한 값을 찾아보세요.

답변2

모든 도움 덕분에 이 문제를 해결하는 방법을 찾을 수 있습니다.

주요 문제는 UTF-8 인코딩으로 인한 것이며 서버가 주석에 명시된 대로 구성되지 않았습니다.

댓글 인용:

[@르마노]:에서 UTF-8ñ하나입니다2바이트성격

[@jimmij]:어떤 이유에서인지 백스페이스는 그 중 하나만 제거합니다.

[@aecolley]:환경 변수를 LANG다음으로 설정해 보세요.C.UTF-8

다음과 같이 수정되었습니다.

Find your current LANG    $ locale -v | grep 'LANG='
Output                    LANG=en_US
Change                    $ sudo LANG=en_US.UTF-8
or
Change                    $ sudo vim /etc/default/locale
Edit                      ~LANG="en_US.UTF-8"

터미널 세션을 다시 시작하십시오.

답변3

다음 코드 줄을 실행할 수 있습니다.

if [[$(locale -v | grep 'LANG=') != *.UTF-8]]; then sudo $(locale -v | grep 'LANG=').UTF-8; fi

해당 문자 코드가 아직 존재하지 않는 경우 현재 문자 코드 버전 UTF-8으로 문자 코드를 설정합니다 . UTF-8이런 식으로 쉘은 UTF-8 문자를 이해하고 이를 올바르게 백스페이스합니다.

관련 정보