Un paquete GNU, source-highlight, parece hacer el truco (aunque no está usando cat, como señala John T, esto no es posible con cat específicamente). Está disponible a través de apt-get en Ubuntu y requiere la biblioteca Boost regex. Verifique su administrador de paquetes para ver si ambos están disponibles; de lo contrario, puede obtenerlos de la web. La página de GNU enlazada anteriormente tiene un enlace a Boost, creo.
Después de la instalación, creé un nuevo script en mi ruta llamado ccat . El guión se parece a:
#!/bin/bash
src-hilite-lesspipe.sh $1
Nada sofisticado, simplemente simplificando menos script que incluyen con source-highlight. Actúa como un gato cuando se le llama de esta manera.
Sin embargo, el script less incluido también es un buen script para usar. Acabo de agregar lo siguiente a .bashrc :
export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s"
export LESS=' -R '
Ese script también está incluido en el manual en línea para source-highlight.
Supongo que podrías usar un alias cat para llamar a src-hilite-lesspipe.sh $1 si quisieras ignorar a cat por completo, pero eso podría no ser deseable.
Para generar código resaltado de sintaxis con algo como cat
, creé un ccat
comando siguiendo las instrucciones en 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
Para generar código resaltado de sintaxis con algo como less
, uso vim como un reemplazo menor.
alias less='/usr/share/vim/vim72/macros/less.sh'
Para resolver esto, usé el resaltado. Creé una función que intenta imprimir el archivo con resaltado de sintaxis y, si falla, recurre a simplemente usar cat para imprimir el archivo. Puede cambiar el tema de resaltado de sintaxis a lo que desee.
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
}
Si tiene una Mac y usa Homebrew (¡muy recomendable!), puede instalar Highlight ejecutando brew install highlight
. De lo contrario, debería estar disponible en la mayoría de los demás administradores de paquetes y se puede descargar aquí.
También hice una función para imprimir un archivo con resaltado de sintaxis como html y abrirlo en el navegador para imprimir (se basa en el open
comando en 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
}
¡Disfrútalo!