Wiem, że już na nie odpowiedziano, ale odpowiedź nie wyjaśnia, co się dzieje.
Aplikacja obsługuje znaki takie jak Ctrl+ . W przypadku wprowadzania danych wejściowych do powłoki, na przykład , usuwa ekran. Niektóre aplikacje, na przykład , używają go do przerysowania ekranu i / lub wyśrodkowania kursora.Lbash
emacs
Znaki takie jak Ctrl+ Uw pytaniu o hasło są obsługiwane przez dyscyplinę linii TTY . Będą działać za każdym razem, gdy terminal wejściowy znajdzie się w „kanonicznym” trybie edycji linii, czyli w jakim trybie znajdują się twoje programy podczas wprowadzania hasła. W tym trybie to samo jądro Linuksa interpretuje te znaki. Możesz zobaczyć, jakie funkcje są przypisane do których klawiszy na wyjściu 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
Tutaj możesz zobaczyć, że Ctrl+ Ujest przywiązany kill
, co (zgodnie ze stty man page ) „usunie bieżącą linię”. Możesz także użyć stty
do zmiany tego mapowania:
stty kill ^E # make ctrl-e erase the line
Ta strona zawiera wiele świetnych informacji o warstwie TTY, jeśli jesteś zainteresowany.
Jeśli rzeczy nie były wystarczająco mylące: kiedy pojawi się monit interaktywny bash
, tak naprawdę nie jesteś w „kanonicznym” trybie edycji linii. Zamiast tego bash
odbiera każdy znak bezpośrednio podczas pisania i interpretuje same sekwencje kontrolne za pośrednictwem biblioteki readline . Ta biblioteka będzie honorować odwzorowania ustawione na urządzeniu końcowym, więc nadal możesz stty
ich zmieniać. Możesz też dostosować je niezależnie wewnątrz bash
i innych programów opartych na readline, ustawiając unix-line-discard
właściwość w ~/.inputrc
pliku. Zobacz stronę podręcznika użytkownika bash, aby uzyskać więcej informacji.
Po uruchomieniu programu bash
ponownie włącza tryb edycji linii kanonicznej ( stty icanon
), jeśli był wcześniej włączony, a następnie wyłącza go ponownie po zakończeniu programu ( stty -icanon
).