Backspace-Zeichen Verrücktheit

Frage ich mich, warum die backspace-Zeichen in den üblichen Linux-terminals nicht tatsächlich löschen Sie die Zeichen, wenn es gedruckt wird (was normalerweise funktioniert, wenn eingegeben)..

Dies funktioniert wie erwartet:

$ echo -e "abc\b\b\bxyz"
xyz

(\b wertet backspace, können eingefügt werden, auch als Strg+V Strg+H - Rendern als ^H (0x08))

aber wenn es weniger Zeichen nach dem backspaces, das ungewöhnliche Verhalten enthüllt wird:

$ echo -e "abc\b\b\bx"
xbc

verhält es sich wie Pfeiltasten nach Links statt backspace:

$ echo -e "abc\e[D\e[D\e[Dx"
xbc

löschen Zeile wieder normal funktioniert:

$ echo -e "abc\e[1Kx"
x

In der Tat, wenn ich geben Sie Strg+V Backspace im terminal ^? (0x7f) wird, ergab anstatt ^H ist dies Del ascii-Zeichen, aber Strg+V Del erzeugt <ESC>[3~, aber das ist eine andere Geschichte..

Also kann mir jemand erklären, warum gedruckte backspace-Zeichen löscht nicht die Zeichen?

(Meine Umgebung ist xterm, Linux und einige andere terminal-Emulatoren, $TERM = = xterm versuchte vt100, Linux auch)

InformationsquelleAutor mykhal | 2010-05-18
Schreibe einen Kommentar