실수로 "ñ"(모든 명령 예상)를 입력한 다음 이를 제거하고 올바른 문자를 입력하면 출력에 특수 문자가 포함된 명령이 반환됩니다. �
분명히 쉘이 명령을 인식하지 못하므로 주의해서 다시 입력해야 합니다. 다시 입력하지 않으려면 "ñ" 문자를 입력하세요.
예를 들어
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 문자를 이해하고 이를 올바르게 백스페이스합니다.