2008-09-16 23 views
8

Wie einige Programme bearbeiten, was auf dem Terminal angezeigt wird (um ein zufälliges Beispiel, das Programm 'sl') wählen? 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?Redraw Bildschirm im Terminal

Antwort

3

Viele Anwendungen verwenden die Bibliothek curses oder eine bestimmte Sprachbindung.

Zum Umschreiben in einer einzelnen Zeile, z überschreiben, was zuvor dort geschrieben wurde.

2

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

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

+0

Jetzt verstehe ich, warum das Ansehen von Binärdateien in 'cat' oder' less' mein Terminal zerstören würde ... es würde immer den Zeichensatz ändern und ich musste neu starten, haha. – krs013

3

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

Wenn Sie jemals mehr Terminal bearbeiten müssen, verwenden Sie ncurses oder eine Variante davon.

0

auf @Corporal Touchy Antwort zu erstellen, gibt es Bibliotheken zur Verfügung, die einen Teil dieser Funktionalität für Sie wie curses/ncurses

4

versuchen dieses Shell

#!/bin/bash 
i=1 
while [ true ] 
    do 
      echo -e -n "\r $i" 
      i=$((i+1)) 
    done 

die -n-Optionen verhindert, dass das Newline behandelt. .. und die \ r führt den Wagen zurück ... Sie schreiben immer wieder in die gleiche Zeile - kein Scrollen oder was auch immer

1

Corporal Touchy hat beantwortet, wie dies auf der untersten Ebene getan wird. Für eine einfachere Entwicklung bietet die curses library eine höhere Kontrollebene als einfach Zeichen an das Terminal zu senden.

1

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

5

Je nach Endgerät Sie die Kontrolle seuqences senden. Ü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 Terminal ab, das der Benutzer hat ... curses (in Verbindung mit den terminfo-Dateien) wird diese Informationen für Sie umhüllen.