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?
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.
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.
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.
NCurses ist eine plattformübergreifende Bibliothek, mit der Sie Benutzeroberflächen auf intelligenten Terminals zeichnen können.
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.
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
Ich stimme Danio zu, Ncurses ist der Weg zu gehen. Hier ist ein gutes Tutorial: