Prova quanto segue:
less -R
da man less
:
-r
o--raw-control-chars
Causa la visualizzazione di caratteri di controllo "grezzi". (...)
-R
o--RAW-CONTROL-CHARS
Come
-r
, ma solo le sequenze di escape ANSI "color" vengono restituite in formato "raw". (...)
(aggiornamento al 2020)
Il modo più veloce sarebbe usare less -R
rif. https://superuser.com/a/117842/34893
Puoi utilizzare il potere di pigmentizzare con meno - automaticamente! (Non c'è bisogno di pipe a mano.)
Installa pygments
con il tuo gestore di pacchetti o pip (possibilmente chiamato python-pygments
) o scaricalo qui http://pygments.org/download/.
Scrivi un file ~/.lessfilter
#!/bin/sh
case "$1" in
*.awk|*.groff|*.java|*.js|*.m4|*.php|*.pl|*.pm|*.pod|*.sh|\
*.ad[asb]|*.asm|*.inc|*.[ch]|*.[ch]pp|*.[ch]xx|*.cc|*.hh|\
*.lsp|*.l|*.pas|*.p|*.xml|*.xps|*.xsl|*.axp|*.ppd|*.pov|\
*.diff|*.patch|*.py|*.rb|*.sql|*.ebuild|*.eclass)
pygmentize -f 256 "$1";;
.bashrc|.bash_aliases|.bash_environment)
pygmentize -f 256 -l sh "$1";;
*)
if grep -q "#\!/bin/bash" "$1" 2> /dev/null; then
pygmentize -f 256 -l sh "$1"
else
exit 1
fi
esac
exit 0
Nel tuo .bashrc
aggiungi
export LESS='-R'
export LESSOPEN='|~/.lessfilter %s'
Inoltre, devi creare ~/.lessfilter
eseguibile eseguendo
chmod u+x ~/.lessfilter
Testato su Debian.
Hai capito. Ovviamente questo può essere ulteriormente migliorato, accettando più estensioni o analizzando lo shebang per altri interpreti oltre a bash. Vedi alcune delle altre risposte per questo.
L'idea è nata da un vecchio post sul blog dei creatori di Pygments, ma il post originale non esiste più.
Ho trovato la risposta in un altro post:Less and Grep:ottenere risultati colorati quando si utilizza una pipe da grep a less
Quando esegui semplicemente
grep --color
implicagrep --color=auto
che rileva se l'output è un terminale e, in tal caso, abilita i colori. Tuttavia, quando rileva una pipe, disabilita la colorazione. Il seguente comando:grep --color=always "search string" * | less -R
Abiliterà sempre la colorazione e annullerà il rilevamento automatico e otterrai l'evidenziazione del colore senza.
Attenzione:non inserire --color=always
come alias, a volte rompe le cose. Ecco perché c'è un --color=auto
opzione.