GNU/Linux >> Tutoriales Linux >  >> Linux

¿Hay alguna opción para permitir que cat salga con color?

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!


Linux
  1. ¿Hay alguna herramienta CLI para dibujar gráficos en la pantalla durante una sesión X?

  2. Cómo grep con salida de color

  3. ¿Existen códigos de estado de salida estándar en Linux?

  4. Todas las líneas nuevas se eliminan al guardar la salida cat en una variable

  5. Cómo grep salida ps con encabezados

Ccat – Colorear la salida del comando Cat

¿Existen efectos secundarios cuando dos distribuciones comparten una partición de intercambio?

¿Archivos Cat con directorio?

¿Existen identificadores de secuencias de comandos de Shell bien conocidos y bien utilizados para Un*x?

¿Hay alguna alternativa de código abierto al paisaje?

¿Hay algún sistema de archivos para el que `ln -d` tenga éxito?