Resaltado de sintaxis/coloreado de gato
¿ Existe algún método para colorear la salida de cat
?grep
Para 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
Existe una forma genérica de colorear la salida de cualquier programa según su elección personal?
Por lo que tengo entendido, 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 esa época.
Lo recomendaría pygmentize
del paquete Python python-pygments
. Es posible que desee definir el siguiente alias útil (a menos que lo utilice ccat
desde el paquete ccrypt).
alias ccat='pygmentize -g'
Y si quieres números de línea:
alias ccat='pygmentize -g -O style=colorful,linenos=1'
Agregue uno de estos comandos anteriores para ~/.bash_aliases
lograr un efecto permanente
Opciones:
pigmentar es bueno. Tengo un alias:
alias c='pygmentize -g'
pero lo más destacado es que otra alternativa ampliamente disponible es
alias cats='highlight -O ansi --force'
Instalación:
Es posible que tengas que instalar pygments
usando uno de estos:
sudo apt install python-pygments
sudo pip install pygments
sudo easy_install Pygments #for Mac user
y para highlight
el paquete que está fácilmente disponible en todas las distribuciones
sudo apt install highlight
sudo yum install highlight
- Repositorio de Bitbucket: https://bitbucket.org/birkenfeld/pygments-main
- Espejo de GitHub: https://github.com/sglyon/pygments
En acción:
Adjunto fotos de ambos a continuación para una buena comparación en los aspectos más destacados.
Aquí está pygmentize
en acción:
y esto es highlight
:
Desde finales de abril de 2018 en adelante:
Bat : un clon de cat(1) con resaltado de sintaxis e integración con Git.
El proyecto es un clon de gato con soporte para colores y personalizaciones escritas en Rust. Ofrece no sólo resaltado de sintaxis con múltiples temas, sino también integración con Git. Como se describe en la documentación:
bat intenta lograr los siguientes objetivos :
- Proporciona resaltado de sintaxis atractivo y avanzado
- Integre con Git para mostrar modificaciones de archivos
- Sea un reemplazo directo para el gato (POSIX)
- Ofrezca una interfaz de línea de comandos fácil de usar
No hace falta decir que es mucho más rápido que pigmentar 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 .
Hay versiones coloreadas de cat
(sus nombres son difíciles de buscar en Google, a menos que agregues pager
y github
o cat replacement
).
- bat [óxido] https://github.com/sharkdp/bat (mantenido activamente)
- ccat [golang] https://github.com/jingweno/ccat/
Ambos bat
y ccat
son binarios nativos y son casi tan rápidos como, /bin/cat
a diferencia de las soluciones basadas en Python, como pygmentize .
instalandobat
- Mac OS:
brew install bat
- Linux:
apt install bat
- Ventanas:
choco install bat
- Binarios: https://github.com/sharkdp/bat/releases
- Construir desde la fuente:
cargo install --locked bat
(requierecargo
las herramientas de construcción de óxido)
consulte los pasos para obtener más sistemas operativos en https://github.com/sharkdp/bat#installation
Instalaciónccat
- obtenga los binarios para Linux/Windows/macOS y copie ccat , por ejemplo, en
/usr/local/bin
. - Mac:
brew install ccat
Si no hay un binario para su plataforma (por ejemplo, raspberry pi, etc.), puede instalarlo desde la fuente (requiere el entorno golang ):
go get -u github.com/jingweno/ccat
# NOTE: as of Go 1.18 instead of 'go get xyz' use 'go install xyz', e.g.
go install github.com/jingweno/ccat@latest
Alias concat
La configuración de ootb bat
muestra números de línea y realiza paginación que no necesitaba, así que le puse un alias para desactivar la función que no quería:
Agregue su ~/.bashrc
( ~/.zshrc
, etc.):
alias cat="bat --paging=never -pp --style='plain' --theme=TwoDark $*"
Para ccat
:
alias cat="ccat $*"
En los casos en que necesite el ottb simple, cat
aún puede invocar la versión sin alias anteponiendo una barra invertida, por ejemplo
\cat /etc/hosts
o usando la ruta absoluta:
/bin/cat /etc/hosts