Je sais que cela a déjà été répondu, mais la réponse n'explique pas ce qui se passe.
Les caractères comme Ctrl+ Lsont gérés par l' application . Dans le cas d'une entrée dans le shell, comme bash, cela efface l'écran. Certaines applications, par exemple emacs, l'utilisent pour redessiner l'écran et / ou recentrer le curseur.
Les caractères tels que Ctrl+ Uà l'invite du mot de passe sont gérés par la discipline de ligne TTY . Ils fonctionneront chaque fois que le terminal d'entrée est en mode d'édition de ligne "canonique", mode utilisé par vos programmes lorsque vous entrez un mot de passe. Dans ce mode, c'est le noyau Linux lui-même qui interprète ces caractères. Vous pouvez voir quelles fonctions sont affectées à quelles touches dans la sortie de 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
Ici, vous pouvez voir que le Ctrl+ Uest lié à killce qui (selon la page de manuel stty ) "effacera la ligne en cours". Vous pouvez également utiliser sttypour changer ce mappage:
stty kill ^E # make ctrl-e erase the line
Cette page contient de nombreuses informations utiles sur la couche TTY si vous êtes intéressé.
Si les choses ne vous ont pas suffisamment embrouillé: lorsque bashvous êtes à la pointe d'une interaction , vous n'êtes en fait pas en mode d'édition de ligne "canonique". Au lieu de cela, bashreçoit chaque caractère directement au fur et à mesure que vous le tapez, et interprète les séquences de contrôle elles-mêmes, via la bibliothèque readline . Cette bibliothèque sera l' honneur les applications que vous avez défini sur votre terminal, cependant, de sorte que vous pouvez toujours utiliser sttyles changer. Ou, vous pouvez les personnaliser indépendamment dans d’ bashautres programmes basés sur readline en définissant la unix-line-discardpropriété dans votre ~/.inputrcfichier. Voir la page de manuel bash pour plus d'informations.
Lorsque vous exécutez un programme, bashréactivez le mode d'édition de ligne canonique ( stty icanon) s'il était activé auparavant, puis désactivez-le à nouveau lorsque le programme se termine ( stty -icanon).