¿Hay un método para colorear la salida de catla manera que lo grephace?
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:
catcon resaltado de sintaxis simplemente está fuera de alcance.catNo 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
catdirectamente):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
stringslugar decatimprimir archivos binarios y puede mejorar la lógica para que se adapte a sus necesidades.fuente
cat/grep/any particular programcatinvocación codificada con algo$cmdque 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.pygmentizeno es capaz de colorear. ¿Algun consejo?Lo recomendaría
pygmentizedel paquete pythonpython-pygments. Es posible que desee definir el siguiente alias práctico (a menos que lo useccatdel paquete ccrypt).Y si quieres números de línea:
fuente
highlightcomando 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 -Rnyancat.Opciones:
pygmentize es bueno. Tengo un alias:
pero resaltar es otra alternativa ampliamente disponible es
Instalación:
Puede que tenga que instalar
pygmentsusando:y para
highlightpaquetes 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á
pygmentizeen acción:y esto es
highlight:fuente
highlightfuncionó muy bien para mis necesidades y se instaló fácilmente, gracias. Si desea ver archivos sin extensiones (por ejemplo, .bash_aliases), agregue--syntax=bashademás-O anside forzarlo.highlightes 34 veces más rápido que ese programa de Python. El poder de las lenguas clásicas se mantiene fuerte.highlight, desea agregar--forceal alias, de lo contrario arrojará un error para los formatos de archivo que no entiende, mientras que comocatreemplazo desea que todavía muestre la salida sin resaltar, que es lo que--forcehace. Todos juntos:alias cat="highlight -O ansi --force"-O ansivalor 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
batpermanece en modo interactivo por defecto. Para que se comporte máscat, úsalo con-ppargumentos. Un alias comoalias cat="bat -pp"es probablemente lo que la gente está buscando.vimcates 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
~/.vimrcresaltado 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 .vimpagerno 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,vimcatse ocupa más tipos de archivos y es más precisa que lahightlightypygmentize, y es todavía más rápido que la primeravimcontinuació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
goentorno de desarrollo de trabajo (apt install golangen Linux basado en Debian obrew install golangen Mac):Instalación en Mac a través de homebrew
Alias a
catPara reemplazar regular
catconccatadd in~/.bashrc:ccatse 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 entrecatyccat.fuente
brew install ccates 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
vimcatque viene con elvimpagerprograma.git clone git://github.com/rkitover/vimpager cd vimpager sudo make installEjecute vimcat:
vimcat index.htmlfuente
highlightveces más lento que y 3 veces más lento quebatpara un script bash de 30 líneas en mi máquina.source-highlightTal vez sea posible encontrar interesantes
source-highlightlanzados 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_aliasescon algo como la línea de abajo.O puede hacer un alias similar (sin que
-ial final tenga la posibilidad de canalizar )Entre las opciones que es posible leer de
man source-highlightlos-ssubrayados es posible seleccionar o forzar el resaltado por línea de comando o dejar al programa esta tarea:fuente
lessconsource-highlight, alguien en GitHub da la respuesta:export LESSOPEN="| source-highlight -f esc -i %s -o STDOUT"yexport LESS=" -R ". Muy útil cuandopygmentizeno 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
catNo 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 Nproporcionará 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/grctool 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
catsalida en un color determinado, puede agregaralias cat="echo -en 'code' | cat - "para usted
~/.$(basename $SHELL)rcAquí 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 -vTambién puede ser una alternativa.fuente
Coloque en su ~ / .bashrc
luego
fuente