Servus,
steht schon in der Manpage:
-R or --RAW-CONTROL-CHARS
Like -r, but only ANSI "color" escape sequences are out‐
put in "raw" form. Unlike -r, the screen appearance is
maintained correctly in most cases. ANSI "color" escape
sequences are sequences of the form:
ESC [ ... m
where the "..." is zero or more color specification
characters.
[...]
Also behält hier das „hi“ seine gelbe Hintergrundfarbe:
$ (tput bold; tput setab 3; echo hi) | less
hi
Du musst „less
“ also immer mit „-R
“ aufrufen und dafür gibt es die schöne Umgebungsvariable „$LESS
“, die bei mir zum Beispiel so aussieht (ab damit in deine „~/.bashrc
“):
| # Less-Optionen:
# -R: Lasse nur ANSI-Color-Sequences durch.
# -S: Lange Zeilen abschneiden, scrollen nach rechts raus.
# -X: Keine Termcap-(De)Initialisierung. Löscht den Screen nicht.
# -# n: Seitwärts scrollen bei überlangen Zeilen in diesen Schritten.
export LESS="-iRSX -# 2"
|
Auf der anderen Seite erkennt „ls
“ auch, ob es in eine Pipe schreibt oder direkt auf das Terminal, und stellt eventuell die Farben ab. Das heißt, du wirst dort die Farbausgabe forcieren müssen. Dafür gibt es den Parameter „--color=always
“, was du in ein Alias für „ls
“ wirst packen müssen. Manuell sähe der Aufruf wohl so aus:
ls --color=always | less -R