GNU/Linux >> Tutoriales Linux >  >> Linux

Al leer un archivo con `less` o `more`, ¿cómo puedo obtener el contenido en colores?

Prueba lo siguiente:

less -R

de man less :

-r o --raw-control-chars

Hace que se muestren los caracteres de control "en bruto". (...)

-R o --RAW-CONTROL-CHARS

Me gusta -r , pero solo las secuencias de escape de "color" ANSI se emiten en forma "sin procesar". (...)


(actualizado en 2020)

La forma más rápida sería usando less -R árbitro. https://superusuario.com/a/117842/34893

Puede utilizar el poder de pigmentar con menos, ¡automáticamente! (No es necesario canalizar a mano).

Instalar pygments con su administrador de paquetes o pip (posiblemente llamado python-pygments ) o consíguelo aquí http://pygments.org/download/.

Escribe un archivo ~/.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

En tu .bashrc añadir

export LESS='-R'
export LESSOPEN='|~/.lessfilter %s'

Además, debe hacer ~/.lessfilter ejecutable ejecutando

chmod u+x ~/.lessfilter

Probado en Debian.

Entiendes la idea. Por supuesto, esto se puede mejorar aún más, aceptando más extensiones o analizando el shebang para otros intérpretes además de bash. Vea algunas de las otras respuestas para eso.

La idea surgió de una publicación de blog antigua de los creadores de Pygments, pero la publicación original ya no existe.


Obtuve la respuesta en otra publicación:Less and Grep:Obtener resultados coloreados al usar una tubería de grep a less

Cuando simplemente ejecutas grep --color implica grep --color=auto que detecta si la salida es una terminal y, de ser así, activa los colores. Sin embargo, cuando detecta una tubería, desactiva la coloración. El siguiente comando:

grep --color=always "search string" * | less -R

Siempre habilitará la coloración y anulará la detección automática, y obtendrá el resaltado de color sin menos.

Advertencia:no pongas --color=always como alias, a veces rompe cosas. Por eso hay un --color=auto opción.


Linux
  1. ¿Cómo puedo agregar una dirección IPv6 con una ID de alcance al archivo de configuración ssh?

  2. ¿Cómo se puede registrar el contenido de dmesg en un archivo?

  3. ¿Cómo reemplazar el contenido de una columna específica con awk?

  4. ¿Cómo puedo obtener la cantidad de memoria disponible de forma portátil entre distribuciones?

  5. ¿Cómo puedo abrir un archivo con números de línea que se muestran desde la línea de comando en 'vi'?

Cómo usar el comando less en Linux con ejemplos

¿Cómo ver el contenido de una copia de seguridad del archivo de base de datos Dconf?

¿Cómo puede un script bash saber el directorio en el que está instalado cuando se obtiene con . ¿operador?

Cómo obtener el tamaño de tar.gz en un archivo (MB) en python

¿Cómo obtener un archivo con el nombre correcto cuando se redirige?

¿Cómo puedo obtener la duración de un archivo de video desde la consola?