¿Hay alguna opción para dejar que el gato salga con color?

Respuestas:

18

Un paquete de GNU, fuente-resaltado , 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 Boge 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 vinculada 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 ve así:

#!/bin/bash
src-hilite-lesspipe.sh $1

Nada sofisticado, simplemente simplificando la menor secuencia de comandos que incluyen con el resaltado de origen. Actúa como un gato cuando se le llama de esta manera.

Sin embargo, el script menos incluido es un buen script para usar también. Acabo de agregar lo siguiente a .bashrc :

export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s"
export LESS=' -R '

Ese script también se incluye en el manual en línea para resaltar la fuente.

Supongo que podría alias cat para llamar a src-hilite-lesspipe.sh $ 1 si desea ignorar a cat por completo, pero eso podría no ser deseable.

rgm
fuente
44
Yo, personalmente, prefiero un alias a los scripts de bash de una línea que terminan con $1:).
mgalgs
Sí, mitch_feaster, estás en el clavo. :]
rgm
2
Funciona en una Mac también con brew install source-highlight. No se puede colorear yaml :(
Sairam
9

Para generar un código resaltado de sintaxis con algo así cat, creé un ccatcomando 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 un código resaltado de sintaxis con algo como less, utilizo vim como un reemplazo menor.

alias less='/usr/share/vim/vim72/macros/less.sh'
michaelvobrien
fuente
Cómo instalar pygmentize: easy_install --install-dir $ SOMEDIR Pygments
psihodelia
Me gusta este tipo de soluciones portátiles. .functionscolorize(){...}
Agregué
3

Para resolver esto, usé resaltar . Hice una función que intenta imprimir el archivo con resaltado de sintaxis, y si falla, vuelve a usar simplemente 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 está en una Mac y usa Homebrew (¡muy recomendable!), Puede instalar resaltar ejecutando brew install highlight. De lo contrario, debería estar disponible en la mayoría de los otros administradores de paquetes y puede descargarse 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 opencomando 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
}

¡Disfrutar!

Kevin
fuente
1

No, el gato no tiene habilidades de resaltado de sintaxis. Si desea ver el código fuente con resaltado de sintaxis, póngalo en vim o en el editor de su elección (que tenga resaltado de sintaxis). De esta manera, incluso puede desplazarse por la salida si es un archivo largo usando Ctrl+ F(hacia adelante) y Ctrl+ B(hacia atrás).

John T
fuente