Zkuste následující:
less -R
od man less
:
-r
nebo--raw-control-chars
Způsobí zobrazení „raw“ řídicích znaků. (...)
-R
nebo--RAW-CONTROL-CHARS
Jako
-r
, ale pouze ANSI „barva“ escape sekvence jsou na výstupu v „raw“ podobě. (...)
(aktualizace v roce 2020)
Rychlejším způsobem by bylo použití less -R
ref. https://superuser.com/a/117842/34893
Sílu pygmentizace můžete využít s méně – automaticky! (Není nutné potrubí ručně.)
Nainstalujte pygments
s vaším správcem balíčků nebo pipem (možná nazývaným python-pygments
) nebo si jej stáhněte zde http://pygments.org/download/.
Napište soubor ~/.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
Ve vašem .bashrc
přidat
export LESS='-R'
export LESSOPEN='|~/.lessfilter %s'
Také musíte vytvořit ~/.lessfilter
spustitelný spuštěním
chmod u+x ~/.lessfilter
Testováno na Debianu.
Dostanete nápad. To lze samozřejmě dále zlepšit, přijímat více rozšíření nebo analyzovat shebang pro jiné interprety než bash. Podívejte se na některé další odpovědi.
Nápad vzešel ze starého blogového příspěvku od tvůrců Pygments, ale původní příspěvek již neexistuje.
Odpověď jsem dostal v jiném příspěvku:Méně a Grep:Získání barevných výsledků při použití dýmky z grepu na méně
Když jednoduše spustíte
grep --color
znamenágrep --color=auto
který zjišťuje, zda je výstup aterminální, a pokud ano, povoluje barvy. Když však detekuje potrubí, zakazuje barvení. Následující příkaz:grep --color=always "search string" * | less -R
Vždy povolí barvení a přepíše automatickou detekci a získáte barevné zvýraznění.
Upozornění:Nezadávejte --color=always
jako alias to někdy věci rozbije. Proto je zde --color=auto
možnost.