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é à kill
ce qui (selon la page de manuel stty ) "effacera la ligne en cours". Vous pouvez également utiliser stty
pour 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 bash
vous êtes à la pointe d'une interaction , vous n'êtes en fait pas en mode d'édition de ligne "canonique". Au lieu de cela, bash
reç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 stty
les changer. Ou, vous pouvez les personnaliser indépendamment dans d’ bash
autres programmes basés sur readline en définissant la unix-line-discard
propriété dans votre ~/.inputrc
fichier. Voir la page de manuel bash pour plus d'informations.
Lorsque vous exécutez un programme, bash
ré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
).