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
Viele Anwendungen verwenden die Bibliothek curses oder eine bestimmte Sprachbindung.
Zum Umschreiben in einer einzelnen Zeile, z überschreiben, was zuvor dort geschrieben wurde.
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".
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.
auf @Corporal Touchy Antwort zu erstellen, gibt es Bibliotheken zur Verfügung, die einen Teil dieser Funktionalität für Sie wie curses/ncurses
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
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.
NCurses ist eine plattformübergreifende Bibliothek, mit der Sie Benutzerschnittstellen auf intelligenten Terminals zeichnen können.
Ich stimme danio, ncurses ist der Weg zu gehen. Hier ist ein gutes Tutorial:
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.
- 1. Wie man vi redraw Bildschirm machen?
- 2. Redraw AmStockChart
- 3. Get ant auf Logfile sowie Bildschirm/Terminal
- 4. Redraw Tasten nach der Drehung
- 5. Create druckt im Terminal
- 6. R Syntaxhervorhebung im Terminal
- 7. Cocoapods Installationsfehler im Terminal
- 8. Redraw-Ansicht auf MotionEvent.ACTION_MOVE
- 9. SWT Composite - Redraw Problem
- 10. Silverlight DataGrid Redraw Problem
- 11. IE10 Repaint/Redraw Ausgabe
- 12. Java JPanel redraw Probleme
- 13. Highcharts Label redraw
- 14. Skript im Bildschirm starten
- 15. Rücktaste im Terminal Vim (Cygwin)
- 16. Simulieren Linux Terminal im Browser
- 17. = gets.chomp ... funktioniert nicht im Terminal
- 18. nicht identifizierte Zeichen im Terminal
- 19. Netbeans-Terminal im Projektordner öffnen
- 20. Das Terminal im Fokus behalten
- 21. Wie scrollt nach oben und unten in geschnittenen "Bildschirm" Terminal
- 22. Tastaturkürzel zum Vollbild im Webstorm/IntelliJ Terminal Toolfenster vom Terminal?
- 23. Warum sehe ich nur 8 Farben im Terminal (xfce-terminal)?
- 24. Highcharts - redraw() vs. new Highcharts.chart
- 25. Suspend Redraw von Windows Form
- 26. Redraw ActionBar in Android manuell
- 27. Warum Piping Binärtext auf dem Bildschirm oft Horck ein Terminal
- 28. wie Größe physischen Android-Bildschirm von Terminal/Shell ändern
- 29. kann nicht meinen Terminal zurückgesetzt werden, wenn der Bildschirm auf
- 30. Redraw Subviews programmgesteuert auf Orientierungsänderung
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