Frage

Wie bearbeite einige Programme, was auf dem Endgerät angezeigt wird (ein zufälliges Beispiel zu wählen, um das Programm ‚sl‘)? Ich denke an dem Linux-Terminal hier, es auch in anderen Betriebssystemen passieren kann, weiß ich nicht. Ich habe immer gedacht, wenn ein Text angezeigt wurde, ist es dort geblieben. Wie man es ohne den gesamten Bildschirm neu gezeichnet ändern?

War es hilfreich?

Lösung

Viele Anwendungen Verwendung des Bibliothek Flüche oder eine Sprache Bindung an es.

in einer einzigen Zeile Umschreiben, wie die Aktualisierung von Fortschrittsinformation, die Sonderzeichen „ Wagenrücklauf “, die oft durch die Escape-Sequenz festgelegt‚\ r‘können Sie den Cursor an den Anfang der aktuellen Zeile zurückkehren nachfolgende Ausgabe ermöglicht überschrieben werden, was vorher dort geschrieben wurde.

Andere Tipps

auf dem Terminal Je Sie die Kontrolle seuqences senden. Gemeinsame Sequenzen sind beispielsweise esc [; H den Cursor in eine bestimmte Position zu senden (beispielsweise auf ANSI-, Xterm, Linux, VT100). Dies wird jedoch mit der Art oder Terminal variieren muss der Anwender ... Flüche (in Verbindung mit den Term-Dateien) werden diese Informationen für Sie wickeln.

versuchen, diesen Shell

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

die -n-Optionen verhindert, dass das Newline ... und die \ r hat den Wagenrücklauf ... Sie schreiben immer wieder in die gleiche Linie - kein scroling oder was auch immer

Wenn Sie eine Linie an das Terminal mit einem Wagenrücklauf ( ‚\ r‘) anstelle einem Zeilenvorschub ( ‚\ n‘) gesendet beenden, wird er die Cursor auf den Anfang der aktuellen Zeile bewegen, so dass das Programm drucken mehr Text über oben, was es vorher gedruckt. Ich benutze dies gelegentlich für Statusmeldungen für lange Aufgaben.

Wenn Sie immer Terminal Bearbeitung als das zu tun, verwenden Sie ncurses oder eine Variante davon.

Es gibt Zeichen, die an das Endgerät gesendet werden können, um den Cursor zurück zu bewegen. Dann können Text überschrieben.

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

NCurses ist eine plattformübergreifende Bibliothek, die Sie Benutzeroberflächen auf Smart Terminals zeichnen können.

Korporal Touchy hat geantwortet, wie dies auf der untersten Ebene erfolgt. Zur einfacheren Entwicklung des Bibliothek Flüche gibt ein höheres Maß an Kontrolle als nur das Senden Zeichen Das Terminal.

auf dem @Corporal Touchy Antwort zu erstellen, gibt es verfügbare Bibliotheken, die einen Teil dieser Funktionalität für Sie wie Flüche / ncurses

ich mit danio zustimmen, ncurses ist der Weg zu gehen. Hier ist ein gutes Tutorial:

http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top