wie/warum funktioniert ^[[H^[[2J

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

wie/warum funktioniert ^[[H^[[2J

Beitrag von lemak » 12.06.2009 15:36:28

Hallo,

habe folgendes im Netz gefunden:

Code: Alles auswählen

~$ clear > datei.text
~$ file datei.text
datei.text: ASCII text, with no line terminators, with escape sequences
~$ cat datei.text
inhalt von datei.text:

Code: Alles auswählen

^[[H^[[2J
Wie bzw. warum funktioniert das? Ist/Sind das auch escape sequences :? vllt Einfach die Tasten STRG L?

mfg i

yeti

Re: wie/warum funktioniert ^[[H^[[2J

Beitrag von yeti » 12.06.2009 17:24:24

"man 5 terminfo"?

lemak
Beiträge: 1213
Registriert: 09.11.2007 13:25:57
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: wie/warum funktioniert ^[[H^[[2J

Beitrag von lemak » 13.06.2009 18:05:15

clear ermittelt für die aktuelle Konsole xterm, linux ... die clear für "clear screen and
home cursor" escape-Sequenz anhand der Daten in /lib/terminfo/* und schreibt diese auf die Kommandozeile (readline library)

Für xterm in /lib/terminfo/x/xterm (infocmp "xterm") ist der Eintrag
clear=\E[H\E[2J hinterlegt, welche die escape-Sequenz enthält.

ESC H Setzt den Cursor nach HOME und
ESC 2J Leer dann den Schirm - nach ANSI ESC J

Durch echo -en "\E[H""\E[2J" sendet die BASH mit Hilfe der readline library diese Zeichenfolge an das
Prog. xterm, was dann den Bildschirm leert ...

richig? ich habe mir noch keinen Quellcode angesehen :oops: werde mir clear aber wohl noch ansehen.

Hier sind [H und [2J die escape-Sequenzen. Wird eine escape-Sequenz nur mit ESC oder doch ESC [ eingeleitet?

yeti

Re: wie/warum funktioniert ^[[H^[[2J

Beitrag von yeti » 13.06.2009 18:47:14

Schau Dir mal

Code: Alles auswählen

~$ clear | hexdump -c
0000000 033   [   H 033   [   J                                        
0000006
an...
Die Zahlen sind oktal angegeben...
033 also das ESC selbst (auch als ^[ umschrieben) und es folgt ein extra "["...

Verschiedene Programme haben eventuell abweichende Umschreibungen für nichtdruckbare Zeichen, z.B.:

Code: Alles auswählen

~$ echo -en '\e[H\e[J'
Oktal oder Hexadezimal frißt "echo" das auch:

Code: Alles auswählen

~$ echo -en '\x1b[H\033[J'
"readline" hat damit aber weniger zu tun... stocher mal nach den Stichworten stdin und stdout in Deiner Lieblingsunixlektüre oder einer Findemaschine rum...

Antworten