it-swarm.com.de

Löschen Sie das eingegebene Passwort in der Eingabeaufforderung für versteckte Passwörter (Linux) mit der Verknüpfung

Gibt es eine Möglichkeit, alle Zeichen zu löschen, die ich in einer versteckten Passwortabfrage unter Linux eingegeben habe? Wenn ich zum Beispiel eine SSH-Verbindung zu einem Server herstelle, frage ich nach meinem Passwort, wo die eingegebenen Schlüssel nicht angezeigt werden:

$ ssh [email protected]
[email protected]'s password:

Gibt es eine Möglichkeit, meinen gesamten eingegebenen Text zu löschen, ohne die Rücktaste für eine unbekannte Zeitspanne drücken zu müssen? Wenn ich denke, dass ich etwas falsch eingegeben habe, möchte ich von vorne anfangen, und das Drücken der Rücktaste für einige Sekunden ist ärgerlich. Ich habe es versucht EscCtrlA hoffentlich den ganzen Text auswählen und HomeCtrlC Bricht den gesamten Befehl ab und ich muss den Befehl erneut senden, um es erneut zu versuchen. Dies ist fast die beste und schnellste Lösung, aber immer noch nicht zufriedenstellend. Einfügen funktioniert auch in meiner Shell nicht.

106
bugybunny

Mit können Sie das gesamte eingegebene Passwort löschen Ctrl+U.

163
Ipor Sircer

Im Gegensatz zu bash verwendet die Eingabeaufforderung von ssh keine spezielle Terminal-Eingabebibliothek wie readline. Die Zeilenbearbeitungsfunktionen sind nur die POSIX TTY-Grundfunktionen für die Zeilenbearbeitung.

Sie haben also eine POSIX TTY im "gekochten" Modus (nicht roh), auch bekannt als kanonischer Modus, und die einzige verfügbare Zeilenbearbeitung ist die vom Kernel bereitgestellte. Siehe stty(1) , und beachten Sie, dass
kill = ^U. Hier wird auch das Backspace-Zeichen definiert (erase = ^?). Das Löschen von Wörtern (^W) ist praktisch, wenn Sie nicht blind tippen.

lnext = ^V bedeutet, dass Sie control-v und dann alles (einschließlich control-c) eingeben können, um ein literales control-c zu erhalten.

Um zu debuggen, was Sie blind versucht haben, führen Sie cat oder cat > /dev/null in Ihrem Terminal aus . Geben Sie Zeug ein und sehen Sie dann, was funktioniert und was nicht, um es zu bearbeiten.


readline (verwendet von bash) liest Rohzeichen und bearbeitet die Zeilen im User-Space. Die Standardbindungen sind jedoch mit den Standard-TTY-Steuerzeichen für die Teilmenge der Bearbeitungsfunktionen kompatibel, die beide bereitstellen.

readline geht weit über die einfache Zeilenbearbeitung eines normalen TTY hinaus. (z. B. kann ein TTY nur Zeichen am Ende der Zeile löschen, daher gibt es keinen ^a und delete oder Pfeil nach links/rechts)

Wenn bash einen Befehl im Vordergrund ausführt, wird der TTY zuerst in den kanonischen Modus versetzt (da dies die Standardeinstellung ist). Wenn Sie also stty -a (ohne Umleitung) ausführen, wird immer ein eigenes Terminal im kanonischen Modus angezeigt. Wenn Sie jedoch Eingaben von einem anderen TTY umleiten, auf dem bash ausgeführt wird, können Sie sehen, welche Terminaleinstellungen bash + readline angewendet wurden. z.B. stty -a < /dev/pts/12 zeigt -icanon für den Raw-Modus an, da auf diesem Terminal eine bash ausgeführt wird. (Ich habe auf eine andere Registerkarte gewechselt, tty ausgeführt und dann diesen Gerätedateipfad vom ersten Terminal aus verwendet.) Wenn ich cat in diesem anderen Terminal ausführen würde, würde ich icanon für den kanonischen Modus sehen.

Verwandte: Der TTY entmystifiziert

https://www.gnu.org/software/libc/manual/html_node/Canonical-or-Not.html

https://en.wikipedia.org/wiki/POSIX_terminal_interface

14
Peter Cordes