![§을 통해 bash 프롬프트에서 두 문자를 삭제할 수 있는 이유는 무엇입니까?](https://linux55.com/image/108302/%C2%A7%EC%9D%84%20%ED%86%B5%ED%95%B4%20bash%20%ED%94%84%EB%A1%AC%ED%94%84%ED%8A%B8%EC%97%90%EC%84%9C%20%EB%91%90%20%EB%AC%B8%EC%9E%90%EB%A5%BC%20%EC%82%AD%EC%A0%9C%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
이것은 터미네이터에서 이상하고 매우 구체적인 문제입니다. 터미널 창에 문자 "§"를 입력한 다음 백스페이스를 두 번 누르면 항상 두 문자를 모두 삭제할 수 있습니다.심지어PS1 문자열의 일부인 경우.
재현 단계:
- 터미널에 "§"를 입력하세요.
- 2자를 삭제합니다.
- 반복하다.
답변1
터미널과 애플리케이션 로캘 간의 UTF-8 설정이 일치하지 않는 것 같습니다.
섹션 기호는 ASCII 문자 세트의 일부가 아니므로 UTF-8에서 2바이트로 표시됩니다. 귀하의 터미널이 이와 같이 메시지를 보낼 수도 있지만 애플리케이션 측은 그것이 한 문자만 나타내야 한다는 것을 인식하지 못하고 하나만 인쇄합니다. 명령줄 편집기는 입력한 문자 수를 추적하고 섹션 기호를 두 문자로 간주하므로 해당 문자만큼 백스페이스를 사용할 수 있습니다. 터미널은 그것이 단지 하나라는 것을 알고 이를 하나로 표시하고 백스페이스를 수행합니다.