ich, warum Backspace Charakter gemeinsam Linux-Terminals fragen sich nicht wirklich die Zeichen löschen, wenn sie gedruckt werden (das funktioniert in der Regel, wenn getippt) ..Rück Charakter Seltsamkeit
Dies funktioniert wie erwartet:
$ echo -e "abc\b\b\bxyz"
xyz
(\b
ausgewertet Backspace können auch Ctrl als + + H VCtrl einfügbar - übertragen als ^H
(0x08
))
aber wenn es weniger Zeichen nach den Rücktasten ist das seltsame Verhalten offenbart:
$ echo -e "abc\b\b\bx"
xbc
es wie linke Pfeiltasten statt Backspace verhält:
$ echo -e "abc\e[D\e[D\e[Dx"
xbc
Lösch Linie zurück funktioniert normal:
$ echo -e "abc\e[1Kx"
x
In der Tat , Wenn i Ctrl + VRück im Terminal, ^?
(0x7f
) ergab anstelle von ^H
geben, ist dies Del ASCII-Zeichen, aber Ctrl + VDel<ESC>[3~
produziert, aber Es ist eine andere Geschichte ..
So kann jemand erklären, warum gedruckte Rücktaste Zeichen nicht die Zeichen löscht?
(Meine Umgebung xterm Linux und einige andere Terminal-Emulatoren, $TERM
== xterm
versuchte vt100
, Linux
auch)
Nun, das ist keine Erklärung _why_ Backspace-Steuerzeichen verhält sich wie linke Cursortaste, nicht nach Commons Sinn (letztes Zeichen löschen) – mykhal
jetzt bin ich zufrieden, danke für die Spec-Link :) – mykhal
Der wahre Grund, es funktioniert dieser Weg ist wegen sogar älterer, "Hardcopy" Terminals, die auf Papier wie eine Schreibmaschine drucken.An einem solchen Terminal gibt es KEINE Möglichkeit, ein Zeichen nach der Ausgabe zu löschen. Schreibmaschinenähnliche Terminals sind auch der Grund dafür, dass wir immer noch mit separaten "Carriage Return" - und "Line Feed" -Zeichen an den Endzeilen von Windows hängen bleiben. – alexis