Entsprechend derGNU-Dokumente, es gibt einen CharakterVREPRINT
, oder rprnt
, das den Eingabepuffer des Zeileneditors der Shell neu drucken soll. Dies kann hilfreich sein, wenn beispielsweise ein Hintergrundprozess in den PTY geschrieben hat, während Sie einen anderen Befehl eingeben und die Ausgabe mit Ihrer Eingabe durchsetzt ist. Ich habe jedoch versucht, es tatsächlich zu verwenden, und es scheint keine Wirkung zu haben. Ich habe Folgendes getan:
- Führen Sie eine
sh
Sitzung mit dem neuestenalpine
Image von Dockerhub aus. - Verwenden Sie
stty
dies, um dasrprnt
Zeichen an zu binden^N
. - Geben Sie eine Eingabe ein
- Schreiben Sie aus einer separaten Sitzung in den PTY der ersten Sitzung.
- Drücken Sie Strg-N, um meine Eingabe erneut auszudrucken.
Ich hatte erwartet, dass meine Eingabe aktualisiert und die geschriebene Ausgabe gelöscht wird. Das hatte jedoch keinen Effekt. Mein Zeileneditor ist immer noch mit Ausgabe überfüllt. Ich habe das überprüft icanon
und iexten
bin auf diesen PTY eingestellt.
Antwort1
Ich gehe davon aus, dass es sich bei Ihrer Shell um bash
eine oder eine andere Shell mit umfassenden Funktionen zur Zeilenbearbeitung handelt.
Diese Shells setzen den TTY-Modus auf „Raw“ statt auf „Canonical“, während sie darauf warten, dass Sie den Befehl eingeben. Daher rprnt
gilt die Einstellung für sie nicht.
Das Befehlszeilentool stty
meldet dies nicht zurück, da diese Shells die Einstellungen für die Dauer der Zeilenbearbeitung im Vergleich zur Ausführung des angeforderten externen Programms (wie stty
sich selbst) hin- und herschalten. Sie können dies bestätigen, indem Sie es stty -a < /dev/pts/[this-terminal's-number]
von einem anderen Terminal aus ausführen, während sich dieses an der Eingabeaufforderung befindet.
Wählen Sie ein Programm, dasnichtverfügen über umfassende Funktionen zur Zeilenbearbeitung, wie cat
, dash
oder ähnliches. Sie werden feststellen, dass das Eingeben stty rprnt ^N
im Voraus und Drücken ^N
von die angegebene Zeile tatsächlich erneut ausgibt. Zumindest habe ich es überprüft und es funktioniert bei mir.
Bei Shells mit leistungsstarken Funktionen zur Zeilenbearbeitung müssen Sie die Dokumentation der jeweiligen Shell (oder ggf. bash
die readline
Bibliothek) zu Rate ziehen, um zu erfahren, wie Sie die Eingabeaufforderung erneut drucken oder den Hotkey konfigurieren.