Contrairement à bash
, ssh
l'invite de mot de passe n'utilise pas de bibliothèque spéciale d'entrée de terminal comme readline
. Les fonctions de modification de ligne ne sont que les caractéristiques de base de modification de ligne POSIX TTY.
Vous avez donc un TTY POSIX en mode "cuit" (non brut), aussi appelé mode canonique, et la seule modification de ligne disponible est celle fournie par le noyau. Vous voyez stty(1)
et remarquez ça
kill = ^U
. C'est également à cet endroit que le caractère de retour arrière est défini ( erase = ^?
). Word-erase ( ^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 controlal-c littéral.
Pour déboguer ce que vous essayiez de faire à l'aveuglette, exécutez cat
ou cat > /dev/null
dans votre terminal . Tapez des choses, puis voyez ce qui fonctionne et ce qui ne le modifie pas.
readline
(utilisé par bash
) lit le caractère brut et effectue la modification de ligne dans l’espace utilisateur. Ses liaisons par défaut sont compatibles avec les caractères de contrôle TTY par défaut pour le sous-ensemble de fonctions d’édition qu’elles fournissent toutes les deux.
readline va bien au-delà de la simple édition de ligne d’un ATS simple. (Par exemple, un téléscripteur ne peut supprimer que des caractères à la fin de la ligne, il n'y a donc pas de flèche ^a
et delete
/ ou flèche gauche / droite)
Lorsqu'il bash
exécute une commande au premier plan, il met d'abord le téléscripteur en mode canonique (car c'est la valeur par défaut). Donc, courir stty -a
(sans redirection) verra toujours son propre terminal en mode canonique. Mais si vous redirigez les entrées d'un autre TTY sur lequel il bash
tourne, vous pouvez voir quels paramètres du terminal bash + readline ont été appliqués. par exemple stty -a < /dev/pts/12
montre -icanon
pour le mode brut parce que j'ai un en bash
cours d'exécution sur ce terminal. (Je suis passé à un autre onglet et ai couru tty
, puis utilisé ce chemin de fichier de périphérique à partir du premier terminal). Si je courais cat
dans cet autre terminal, je verrais icanon
pour le mode canonique.
Connexes: le téléscripteur démystifié
https://www.gnu.org/software/libc/manual/html_node/Canonical-or-Not.html
https://en.wikipedia.org/wiki/POSIX_terminal_interface