Existe-t-il une méthode pour coloriser la sortie de cat
, comme le grep
fait.
Car grep
, dans la plupart des consoles, il affiche une sortie colorée mettant en évidence les mots clés recherchés. Sinon, vous pouvez le forcer en appelantgrep --color
Y a t-il un moyen générique de colorer la sortie de n'importe quel programme selon votre choix personnel.
D'après ce que je comprends, le programme lui-même n'est pas responsable des couleurs. C'est la coquille.
J'utilise le shell par défaut dans FreeBSD 5.2.1 qui semble n'avoir jamais vu de couleurs depuis l'époque.
unix
syntax-highlighting
color-scheme
Lelouch Lamperouge
la source
la source
Réponses:
cat
avec la coloration syntaxique est tout simplement hors de portée.cat
n'est pas fait pour ça. Si vous voulez simplement que le contenu entier d'un fichier soit coloré d'une certaine manière (avec la même couleur pour tout le fichier), vous pouvez utiliser des séquences d'échappement de terminal pour contrôler la couleur.Voici un exemple de script qui choisira la couleur en fonction du type de fichier (vous pouvez utiliser quelque chose comme ça au lieu d'invoquer
cat
directement):Ce qui précède (sur un terminal qui prend en charge ces séquences d'échappement) imprimera tout fichier texte en gras et imprimera tout fichier binaire en rouge. Vous pouvez utiliser
strings
au lieu decat
pour imprimer des fichiers binaires et vous pouvez améliorer la logique pour l'adapter à vos besoins.la source
cat
/grep
/any particular program
cat
invocation codée en dur par une$cmd
qui est initialisée comme $ 1 s'il y a deux arguments ou par défaut s'il n'y en a qu'un. Ensuite , vous écrivez simplement:colorful.sh grep file
.pygmentize
ne peut pas colorer. Des conseils?Je recommanderais
pygmentize
du paquet pythonpython-pygments
. Vous pouvez définir l'alias pratique suivante (sauf si vous utilisezccat
du package ccrypt).Et si vous voulez des numéros de ligne:
la source
highlight
commande linux .alias ccat='highlight -O ansi'
alias dog='pygmentize -g'
, car les chiens sont plus frais que les chats!#!/bin/bash \n pygmentize -g $1 | less -R
nyancat
.Options:
pygmentize est bon. J'ai un alias:
mais le point culminant est une autre alternative largement disponible est
Installation:
Vous devrez peut-être installer en
pygments
utilisant:et pour le
highlight
package qui est facilement disponible sur toutes les distributionsEn action:
Je joins des photos pour les deux ci-dessous pour une bonne comparaison des surbrillances
Voici
pygmentize
en action:et c'est
highlight
:la source
highlight
a très bien fonctionné pour mes besoins et installé facilement, merci. Si vous voulez regarder des fichiers sans extensions (par exemple .bash_aliases), ajoutez--syntax=bash
en plus pour-O ansi
le forcer.highlight
est 34 fois plus rapide que ce programme python. La puissance des langues classiques est forte.highlight
, vous souhaitez ajouter--force
à l'alias, sinon cela générera une erreur pour les formats de fichier qu'il ne comprend pas, tandis qu'encat
remplacement, vous voulez qu'il affiche toujours la sortie sans surligner, ce qui est le--force
cas. Tous ensemble:alias cat="highlight -O ansi --force"
-O ansi
la valeur par défaut est d'afficher html :-)A partir de fin avril 2018:
Le projet est un clone de chat avec prise en charge des couleurs et des personnalisations écrites en rouille. Il offre non seulement la mise en évidence de la syntaxe avec plusieurs thèmes, mais également l'intégration de Git. Comme décrit dans la documentation:
Il va sans dire que c'est beaucoup plus rapide que pygmentize et ne s'étouffe pas lorsqu'il est confronté à de gros fichiers.
Le code source et les versions binaires + les instructions d'installation peuvent être trouvés dans le référentiel Github, ainsi qu'une comparaison avec d'autres programmes .
la source
bat
reste en mode interactif par défaut. Pour qu'il se comporte davantagecat
, utilisez-le avec-pp
argument. Un alias commealias cat="bat -pp"
est probablement ce que les gens recherchent.vimcat
est un fichier unique (script shell) et fonctionne bien:http://www.vim.org/scripts/script.php?script_id=4325
La dernière mise à jour date de décembre 2013. Astuce: vous pouvez forcer la reconnaissance du type de fichier par
vimcat -c "set ft=<type>"
.la source
~/.vimrc
mise en évidence de syntaxe sera donc la même lorsque vous souhaitez éditer (vim) ou imprimer (vimcat). Notez qu'une version mise à jour de vimcat peut être trouvée dans le référentiel vimpager .vimpager
n'utilise pas mon schéma de couleurs vim.vimcat
(1 ~ 2 secondes d'exécution) est beaucoup plus lent quepymentize
(~ 200highlight
ms), ce qui est beaucoup plus lent que (~ 20 ms), ce qui est beaucoup plus lent quecat
(~ 2 ms). D'autre part,vimcat
poignées plusieurs types de fichiers et est plus précis quehightlight
etpygmentize
, et il est encore plus rapide que la premièrevim
alors:q
. Cela mérite donc mon choix pour cette tâche spécifique.L'outil que vous recherchez est probablement supercat (voici une introduction rapide publiée par Linux Journal).
Je me rends compte que cette réponse est en retard et qu'elle ne répond pas pleinement aux exigences du PO. Je l'ajoute donc juste pour référence (cela pourrait être utile pour d'autres personnes cherchant à coloriser la sortie d'un fichier texte).
la source
Il existe une version colorisée de chat - ccat . Obtenez-le sur https://github.com/jingweno/ccat/ .
Installation sous Linux / Windows / macOS
Il s'agit d'un seul exécutable autonome.Pour l'installer, vous pouvez décompresser la version binaire pour votre système d'exploitation à partir de https://github.com/jingweno/ccat/releases et copier le binaire ccat par exemple dans
/usr/local/bin
.Si vous voulez éviter les binaires, ou s'il n'y a pas de binaire pour votre plate-forme (par exemple, raspberry pi, etc.), vous pouvez alternativement compiler à partir de la source étant donné que vous avez un
go
environnement de développement fonctionnel (apt install golang
sur les linux basés sur Debian oubrew install golang
sur mac):Installation sur Mac via homebrew
Alias à
cat
Pour remplacer régulier
cat
par unccat
complément~/.bashrc
:ccat
est implémenté dans Go , c'est donc un binaire natif qui s'exécute beaucoup plus rapidement que les solutions basées sur Python, comme les pygments , le module derrièrepygmentize
; Je n'ai vu aucune différence de vitesse notable entrecat
etccat
.la source
brew install ccat
suffise, plus besoin de le fairebrew tap
.La meilleure façon et la plus simple de le faire si vous avez vim dans votre machine est d'utiliser le
vimcat
logiciel fournivimpager
.git clone git://github.com/rkitover/vimpager cd vimpager sudo make install
Exécutez vimcat:
vimcat index.html
la source
highlight
et 3x plus lent quebat
pour un script bash de 30 lignes sur ma machine.source-highlight
Peut-être qu'il est possible de trouver des versions intéressantes
source-highlight
sous GNU : un package différent dehighlight
.Extrait de
apt-cache show source-highlight
:J'ai fait quelques alias (Cat et PCat, voir ci-dessous) et c'est leur sortie
Vous pouvez installer sur Debian avec
et ajoutez-le comme alias par exemple dans votre
.bash_aliases
avec quelque chose comme la ligne ci-dessous.Ou vous pouvez faire un alias similaire (sans le
-i
à la fin pour avoir la possibilité de le canaliser )Parmi les options qu'il est possible de lire à partir
man source-highlight
des-s
soulignements, il est possible de sélectionner, ou de forcer , la mise en surbrillance par ligne de commande ou de laisser au programme ce devoir:la source
less
avecsource-highlight
, quelqu'un sur GitHub donne la réponse:export LESSOPEN="| source-highlight -f esc -i %s -o STDOUT"
etexport LESS=" -R "
. Très utile lorsqu'ilpygmentize
n'est pas disponible et ne peut pas être installé.Ce n'est pas correct. Le terminal interprète simplement les codes de couleur qui sont envoyés au terminal. Selon sa capacité, il peut ignorer certains codes de formatage / coloriage.
Depuis la page de manuel, il ne semble pas que cat supporte la coloration de sa sortie. Même s'il devait prendre en charge la coloration comme grep, que devrait-il colorer dans le fichier texte? Syntaxe mettant en évidence la connaissance requise du langage sous-jacent qui n'est pas dans le cadre d'un simple utilitaire comme cat.
Vous pouvez essayer des éditeurs plus puissants comme vim, emacs, gedit, etc. sur la plate-forme unix si voir le code mis en évidence est votre objectif.
la source
cat
n'est pas pour imprimer des fichiers avec des numéros de ligne, ce n'est pas pour compresser plusieurs lignes vides, ce n'est pas pour regarder des caractères ASCII non imprimables, c'est pour concaténer des fichiers." - à partir du style UNIX, ou cat -v considéré comme nocif .Sur OSX, faites simplement
brew install ccat
.https://github.com/jingweno/ccat . Comme chat mais affiche du contenu avec une coloration syntaxique. Construit en Go.
la source
bat fait exactement cela et peut être aliasé au chat
alias cat='bat'
la source
Vieille question, juste répondre pour le compte rendu pour fournir la solution que j'ai finalement utilisée. C'est peut-être un peu hacky (probablement pas l'intention initiale du paramètre), mais:
alias cgrep = 'grep -C 9000'chat que ce soit | cgrep 'snozzberries'..
grep -C N
fournira N lignes de contexte au-dessus et au-dessous de l'élément trouvé. S'il est plus grand que l'entrée, l'entrée entière est incluse. Dans ce cas, nous nous assurons simplement qu'il est plus grand que n'importe quelle sortie de terminal typique que nous voudrons examiner manuellement, ce qui est généralement ce que vous cherchez à faire si vous le mettez en surbrillance.EDIT: Cependant, cette solution suggérée ci-dessous par Beni Cherniavsky-Paskin est supérieure - elle correspond (et met en évidence) soit le mot que vous recherchez, soit le début de la ligne (non surlignable). Le résultat net est exactement ce que vous voulez.
C'est la nouvelle meilleure solution que j'ai vue pour ce problème, merci Beni.
la source
egrep 'snozzberries|$'
Dans cette question, /superuser/602294/is-there-colorizer-utility-that-can-take-command-output-and-colorize-it-accordin
grcat
/grc
tool a été recommandé comme alternative àsupercat
.Homme de grc et de
grcat
; il fait partie du paquet grc ( sources ):la source
J'ai écrit le petit script pour effectuer la colorisation en utilisant
pygmentize
.Et puis créez un alias pour le script.
alias cat=colorize_via_pygmentize
. N'oubliez pas non plus de l'enregistrer dans ~ / .bashrc .la source
Si vous voulez juste qu'une doublure règle la
cat
sortie sur une couleur donnée, vous pouvez ajouteralias cat="echo -en 'code' | cat - "
à ton
~/.$(basename $SHELL)rc
Voici un résumé avec des codes de couleur: https://gist.github.com/chrisopedia/8754917
J'aime
'\e[1;93m'
, qui est un jaune de haute intensité. Cela ressemble à ceci:la source
utilisez simplement vim et ce fichier vimrc .
bon mot:
nano -v
peut également être une alternative.la source
Placez-le dans votre ~ / .bashrc
puis
la source