Vous pouvez supprimer l'intégralité du mot de passe tapé avec Ctrl +U .
Contrairement à bash
, ssh
L'invite de mot de passe n'utilise aucune bibliothèque spéciale d'entrée de terminal comme readline
. Les fonctionnalités d'édition de ligne ne sont que les fonctionnalités d'édition de ligne POSIX TTY de base.
Vous avez donc un TTY POSIX en mode "cuit" (pas brut), c'est-à-dire en mode canonique, et la seule édition de ligne disponible est celle fournie par le noyau. Voir stty(1)
, et remarquez que
kill = ^U
. C'est également là que le caractère de retour arrière est défini (erase = ^?
). Mot-effacement (^W
) est pratique lorsque vous ne tapez pas à l'aveugle.
lnext = ^V
signifie que vous pouvez taper control-v puis n'importe quoi (y compris control-c) pour obtenir un control-c littéral.
Pour déboguer ce que vous essayiez de faire aveuglément, exécutez cat
ou cat > /dev/null
dans votre terminal . Tapez des éléments, puis voyez ce qui fonctionne et ce qui ne fonctionne pas pour le modifier.
readline
(utilisé par bash
) lit les caractères bruts et effectue l'édition de ligne dans l'espace utilisateur. Ses liaisons par défaut sont compatibles avec les caractères de contrôle TTY par défaut, cependant, pour le sous-ensemble de fonctionnalités d'édition qu'ils fournissent tous les deux.
readline va bien au-delà de la simple édition de ligne d'un TTY ordinaire. (par exemple, un TTY ne peut supprimer que des caractères à la fin de la ligne, il n'y a donc pas de ^a
et delete
ou flèche gauche/droite)
Quand bash
exécute une commande au premier plan, il met d'abord le TTY en mode canonique (car c'est la valeur par défaut). Exécutant donc stty -a
(sans redirection) verra toujours son propre terminal en mode canonique. Mais si vous redirigez l'entrée d'un autre TTY qui a bash
en cours d'exécution dessus, vous pouvez voir quels paramètres de terminal bash + readline ont été appliqués. par exemple. stty -a < /dev/pts/12
affiche -icanon
pour le mode brut car j'ai un bash
en cours d'exécution sur ce terminal. (Je suis passé à un autre onglet et j'ai exécuté tty
, puis utilisé ce chemin de fichier de périphérique à partir du premier terminal). Si j'exécutais cat
dans cet autre terminal, je verrais icanon
pour le mode canonique.
En relation :Le TTY démystifié
https://www.gnu.org/software/libc/manual/html_node/Canonical-or-Not.html
https://en.wikipedia.org/wiki/POSIX_terminal_interface