Linux 터미널에서는 "cat > file.txt"를 사용하여 한 번에 한 줄씩 파일을 생성합니다.
줄당 삭제 키는 작동하지만 화살표 키는 줄에서 왼쪽과 오른쪽으로 이동하는 대신 이스케이프 코드를 삽입하는 것으로 나타났습니다.
왜 이런거야? 기본적인 단말기 조작에 왼쪽, 오른쪽 화살표 키를 사용할 수 없는 이유가 있나요? 나는 이것을 할 수 있는 GNU readline과 같은 것이 있다는 것을 알고 있지만 내 질문은 그것과 아무 관련이 없습니다.
답변1
터미널 드라이버의 라인 편집 기능은 매우 원시적이고아니요여기에는 삽입점을 왼쪽과 오른쪽으로 이동하는 것과 같은 작업이 포함됩니다.
그들의 업무에는 다음이 포함됩니다:
- 마지막 문자 제거(
VERASE
/erase
, BackSpace) - 마지막 단어 제거(
VWERASE
/werase
, Control-W) - 전체 줄 삭제(
VKILL
/kill
, Control-U)
또한 여러 키 시퀀스(일반적으로 왼쪽 및 오른쪽 화살표 키로 전송되는 이스케이프 문자)를 특수 작업에 바인딩할 수 없습니다.
물론 유니코드 VERASE
는 VWERASE
지원하지 않습니다. Linux에는 형식적인 IUTF8
플래그(간단한 데이터에 대해 작동하므로 아무것도 없는 것보다 낫습니다)가 있지만 너비가 0인 수정자, 방향 플래그 등에 대해서는 알지 못합니다.
자세한 내용은 stty(1)
및 맨페이지를 참조하세요 .termios(3)