Bildschirm im Terminal neu zeichnen

8

Wie bearbeiten einige Programme was auf dem Terminal angezeigt wird (um ein zufälliges Beispiel auszuwählen, das Programm 'sl')? Ich denke hier an das Linux-Terminal, das kann auch in anderen Betriebssystemen passieren, weiß ich nicht. Ich habe immer gedacht, sobald ein Text angezeigt wurde, blieb es dort. Wie ändern Sie es, ohne den gesamten Bildschirm neu zu zeichnen?

    
Jarek 16.09.2008, 22:34
quelle

9 Antworten

3

Viele Anwendungen verwenden die Bibliothek curses oder eine bestimmte Sprachbindung.

Zum Umschreiben in einer einzelnen Zeile, z. B. zum Aktualisieren von Fortschrittsinformationen, wird häufig das Sonderzeichen " Wagenrücklauf " angegeben Durch die Escape-Sequenz "\ r" kann der Cursor an den Anfang der aktuellen Zeile zurückkehren, damit die nachfolgende Ausgabe überschreibt, was zuvor dort geschrieben wurde.

    
Mike Tunnicliffe 16.09.2008, 22:41
quelle
5

Abhängig vom Terminal senden Sie Steuerfunktionen. Übliche Sequenzen sind beispielsweise esc [; H, um den Cursor an eine bestimmte Position zu senden (z. B. an Ansi, Xterm, Linux, VT100). Dies hängt jedoch vom Typ oder Endgerät ab, das der Benutzer hat ... curses (in Verbindung mit den terminfo-Dateien) wickelt diese Informationen für Sie ab.

    
Yamodax 08.02.2010 15:22
quelle
4

probiere dieses Shellskript

aus %Vor%

die Option -n verhindert die Zeilenumbruch ... und die \ r führt den Wagen zurück ... Sie schreiben immer wieder in die gleiche Zeile - kein Scrollen oder was auch immer

    
mana 16.09.2008 22:40
quelle
3

Wenn Sie eine Zeile beenden, die an das Terminal mit einem Wagenrücklauf ('\ r') anstelle eines Zeilenvorschubs ('\ n') gesendet wird, wird der Cursor an den Anfang der aktuellen Zeile verschoben Drucken Sie mehr Text über das, was zuvor gedruckt wurde. Ich verwende dies gelegentlich für Fortschrittsmeldungen für lange Aufgaben.

Wenn Sie mehr als das Bearbeiten von Terminals benötigen, verwenden Sie ncurses oder eine Variante davon.

    
deemer 16.09.2008 22:37
quelle
2

Es gibt Zeichen, die an das Terminal gesendet werden können und den Cursor zurück bewegen. Dann kann Text überschrieben werden.

Es gibt eine Liste hier . Beachten Sie die Zeilen "Cursor etwas bewegen".

    
Sarien 16.09.2008 22:35
quelle
1

NCurses ist eine plattformübergreifende Bibliothek, mit der Sie Benutzeroberflächen auf intelligenten Terminals zeichnen können.

    
Jacob Krall 16.09.2008 22:41
quelle
1

Corporal Touchy hat geantwortet, wie dies auf der untersten Ebene geschieht. Für eine einfachere Entwicklung bietet die Curses-Bibliothek mehr Kontrolle als einfach nur Zeichen an das Terminal zu senden.

    
danio 16.09.2008 22:40
quelle
0

Um auf @Corporal Touchy's Antwort aufzubauen, gibt es Bibliotheken, die einen Teil dieser Funktionalität für Sie übernehmen, wie zum Beispiel Flüche / ncurses

    
pix0r 16.09.2008 22:38
quelle
0

Ich stimme Danio zu, Ncurses ist der Weg zu gehen. Hier ist ein gutes Tutorial:

Ссылка

    
Adam Pierce 16.09.2008 22:44
quelle

Tags und Links