¿Hay un método para colorear la salida de cat
la manera que lo grep
hace?
Porque grep
, en la mayoría de las consolas, muestra una salida en color que resalta las palabras clave buscadas. De lo contrario, puede forzarlo llamando. grep --color
¿Hay una forma genérica de colorear la salida de cualquier programa de acuerdo con su elección personal?
Por lo que entiendo, el programa en sí no es responsable de los colores. Es la concha.
Estoy usando el shell predeterminado en FreeBSD 5.2.1 que parece que nunca ha visto colores desde la época.
unix
syntax-highlighting
color-scheme
Lelouch Lamperouge
fuente
fuente
Respuestas:
cat
con resaltado de sintaxis simplemente está fuera de alcance.cat
No es para eso. Si solo desea tener el contenido completo de algún archivo coloreado de alguna manera (con el mismo color para todo el archivo), puede utilizar secuencias de escape de terminal para controlar el color.Aquí hay un script de muestra que elegirá el color según el tipo de archivo (puede usar algo como esto en lugar de invocarlo
cat
directamente):Lo anterior (en un terminal que admita esas secuencias de escape) imprimirá cualquier archivo de texto como 'negrita' e imprimirá cualquier archivo binario como rojo. Puede utilizarlo en
strings
lugar decat
imprimir archivos binarios y puede mejorar la lógica para que se adapte a sus necesidades.fuente
cat
/grep
/any particular program
cat
invocación codificada con algo$cmd
que se inicializa como $ 1 si hay dos argumentos o un valor predeterminado si solo hay uno. A continuación, se escribe:colorful.sh grep file
.pygmentize
no es capaz de colorear. ¿Algun consejo?Lo recomendaría
pygmentize
del paquete pythonpython-pygments
. Es posible que desee definir el siguiente alias práctico (a menos que lo useccat
del paquete ccrypt).Y si quieres números de línea:
fuente
highlight
comando linux .alias ccat='highlight -O ansi'
alias dog='pygmentize -g'
, porque los perros son más geniales que los gatos.#!/bin/bash \n pygmentize -g $1 | less -R
nyancat
.Opciones:
pygmentize es bueno. Tengo un alias:
pero resaltar es otra alternativa ampliamente disponible es
Instalación:
Puede que tenga que instalar
pygments
usando:y para
highlight
paquetes que están fácilmente disponibles en todas las distribucionesEn acción:
Adjunto tiros para ambos abajo para una buena comparación en resaltados
Aquí está
pygmentize
en acción:y esto es
highlight
:fuente
highlight
funcionó muy bien para mis necesidades y se instaló fácilmente, gracias. Si desea ver archivos sin extensiones (por ejemplo, .bash_aliases), agregue--syntax=bash
además-O ansi
de forzarlo.highlight
es 34 veces más rápido que ese programa de Python. El poder de las lenguas clásicas se mantiene fuerte.highlight
, desea agregar--force
al alias, de lo contrario arrojará un error para los formatos de archivo que no entiende, mientras que comocat
reemplazo desea que todavía muestre la salida sin resaltar, que es lo que--force
hace. Todos juntos:alias cat="highlight -O ansi --force"
-O ansi
valor predeterminado es generar html :-)Desde finales de abril de 2018 en adelante:
El proyecto es un clon de gato con soporte para colores y personalizaciones escritas en Rust. Ofrece no solo resaltado de sintaxis con múltiples temas, sino también integración con Git. Como se describe en la documentación:
Es innecesario decir que es mucho más rápido que pygmentize y no se ahoga cuando se enfrenta a archivos grandes.
El código fuente y las versiones binarias + instrucciones de instalación se pueden encontrar en el repositorio de Github, así como una comparación con programas alternativos .
fuente
bat
permanece en modo interactivo por defecto. Para que se comporte máscat
, úsalo con-pp
argumentos. Un alias comoalias cat="bat -pp"
es probablemente lo que la gente está buscando.vimcat
es de un solo archivo (script de shell) y funciona bien:http://www.vim.org/scripts/script.php?script_id=4325
La última actualización es de diciembre de 2013. Sugerencia: puede forzar el reconocimiento del tipo de archivo mediante
vimcat -c "set ft=<type>"
.fuente
~/.vimrc
resaltado de sintaxis será el mismo cuando desee editar (vim) o imprimir (vimcat). Tenga en cuenta que se puede encontrar una versión actualizada de vimcat en el repositorio de vimpager .vimpager
no usa mi vim colorscheme.vimcat
(1 ~ 2 segundos de tiempo de ejecución) es mucho más lento quepymentize
(~ 200 ms), que es mucho más lento quehighlight
(~ 20 ms), que es mucho más lento quecat
(~ 2 ms). Por otra parte,vimcat
se ocupa más tipos de archivos y es más precisa que lahightlight
ypygmentize
, y es todavía más rápido que la primeravim
continuación:q
. Por lo tanto, gana mi elección para esta tarea específica.La herramienta que está buscando es probablemente supercat (aquí hay una introducción rápida publicada por Linux Journal).
Me doy cuenta de que esta respuesta llega tarde y que no cumple completamente con los requisitos de OP. Así que lo agrego solo como referencia (podría ser útil para otras personas que buscan cómo colorear la salida del archivo de texto).
fuente
Hay una versión coloreada de cat - ccat . Consíguelo en https://github.com/jingweno/ccat/ .
Instalación en Linux / Windows / macOS
Es un solo ejecutable independiente, por lo que para instalarlo puede desempaquetar la versión binaria para su sistema operativo desde https://github.com/jingweno/ccat/releases y copiar el binario ccat, por ejemplo, en
/usr/local/bin
.Si desea evitar los binarios, o si no hay un binario para su plataforma (por ejemplo, raspberry pi, etc.), puede compilar alternativamente desde la fuente dado que tiene un
go
entorno de desarrollo de trabajo (apt install golang
en Linux basado en Debian obrew install golang
en Mac):Instalación en Mac a través de homebrew
Alias a
cat
Para reemplazar regular
cat
conccat
add in~/.bashrc
:ccat
se implementa en Go , por lo que es un binario nativo que se ejecuta mucho más rápido que las soluciones basadas en Python, como pygments , el módulo detráspygmentize
; No vi ninguna diferencia de velocidad notable entrecat
yccat
.fuente
brew install ccat
es suficiente, ya no es necesariobrew tap
.La mejor manera y la manera más fácil de hacerlo si tiene vim en su máquina es usar el
vimcat
que viene con elvimpager
programa.git clone git://github.com/rkitover/vimpager cd vimpager sudo make install
Ejecute vimcat:
vimcat index.html
fuente
highlight
veces más lento que y 3 veces más lento quebat
para un script bash de 30 líneas en mi máquina.source-highlight
Tal vez sea posible encontrar interesantes
source-highlight
lanzados bajo GNU : un paquete diferente dehighlight
.Extracto de
apt-cache show source-highlight
:Hice algunos alias (Cat y PCat, ver más abajo) y esta es su salida
Puede instalar en Debian basado en
y agréguelo como alias, por ejemplo, en su
.bash_aliases
con algo como la línea de abajo.O puede hacer un alias similar (sin que
-i
al final tenga la posibilidad de canalizar )Entre las opciones que es posible leer de
man source-highlight
los-s
subrayados es posible seleccionar o forzar el resaltado por línea de comando o dejar al programa esta tarea:fuente
less
consource-highlight
, alguien en GitHub da la respuesta:export LESSOPEN="| source-highlight -f esc -i %s -o STDOUT"
yexport LESS=" -R "
. Muy útil cuandopygmentize
no está disponible y no se puede instalar.Eso no es correcto El terminal solo interpreta los códigos de color que se envían al terminal. Dependiendo de su capacidad, puede ignorar ciertos códigos de formato / coloración.
Desde la página de manual no parece que cat soporta colorear su salida. Incluso si fuera para soportar la coloración como grep, ¿qué debería colorear en el archivo de texto? La sintaxis que resalta el conocimiento requerido del lenguaje subyacente que no está dentro del alcance de una utilidad simple como cat.
Puede probar editores más potentes como vim, emacs, gedit, etc. en la plataforma Unix si su objetivo es ver el código resaltado.
fuente
cat
No es para imprimir archivos con números de línea, no es para comprimir varias líneas en blanco, no es para mirar caracteres ASCII que no se imprimen, es para concatenar archivos". - del estilo UNIX, o cat -v Considerado dañino .En OSX simplemente hazlo
brew install ccat
.https://github.com/jingweno/ccat . Como cat pero muestra contenido con resaltado de sintaxis. Construido en Go.
fuente
murciélago hace exactamente eso y puede ser alias para gato
alias cat='bat'
fuente
Antigua pregunta, solo respondiendo por el registro para proporcionar la solución que terminé usando. Quizás esto sea un poco confuso (probablemente no sea la intención original del parámetro), pero:
alias cgrep = 'grep -C 9000'gato lo que sea | cgrep 'snozzberries'..
grep -C N
proporcionará N líneas de contexto encima y debajo del elemento encontrado. Si es más grande que la entrada, se incluye toda la entrada. En este caso, solo nos aseguramos de que sea más grande que cualquier salida de terminal típica que queremos ver manualmente, que generalmente es lo que está buscando hacer si se resalta.EDITAR: Sin embargo, esta solución sugerida a continuación por Beni Cherniavsky-Paskin es superior: coincide (y resalta) la palabra que está buscando o el comienzo de la línea (no resaltable). El resultado neto es exactamente lo que quieres.
Esa es la mejor solución nueva que he visto para ese problema, gracias Beni.
fuente
egrep 'snozzberries|$'
En esta pregunta, /superuser/602294/is-there-colorizer-utility-that-can-take-command-output-and-colorize-it-accordin
grcat
/grc
tool se recomendó como alternativa asupercat
.Hombre de grc y de
grcat
; es parte del paquete grc ( fuentes ):fuente
He escrito el pequeño script para realizar la coloración usando
pygmentize
.Y luego crea un alias para el script.
alias cat=colorize_via_pygmentize
. Además, no olvide guardar esto en ~ / .bashrc .fuente
Si solo desea que un trazador de líneas establezca la
cat
salida en un color determinado, puede agregaralias cat="echo -en 'code' | cat - "
para usted
~/.$(basename $SHELL)rc
Aquí hay una esencia con códigos de color: https://gist.github.com/chrisopedia/8754917
Me gusta
'\e[1;93m'
, que es amarillo de alta intensidad. Se parece a esto:fuente
solo use vim y este archivo vimrc .
un trazador de líneas:
nano -v
También puede ser una alternativa.fuente
Coloque en su ~ / .bashrc
luego
fuente