GNU/Linux >> Znalost Linux >  >> Linux

Jak mohu získat obsah v barvách při čtení souboru s „méně“ nebo „více“?

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.


Linux
  1. Jak zobrazit obsah zálohy souboru databáze Dconf?

  2. Jak mohu získat stav klávesnice v Linuxu?

  3. Jak získat velikost tar.gz v (MB) souboru v pythonu

  1. Jak získám absolutní adresář souboru v bash?

  2. Jak získat pouze počet řádků souboru

  3. Jak mohu nainstalovat nejnovější Anacondu s wget

  1. Jak zkombinovat příkaz „tar“ s příkazem „najít“

  2. Jak lze obsah dmesg přihlásit do souboru?

  3. Jak nahradit obsah konkrétního sloupce awk?