Linux의 쉘 / 터미널에서 잘못 입력 된 보이지 않는 비밀번호 지우기 / 삭제


75

Linux 터미널을 사용하는 것을 귀찮게하는 한 가지는 ssh 를 실행할 때와 같이 보이지 않는 암호를 입력해야 할 때 입니다. 때로는 하나 이상의 문자를 잘못 입력 한 다음 다시 시작하기 위해 모든 항목을 지우려면 백 스페이스 키를 몇 번 눌러야합니다.

나는 이것이 큰 문제는 아니라는 것을 알고 있지만 다른 날에 CTRL + L을 누르면 터미널이 "지워진다"는 것을 알았 기 때문에 백 스페이스에 의존하거나 Enter 키를 누르지 않고 보이지 않는 암호를 지우거나 지우는 방법이 있는지 궁금했습니다. 다시 시도하십시오.

답변:


70

ctrl+ 만 입력하면 u됩니다.

즐기십시오 =)


그것에 대해 전혀 몰랐습니다. 일반적으로 중간 입력 중 원하지 않는 명령에서 ctrl + C를 사용합니다.
Spidey

10
무슨 일이 일어나고 있는지 알고 싶다면 다른 대답에서 내 설명을 참조하십시오.
Jim Paris

Ctrl + W를 사용하고 꽤 괜찮습니다.
shabunc

108

나는 이것이 이미 답변되었다는 것을 알고 있지만, 대답은 무슨 일이 일어나고 있는지 설명하지 않습니다.

Ctrl+ 와 같은 문자 L응용 프로그램에서 처리 합니다 . 와 같이 입력을 쉘에 입력 bash하면 화면이 지워집니다. 와 같은 일부 응용 프로그램은이 기능 emacs을 사용하여 화면을 다시 그리거나 커서를 최근에 표시합니다.

암호 프롬프트에서 Ctrl+ 와 같은 문자 UTTY 라인 규칙에 의해 처리됩니다 . 입력 터미널이 "정식"라인 편집 모드에있을 때 작동합니다. 이는 암호를 입력하는 동안 프로그램이 사용하는 모드입니다. 이 모드에서는 이러한 문자를 해석하는 것이 Linux 커널 자체입니다. 의 출력에서 ​​어떤 키에 어떤 기능이 할당되어 있는지 확인할 수 있습니다 stty -a.

speed 38400 baud; rows 45; columns 128; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

여기에서 Ctrl+ Ukill( stty man page 에 따라 ) "현재 줄을 지울 것" 으로 묶인 것을 볼 수 있습니다 . stty이 매핑을 변경 하는 데 사용할 수도 있습니다 .

stty kill ^E   # make ctrl-e erase the line

이 페이지 에는 관심이 있다면 TTY 레이어에 대한 많은 정보가 있습니다.


상황이 충분히 혼란스럽지 않은 경우 : 대화식 프롬프트가 표시되면 bash실제로 는 "정식"라인 편집 모드 가 아닙니다 . 대신, bash입력 할 때 각 문자를 직접 수신하고 readline 라이브러리를 통해 제어 순서 자체를 해석합니다 . 이 라이브러리 터미널 장치에 설정 한 매핑을 그대로 유지하므로 stty이를 변경하는 데 계속 사용할 수 있습니다. 또는 파일 내부 bashunix-line-discard속성 을 설정하여 내부 및 기타 리드 라인 기반 프로그램에서 독립적으로 사용자 정의 할 수 있습니다 ~/.inputrc. 자세한 내용은 bash 매뉴얼 페이지 를 참조하십시오.

프로그램을 실행할 때 이전에 활성화 된 경우 bash표준 라인 편집 모드 ( stty icanon)를 다시 활성화 한 다음 프로그램이 완료되면 다시 비활성화합니다 ( stty -icanon).


덕분에 tilda / yay 'erase'문제를 추적하고 수정하는 데 도움이되었습니다!
토마스 헤세
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.