Bash 명령줄에서 BackSpace를 사용하여 문자 지우기

Bash 명령줄에서 BackSpace를 사용하여 문자 지우기

Bash에 대한 구성과 구성 파일이 있지만 해당 파일을 다른 서버에 복사했기 때문에 이제 백스페이스를 누르는 것만으로는 텍스트를 삭제할 수 없습니다. 텍스트를 삭제하려면 Shift + 백스페이스를 눌러야 합니다.

복원하려면 어떤 매개변수를 변경해야 합니까?

답변1

일반적으로 (에 따라협약사용 중인 특정 시스템의 경우) 이 backspace키는 ASCII BS( ^H) 및 DEL( ^?) 을 전송합니다.

일부 터미널 에뮬레이터는 ^HShift 수정자를 사용할 때 ASCII BS( )와 DEL( ) 사이를 전환합니다. ^?일부는 그렇지 않습니다. 분명히 ssh에 사용하는 프로그램은 그렇지 않습니다.

다음 줄을 고려하면 다음과 같습니다 .profile.

stty erase "^H" kill "^U" intr "^C" eof "^D" susp "^Z"

터미널은 일반적으로 (ASCII DEL)을 보내는 것처럼 보이지만 (ASCII BS) ^?을 예상하도록 지시하고 있습니다 . ^H그러나 해당 키를 사용하여 수정 ^H하면 backspace터미널이 로 전환됩니다 shift. 당신은 사용할 수 있었다

stty erase "^?" kill "^U" intr "^C" eof "^D" susp "^Z"

그리고 더 나은 결과를 얻었습니다.

답변2

모든 경우에 적용할 수 있는 일률적인 솔루션은 없다고 생각합니다. 다음은 gnome-terminal(2.31.3)의 bash 4.1 문제를 해결했습니다.

stty sane

인용하다:원천

답변3

또 다른 가능성은 terminfo 데이터의 손실입니다. chroot를 사용할 때 이런 일이 일어났습니다. 이것포럼 게시물이 문제를 해결하는 데 도움이 되었지만 Stackexchange에서 유사한 작업 참조를 찾을 수 없어서 여기에 있습니다.

/usr/share/terminfo/ 디렉토리를 chroot 디렉토리 /usr/share/terminfo로 복사하는 것으로 충분합니다.

관련 정보