Shell-Skript zum Scrollen des gesamten Textes im Terminal nach unten, ohne ihn zu ändern

Shell-Skript zum Scrollen des gesamten Textes im Terminal nach unten, ohne ihn zu ändern

Ich versuche, mit einem /bin/sh-Skript im Terminal ein paar Textzeilen nach unten zu scrollen. Eine Lösung mit smcup, rmcup ist in diesem Fall nicht akzeptabel.

Ein paar andere Optionen, die ich ausprobiert habe, sind alle fehlgeschlagen (einschließlich Korrektur vonJdeBP):

  • tput cup 0 0; tput ri
  • tput cup 0 0; tput rin 3

Dies ist etwas seltsam, da man terminfo Folgendes angibt:

Um Text nach unten zu scrollen, geht ein Programm zur oberen linken Ecke des Bildschirms und sendet die Zeichenfolge ri (umgekehrter Index). Die Zeichenfolgen ind und ri sind undefiniert, wenn sie sich nicht in ihren jeweiligen Ecken des Bildschirms befinden.

Die Ausgabe des Terminals muss scrollbar sein, bevor Tests ausgeführt werden (versuchen Sie, vor den Tests „set, env“ zu verwenden).

Eine Lösung für xterm reicht aus.

Um Tests zu beschleunigen und zu verdeutlichen, verwenden Sie zunächst dieses Skript:

#!/bin/sh

# create scrollable text
set

# includes correction from JdeBP
# try to scroll text down one line
tput cup 0 0; tput ri

# includes correction from JdeBP
# try to scroll text down 3 lines
tput cup 0 0; tput rin 3

Antwort1

tput cup 0 0, ri

Es ist kein Wunder, dass dies fehlschlug. Das ist nichtdie Befehlszeilensyntax des tputProgramms.

tput Tasse 0 0
tput ri

Sehr einfach.

Hinweise für fortgeschrittene Benutzer, die komplexe Aufgaben nicht nur mit XTerm erledigen:

  • Auf echten Terminals und deren qualitativ hochwertigen Emulatoren wirken sich nicht standardmäßige obere und untere Ränder und der deaktivierte Ursprungsmodus auf das Verhalten und die Position des Cursors zum Scrollen aus. Es ist nicht ganz so einfach, wie es das Terminfo-Modell vermuten lässt. Weitere Informationen zu echten DEC-Terminals finden Sie beispielsweise in der DEC VT4xx/5xx-Dokumentation.
  • In der DEC-Welt sind SD und SU Fensterschwenks, keine Puffer-Scrolls. Ein VT525 hat Multiwindowing und diese Steuersequenzen bewegen die Fenster im darunterliegenden Puffer.
  • Einige schlechtere, nicht vollständig 8-Bit-saubere Terminalemulatoren erkennen U+0084 und U+008D nicht richtig als IND und RI und erzwingen die Verwendung der 7-Bit-Aliase.

verwandte Informationen