한 번에 한 단어씩 삭제하는 Bash 백스페이스

한 번에 한 단어씩 삭제하는 Bash 백스페이스

내 작업에는 csh를 기본 셸로 사용하는 서버가 있습니다. 나는 bash를 선호하므로 로그인할 때마다 bash.

그러나 어떤 이유에서인지 백스페이스 버튼은 문자만 삭제하는 대신 전체 단어를 삭제합니다. 왜 그런 겁니까? 이것을 어떻게 변경하고 Bksp가 문자별로 문자를 삭제하도록 합니까??

참고로 Shift+Bksp는 문자 단위로 삭제됩니다. 가능하다면 Shift+Bksp로 한 단어씩 삭제하고 싶습니다. 가능한 경우에만.

감사해요

추신: Shift 키를 누르라고 말하지 마세요. 정말 짜증나네요.

답변1

일부 터미널에서는 키 ^h에 대한 문자 번호 8을 보내고 BackSpace일부 터미널 ^?에서는 문자 번호 127을 보냅니다. 많은 터미널 에뮬레이터를 구성할 수 있으며 대부분의 프로그램은 어떤 키를 예상할지 알 수 있도록 구성할 수 있습니다. 당연히 양측이 동의해야 한다.

Stty는 애플리케이션이 터미널 구성을 쿼리할 수 있는 방법입니다. erase = ^?은 서버의 터미널 설명 파일에 터미널이 를 보낼 때 ^?"이전 문자 지우기"를 의미한다고 주장한다는 의미입니다. werase = ^?이는 ^?"이전 단어를 지우다"라는 의미입니다. 이 두 설정 사이에는 모순이 있습니다.

SSH를 통해 로그인하면 SSH 클라이언트는 TERM환경 변수에 입력되는 터미널 이름을 보냅니다. 그런 다음 서버의 프로그램은 데이터베이스(termcap 또는 terminfo라고 함)에서 터미널에 대한 설명을 찾습니다. 이러한 설명이 손상되었거나 어딘가에 있는 구성 파일(예: /etc/profile또는 ~/.login또는 ~/.bashrc)이 잘못된 데이터로 설명을 재정의하는 경우 불일치가 있음을 알 수 있습니다. 예를 들어, 문제의 원인 중 하나는 터미널 에서 백스페이스 키를 보내는 동안 일부 초기화 파일에 명령 stty werase '^?'(단어 지우기를 의미하도록 강제 )이 포함되어 있는 경우입니다.^?^?

이상적으로는 많은 프로그램이 이 정보를 읽으므로 충돌을 해결해야 합니다.

Putty에서는 어떤 키가 전송되는지 구성할 수 ^?있습니다 . 이 설정의 값을 확인하십시오. 아마도 문제를 해결하는 가장 쉬운 방법은 Putty가 에 대해 전송하도록 하고 서버가 해당 설정을 사용하는지 확인하는 것입니다( , 에 넣으면 강제로 설정됩니다).^hBackSpace^hBackSpacestty erase '^h'~/.bashrc

관련 정보