%3F.png)
Im Grunde möchte ich mein Terminal animieren, aber da der Text zu lang ist, brauche ich einen Pager. Sagen wir einfach, ich möchte meine Textfarbe regelmäßig in Less ändern. Ist das möglich?
Antwort1
BEARBEITENDie Antworten vonvonbrandUndThomas Dickeysind technisch genauer.
less
unterstützt reine ANSI-Escapes, wenn die -r
Option verwendet wird. Außerdem wird „Erase in line“ unterstützt.
Sie werden jedoch keine Animation sehen. Beispiel:
echo -e "foo\x1b[1G\x1b[2Kbar" > test.ansi
less -r test.ansi
Es wird nur gedruckt bar
.
more
übergibt standardmäßig ANSI-Escapezeichen, unterstützt aber, soweit ich es getestet habe, keine Zeilenbearbeitung.
Siehe auchdiese Stackoverflow-Antwort zu den Unterschieden less
zwischen more
undmost
.
Antwort2
Das Löschen der Zeile hat nur eine indirekte Beziehung zum Ändern der Terminalfarben: Wenn Sie dieHintergrundFarbe, dann werden viele Terminals (Linux-Konsole, rxvt, xterm sowie Programme, die eines dieser imitieren) den freigelegten Bereich des Hintergrunds mit dieser Farbe einfärben.
less
verwendet zwar einige Löschvorgänge, aber nicht \x1b[2K
. Beim Lesen derQuelleverwendet mehrere Funktionen über die Termcap-Schnittstelle. Die wichtigsten Teile sind imterminfo(5)Handbuchseite:
clr_bol el1 cb Clear to beginning
of line
clr_eol el ce clear to end of line
(P)
Das heißt, \x1b[K
und \x1b[K
für el1
bzw. el
. Es gibt keine herkömmliche Termcap-Funktion el2
, und (es sei denn, Sie weisen mit der Option oder less
an, den Inhalt einer Datei einfach durchzureichen ) sendet kein .-r
-R
less
\x1b[2K
Dasselbe gilt more
beispielsweise für , wie in derutil-linux
Paket: Es verwendet nur Funktionen von Termcap. Im Gegensatz zu less
hat more
es keine Option, nicht druckbare Zeichen direkt an das Terminal zu senden.
Wenn Sie die Option -r
oder von verwenden , müssen Sie bedenken, dass es-R
less
begrenzt: less
weiß nicht (oder kümmert sich nicht darum), was diese Fluchten bewirken. Von derHandbuchseite:
-r
oder--raw-control-chars
Ursachen"roh"Steuerzeichen, die angezeigt werden sollen. Standardmäßig werden Steuerzeichen in der Caret-Notation angezeigt. Beispielsweise wird ein Control-A (Oktal 001) als „^A“ angezeigt. Warnung: wenn die-r
Option verwendet wird,less
kann nichtBehalten Sie das tatsächliche Erscheinungsbild des Bildschirms im Auge (da dies davon abhängt, wie der Bildschirm auf die einzelnen Steuerzeichentypen reagiert). Dadurch können verschiedene Anzeigeprobleme auftreten, z. B. dass lange Zeilen an der falschen Stelle aufgeteilt werden.
Antwort3
Auf die Escape-Sequenzen reagiert normalerweise das TTY (es sei denn, das laufende Programm legt fest, dass es diese nicht berücksichtigt. In diesem Fall kann das Programm dies selbst tun). more(1)
Es führt eine eher primitive Bildschirmumschreibung durch (es reicht wirklich aus, Zeilen in Bildschirmlänge zu schreiben und auf einen Tastendruck zu warten), daher würde ich annehmen, dass es die Eingaben einfach durchlässt. less(1)
Es muss ein Backup durchführen, sodass eine detailliertere Steuerung des Bildschirms erforderlich ist.