GNU/Linux >> Linux Esercitazione >  >> Linux

Quando leggo un file con "meno" o "più", come posso ottenere il contenuto a colori?

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 implica grep --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.


Linux
  1. In che modo uno script bash può conoscere la directory in cui è installato quando viene fornito con . operatore?

  2. Come posso ottenere lo stato della tastiera in Linux?

  3. Come ottenere la dimensione di tar.gz nel file (MB) in python

  4. Come combinare il comando 'tar' con 'find'

  5. Come posso ottenere la quantità di memoria disponibile in modo portabile tra le distribuzioni?

Come utilizzare meno comando in Linux con esempi

Come posso ottenere la lunghezza di un file video dalla console?

Come posso trovare il file più vecchio in un albero di directory

Come posso aggiungere un indirizzo IPv6 con un ID ambito al file di configurazione ssh?

In che modo il contenuto dmesg può essere registrato in un file?

Come sostituire il contenuto di una colonna specifica con awk?