Unerwartetes Einrückungsverhalten, wenn ich das Terminal in den unformatierten Modus versetze - warum geschieht dies?

27

Basierend auf dem, was ich gelesen habe, werden die Zeichen, wenn sich ein Terminal im Raw-Modus befindet, nicht vom Terminal-Treiber verarbeitet, sondern direkt durchgeschickt.

Ich habe das Terminal mit dem Befehl in den Raw-Modus versetzt stty rawund festgestellt, dass die Ausgabe jedes Mal nach rechts eingerückt wird, bis kein Platz mehr vorhanden ist. Das ist was ich meine:

Bildbeschreibung hier eingeben

Warum passiert dieses Verhalten ?!

paul
quelle

Antworten:

45

Eine der sttyEinstellungen ( onlcr) weist den Terminal-Treiber an, Zeilenvorschub (eigentlich ASCII-Zeilenvorschub) in Wagenrücklauf plus Zeilenvorschub umzuwandeln .

Unix-ähnliche Systeme schreiben einfach einen Zeilenumbruch in die Endzeilen und lassen den Terminal-Treiber das Richtige tun (konvertieren Sie Zeilenumbruch in Wagenrücklauf plus Zeilenvorschub).

Wagenrücklauf "geht nach links" und Zeilenvorschub "geht nach unten".

Wenn Sie das Terminal in den Raw-Modus versetzen, wird der Zeilenumbruch nicht mehr in Wagenrücklauf plus Zeilenvorschub konvertiert. Fehlen die Wagenrückläufe, erhalten Sie diesen Treppeneffekt .

Thomas Dickey
quelle
und für eine eingehende Betrachtung können Sie sich @ stéphane-chazelas wirklich guten Beitrag ansehen : unix.stackexchange.com/questions/151916/… , der eine Menge interessanter Dinge über Terminalkonvertierungen (und deren Nebenwirkungen) zeigt . Kurz gesagt: Verwenden Sie nur "ssh -t", um interaktive Befehle zu verwenden, aber in Ihren Skripten verwenden Sie nur "ssh", wenn Sie genau wissen möchten, was der Befehl generiert hat (z. B. tar-Dateien, die auf einer Seite eines ssh erstellt und gelesen / geschrieben wurden) die andere seite: addiere nicht "-t" oder es könnte (... wird?) deine binaries durcheinander bringen)
Olivier Dulac