VREPRINT scheint keine Wirkung zu haben

VREPRINT scheint keine Wirkung zu haben

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:

  1. Führen Sie eine shSitzung mit dem neuesten alpineImage von Dockerhub aus.
  2. Verwenden Sie sttydies, um das rprntZeichen an zu binden ^N.
  3. Geben Sie eine Eingabe ein
  4. Schreiben Sie aus einer separaten Sitzung in den PTY der ersten Sitzung.
  5. Drücken Sie Strg-N, um meine Eingabe erneut auszudrucken.

Bildbeschreibung hier eingeben

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 icanonund iextenbin auf diesen PTY eingestellt.

Antwort1

Ich gehe davon aus, dass es sich bei Ihrer Shell um basheine 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 rprntgilt die Einstellung für sie nicht.

Das Befehlszeilentool sttymeldet 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 sttysich 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, dashoder ähnliches. Sie werden feststellen, dass das Eingeben stty rprnt ^Nim Voraus und Drücken ^Nvon 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. bashdie readlineBibliothek) zu Rate ziehen, um zu erfahren, wie Sie die Eingabeaufforderung erneut drucken oder den Hotkey konfigurieren.

verwandte Informationen