터미널에서 삭제는 작동하지만 화살표 키는 작동하지 않는 이유는 무엇입니까? [복사]

터미널에서 삭제는 작동하지만 화살표 키는 작동하지 않는 이유는 무엇입니까? [복사]

Linux 터미널에서는 "cat > file.txt"를 사용하여 한 번에 한 줄씩 파일을 생성합니다.

줄당 삭제 키는 작동하지만 화살표 키는 줄에서 왼쪽과 오른쪽으로 이동하는 대신 이스케이프 코드를 삽입하는 것으로 나타났습니다.

왜 이런거야? 기본적인 단말기 조작에 왼쪽, 오른쪽 화살표 키를 사용할 수 없는 이유가 있나요? 나는 이것을 할 수 있는 GNU readline과 같은 것이 있다는 것을 알고 있지만 내 질문은 그것과 아무 관련이 없습니다.

답변1

터미널 드라이버의 라인 편집 기능은 매우 원시적이고아니요여기에는 삽입점을 왼쪽과 오른쪽으로 이동하는 것과 같은 작업이 포함됩니다.

그들의 업무에는 다음이 포함됩니다:

  • 마지막 문자 제거( VERASE/ erase, BackSpace)
  • 마지막 단어 제거( VWERASE/ werase, Control-W)
  • 전체 줄 삭제( VKILL/ kill, Control-U)

또한 여러 키 시퀀스(일반적으로 왼쪽 및 오른쪽 화살표 키로 전송되는 이스케이프 문자)를 특수 작업에 바인딩할 수 없습니다.

물론 유니코드 VERASEVWERASE지원하지 않습니다. Linux에는 형식적인 IUTF8플래그(간단한 데이터에 대해 작동하므로 아무것도 없는 것보다 낫습니다)가 있지만 너비가 0인 수정자, 방향 플래그 등에 대해서는 알지 못합니다.

자세한 내용은 stty(1)및 맨페이지를 참조하세요 .termios(3)

관련 정보