Un pacchetto GNU, source-highlight, sembra fare il trucco (sebbene non stia usando cat - come sottolinea John T, questo non è possibile con cat in particolare). È disponibile tramite apt-get su Ubuntu e richiede la libreria regex Boost. Controlla il tuo gestore di pacchetti per vedere se entrambi sono disponibili, altrimenti puoi prenderli dal web. La pagina GNU collegata in precedenza ha un collegamento a Boost, credo.
Dopo l'installazione, ho creato un nuovo script nel mio percorso chiamato ccat . Lo script è simile a:
#!/bin/bash
src-hilite-lesspipe.sh $1
Niente di speciale, solo semplificando il meno script che includono con source-highlight. Si comporta proprio come un gatto quando viene chiamato in questo modo.
Tuttavia, anche lo script less incluso è uno script carino da usare. Ho appena aggiunto quanto segue a .bashrc :
export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s"
export LESS=' -R '
Questo script è incluso anche nel manuale online per l'evidenziazione della fonte.
Immagino che potresti alias cat per chiamare src-hilite-lesspipe.sh $1 se hai voglia di ignorare del tutto cat, ma potrebbe non essere desiderabile.
Per visualizzare il codice evidenziato dalla sintassi con qualcosa come cat
, ho creato un ccat
comando seguendo le istruzioni su http://scott.sherrillmix.com/blog/programmer/syntax-highlighting-in-terminal/.
#!/bin/bash
if [ ! -t 0 ];then
file=/dev/stdin
elif [ -f $1 ];then
file=$1
else
echo "Usage: $0 code.c"
echo "or e.g. head code.c|$0"
exit 1
fi
pygmentize -f terminal -g $file
Per visualizzare il codice evidenziato dalla sintassi con qualcosa come less
, io uso vim come sostituto less.
alias less='/usr/share/vim/vim72/macros/less.sh'
Per risolvere questo problema, ho usato highlight. Ho creato una funzione che tenta di stampare il file con l'evidenziazione della sintassi e, in caso di errore, utilizza semplicemente cat per stampare il file. Puoi cambiare il tema dell'evidenziazione della sintassi come preferisci.
function hl { # Overrides the cat command to use syntax highlighting
# Highlight with 'moria' theme to terminal, and suppress errors
highlight $1 -s moria -O xterm256 2> /dev/null
if (($? != 0)); then # If the command had errors
cat $1 # Just cat the file out instead
fi
}
Se sei su un Mac e usi Homebrew (altamente consigliato!), puoi installare highlight eseguendo brew install highlight
. Altrimenti, dovrebbe essere disponibile sulla maggior parte degli altri gestori di pacchetti e può essere scaricato qui.
Ho anche creato una funzione per stampare un file con l'evidenziazione della sintassi come html e aprirlo nel browser per stampare (si basa sul open
comando su OS X):
function hlprint {
# Print with line numbers and 'moria' theme
highlight $1 -l -o print.html -s moria
open print.html # Open in browser
sleep 5 # Give the browser time to open
rm print.html highlight.css # Remove output files
}
Buon divertimento!