Discussion:
Clear screen mit C = printf("\x1B[2J") -- ?
(zu alt für eine Antwort)
Ottmar Ohlemacher
2008-07-21 06:38:44 UTC
Permalink
Hallo,

das man unter Unix den BS mit printf("\x1B[2J") löschen kann, das hab ich
so per Zufall irgendwo gelesen. (...es was c_von_a_bis_z von Jürgen Wolf)

Allerdings würde mich schon mal interessieren, was dies krypitische
Bezeichung "\x1B[2J" im einzelnen bedeuten soll, und wo man das ggf
nachlesen kann.

Da gibt es doch bestimmt noch mehr solcher Dinge, womit man irgend welche
"Tricks" machen kann.

Danke für Info.

mfG Ottmar
Alexander Bartolich
2008-07-21 09:11:27 UTC
Permalink
Post by Ottmar Ohlemacher
[...]
das man unter Unix den BS mit printf("\x1B[2J") löschen kann, das hab ich
so per Zufall irgendwo gelesen. (...es was c_von_a_bis_z von Jürgen Wolf)
*seufz*

Diese Funktionalität ist eine Eigenschaft des Terminals, nicht des
Betriebssystems und funktioniert nur in den üblichen Umgebungen (etwa
xterm), aber nicht überall.
Post by Ottmar Ohlemacher
Allerdings würde mich schon mal interessieren, was dies krypitische
Bezeichung "\x1B[2J" im einzelnen bedeuten soll, und wo man das ggf
nachlesen kann.
http://en.wikipedia.org/wiki/Terminfo

man terminfo

--
Juergen Ilse
2008-07-21 17:51:04 UTC
Permalink
Hallo,
Post by Ottmar Ohlemacher
das man unter Unix den BS mit printf("\x1B[2J") löschen kann, das hab ich
so per Zufall irgendwo gelesen. (...es was c_von_a_bis_z von Jürgen Wolf)
Das ist falsch. Richtig hingegen ist, dass "<ESC>[2J" auf ANSI-Terminals
genau wie auf der Linux-Console, VT100 und VT220 (und eventuell noch ein
paar anderen Terminals) die Steuerzeichensequenz zum Bildschirmloeschen ist.
Andere Terminals verwenden durchaus auch andere Steuerzeichenketten.
Post by Ottmar Ohlemacher
Allerdings würde mich schon mal interessieren, was dies krypitische
Bezeichung "\x1B[2J" im einzelnen bedeuten soll, und wo man das ggf
nachlesen kann.
Nachzulesen in der Beschreibung des jeweiligen Terminals. Fuer portable
Anwendungen stellen die Libraries "libtermcap", "libterminfo" oder auch
"libcurses" portable Moeglichkeiten zur Verfuegung, die nicht von den
Steuerzeichen eines bestimmten Terminals abhaengen. Diese Libraries
greifen auf "Terminalbeschreibungen" zurueck, die die Steuerzeichen-
sequenzen fuer verschiedene Funktionen der jeweiligen Terminals enthalten.
Diese werden dann "bei Bedarf" aus der Terminalbeschreibung des gerade
verwendeten Terminals ausgelesen und ausgegeben. Was fuer ein Terminal
gerade verwendet wird, wird dabei ueblicherweise durch die Environment-
variable "TERM" angegeben. Diese Methode ermoeglicht es, Programme zu
schreiben, die auf allen Terminals, die die noetigen Faehigkeiten besitzen
gleichermassen zu funktionieren, ohne dass man die Beschreibungen der
Terminals selbt in das Programm eincompilieren muesste. Das Programm kann
sogar mit Terminals umgehen, die es moeglicherweise zum Uebersetzungszeit-
punkt des Programms noch gar nicht gab, wenn denn die entsprechende Ter-
minalbeschreibung in den Systemdateien "nachgepflegt" wurde: Die Terminal-
steuerung wird vom Programm getrennt und kann *unabhaengig* von der ueber-
setzten Software gepflegt werden (in der "TERMCAP" bzw. "Terminfo"
Datenbank). Manch andere Systeme haben diese bei unixoiden Systemen
seit Jahrzehnten uebliche Trennung bis heute nicht bereitstellen koennen.
;-)

Tschuess,
Juergen Ilse (***@usenet-verwaltung.de)
PS: die von dir genannte Escape-Sequenz funktionierte sogar unter DOS,
wie man durch Eingabe von "prompt $e[2J" nachweisen kann ...
--
Ein Domainname (auch wenn er Teil einer Mailadresse ist) ist nur ein Name,
nicht mehr und nicht weniger ...
Frank Mertens
2008-07-24 07:22:21 UTC
Permalink
Post by Ottmar Ohlemacher
Hallo,
das man unter Unix den BS mit printf("\x1B[2J") löschen kann, das hab ich
so per Zufall irgendwo gelesen. (...es was c_von_a_bis_z von Jürgen Wolf)
Allerdings würde mich schon mal interessieren, was dies krypitische
Bezeichung "\x1B[2J" im einzelnen bedeuten soll, und wo man das ggf
nachlesen kann.
Da gibt es doch bestimmt noch mehr solcher Dinge, womit man irgend welche
"Tricks" machen kann.
Danke für Info.
mfG Ottmar
Wenn du die Linux-Manuals zur Hand hast: man console_codes.
Nette Anwendung: http://www.happypenguin.org/show?bastet

--
Frank

Loading...