와 달리 bash
, ssh
비밀번호 프롬프트는와 같은 특별한 터미널 입력 라이브러리를 사용하지 않습니다 readline
. 라인 편집 기능은 단지 기본 POSIX TTY 라인 편집 기능입니다.
따라서 "요리 된"모드 (원시 아님), 일명 표준 모드에 POSIX TTY가 있으며 사용 가능한 유일한 행 편집은 커널이 제공하는 것입니다. 참조 stty(1)
하고, 그 통지
kill = ^U
. 백 스페이스 문자가 정의 된 곳이기도합니다 ( erase = ^?
). 단어 지우기 ( ^W
)는 맹인을 입력하지 않을 때 편리합니다.
lnext = ^V
즉, control-v를 입력 한 다음 무엇이든 (control-c 포함) 리터럴 control-c를 얻을 수 있습니다.
맹목적으로하려고했던 것을 디버그하려면을 실행 cat
하거나 cat > /dev/null
터미널에서 실행 하십시오 . 내용을 입력 한 다음 작동하는 것과 편집하지 않는 것을보십시오.
readline
(로 사용 bash
)은 원시 문자를 읽고 사용자 공간에서 행 편집을 수행합니다. 기본 바인딩은 기본 TTY 제어 문자와 호환되지만 둘 다 제공하는 편집 기능의 하위 세트에 해당합니다.
readline은 단순한 TTY의 단순한 라인 편집을 넘어선 것입니다. (예 : TTY 만 줄의 끝에 문자를 삭제할 수 있습니다, 그래서가 없습니다 ^a
및 delete
또는 왼쪽 / 오른쪽 화살표)
때 bash
전경에서 명령을 실행합니다 (즉, 기본이기 때문에), 먼저 표준 모드로 TTY를 넣습니다. 따라서 경로 stty -a
재 지정없이 실행 하면 항상 표준 모드에서 자체 터미널이 표시됩니다. 그러나 bash
실행중인 다른 TTY에서 입력을 리디렉션 하면 bash + readline이 적용된 터미널 설정을 볼 수 있습니다. 예를 들어 해당 터미널 에서 실행 중이므로 원시 모드를 stty -a < /dev/pts/12
표시 -icanon
합니다 bash
. (다른 탭으로 전환하여 실행 tty
한 다음 첫 번째 터미널에서 해당 장치 파일 경로를 사용했습니다). cat
다른 터미널에서 실행하면 icanon
표준 모드가 표시됩니다.
관련 : TTY는 미신
https://www.gnu.org/software/libc/manual/html_node/Canonical-or-Not.html
https://ko.wikipedia.org/wiki/POSIX_terminal_interface