Une chose qui me dérange en utilisant le terminal de Linux est quand je dois taper un mot de passe invisible, comme lorsque vous exécutez ssh . Parfois, je me trompe dans une ou plusieurs lettres, puis je dois appuyer plusieurs fois sur la touche Retour pour m'assurer que j'ai tout effacé pour recommencer.
Je sais que ce n'est pas grave, mais depuis l'autre jour, j'ai découvert qu'en appuyant sur CTRL + L, "efface" le terminal, je me demandais s'il y avait un moyen d'effacer / effacer le mot de passe invisible sans s'appuyer sur la touche Retour arrière ou sur la touche Entrée. réessayer.
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 exempleemacs
, 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
: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 utiliserstty
pour changer ce mappage: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 utiliserstty
les changer. Ou, vous pouvez les personnaliser indépendamment dans d’bash
autres programmes basés sur readline en définissant launix-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
).la source