Ubuntu에서 화살표 키를 누르면 단말기에 "^[A" "^[B" "^[C" "^[D"" 가 표시되는 이유는 무엇입니까?
처음에 윈도에서 Asi C로 작은 프로그램을 작성했고, 지금은 GCC가 내장된 Ubuntu로 컴파일했습니다.
프로그램은 간단합니다.
- 콘솔에서 행을 읽다
scanf()
. - 문자열을 분석하여 계산한다.
하지만 이상한 일이 일어나죠.커서를 이동하려고 하면 4글자가 인쇄됩니다.
- 인쇄 인쇄 "
^[[A
" - 인쇄 인쇄 "
^[[B
" - 인쇄 인쇄 "
^[[C
" - 인쇄 인쇄 "
^[[D
"
어떻게 하면 피할 수 있을까요?
왜 커서를 움직이지 않고 이 4글자를 인쇄합니까?
이는 사용자 계정이 셸에 생성되었기 때문일 수 있습니다.두 가지 방법으로 bash로 변경할 수 있습니다.
퍼마멘트 용액은 -
sudo chsh -s /bin/bash ${username}
이 솔루션을 사용하려면 로그아웃 후 로그인해야 합니다.
임시 솔루션은 ubuntu 서버 유형에 로그인할 때마다 발생합니다.bash
리턴을 누르다
키보드가 실제로 PC에 송신하기 때문입니다(더 정확히 말하면, 키보드에서 실제로 수신한 것을 단말기가 인쇄하는 것입니다). bash
예를 들어, 이러한 값을 가져와 디코딩하고 이동하려는 것을 이해하면 커서(왼쪽/오른쪽의 경우)를 이동하거나 이력을 사용하여 이전 명령을 가져옵니다(위/아래쪽).따라서 프로그램이 마법처럼 화살표 키를 지원할 것으로 기대할 수 없습니다.
다만, 터미널로부터의 표준 입력으로부터의 판독에서는, 벌써 왼쪽 화살표 키와 오른쪽 화살표 키를 서포트하고 있습니다(하지만, 테스트와 확인을 위해서 Linux 를 사용하고 있는 것은 아닙니다).그래서 내 추측으로는 방해되는 다른 문제가 있는 것 같아.한 가지 가능한 원인은 수식 키 중 하나가 고착되어 있는 것일 수 있습니다.ALT, CTRL 또는 SUPER?
osx(mac)에서 오는 사용자는 셸을 다음과 같이 변경해 보십시오.bash
터미널 -> 프리퍼런스 -> 셸이 열리고 -> [ select ]명령어 (완전 경로)
그리고 붙여넣기
/bin/bash
내 생각에 간단한 방법은 그냥 우리가 할 수 있는 것 같아kill %%
백그라운드 프로세스로 인해 이런 일이 종종 발생하기 때문입니다.
MacOS 터미널에서는 대체 화면 스크롤을 선택 해제하면 문제가 사라집니다.아래 기본 설정의 스크린샷을 참조하십시오.
언급URL : https://stackoverflow.com/questions/21384040/why-does-the-terminal-show-a-b-c-d-when-pressing-the-arrow-k
'programing' 카테고리의 다른 글
조건과 일치하는 스트림의 첫 번째 요소를 가져옵니다. (0) | 2022.07.26 |
---|---|
vuex 저장소에 바인딩된 Vue 3 확인란이 선택 해제된 후 확인되지 않음 (0) | 2022.07.18 |
Vue CLI 프로젝트가 vue.config.js를 읽지 않음 (0) | 2022.07.18 |
CSS에서 Vue CLI 빌드 운영 변경 불투명도 (0) | 2022.07.18 |
Vue - 객체 어레이를 자세히 감시하고 변경을 계산하고 있습니까? (0) | 2022.07.18 |