Un paquet GNU, source-highlight, semble faire l'affaire (bien qu'il n'utilise pas cat - comme le souligne John T, ce n'est pas possible avec cat spécifiquement). Il est disponible via apt-get sur Ubuntu et nécessite la bibliothèque Boost regex. Vérifiez votre gestionnaire de paquets pour voir si les deux sont disponibles, sinon vous pouvez les récupérer sur le Web. La page GNU liée plus tôt a un lien vers Boost, je pense.
Après l'installation, j'ai créé un nouveau script dans mon chemin appelé ccat . Le script ressemble à :
#!/bin/bash
src-hilite-lesspipe.sh $1
Rien d'extraordinaire, juste simplifier le moins script qu'ils incluent avec source-highlight. Il agit comme un chat lorsqu'il est appelé de cette façon.
Le script less inclus est également un script agréable à utiliser. Je viens d'ajouter ce qui suit à .bashrc :
export LESSOPEN="| /path/to/src-hilite-lesspipe.sh %s"
export LESS=' -R '
Ce script est également inclus dans le manuel en ligne pour source-highlight.
Je suppose que vous pouvez alias cat pour appeler src-hilite-lesspipe.sh $1 si vous avez envie d'ignorer complètement cat, mais cela pourrait ne pas être souhaitable.
Pour sortir le code en surbrillance syntaxique avec quelque chose comme cat
, j'ai créé un ccat
commande en suivant les instructions sur http://scott.sherrillmix.com/blog/programmer/syntax-highlighting-in-terminal/.
#!/bin/bash
if [ ! -t 0 ];then
file=/dev/stdin
elif [ -f $1 ];then
file=$1
else
echo "Usage: $0 code.c"
echo "or e.g. head code.c|$0"
exit 1
fi
pygmentize -f terminal -g $file
Pour sortir le code en surbrillance syntaxique avec quelque chose comme less
, j'utilise vim comme moins de remplacement.
alias less='/usr/share/vim/vim72/macros/less.sh'
Pour résoudre ce problème, j'ai utilisé la surbrillance. J'ai créé une fonction qui essaie d'imprimer le fichier avec la coloration syntaxique, et si elle échoue, elle revient à simplement utiliser cat pour imprimer le fichier. Vous pouvez modifier le thème de coloration syntaxique comme bon vous semble.
function hl { # Overrides the cat command to use syntax highlighting
# Highlight with 'moria' theme to terminal, and suppress errors
highlight $1 -s moria -O xterm256 2> /dev/null
if (($? != 0)); then # If the command had errors
cat $1 # Just cat the file out instead
fi
}
Si vous êtes sur Mac et que vous utilisez Homebrew (fortement recommandé !), vous pouvez installer Highlight en exécutant brew install highlight
. Sinon, il devrait être disponible sur la plupart des autres gestionnaires de packages et peut être téléchargé ici.
J'ai également créé une fonction pour imprimer un fichier avec la coloration syntaxique au format html et l'ouvrir dans le navigateur pour l'imprimer (s'appuie sur le open
commande sous OS X) :
function hlprint {
# Print with line numbers and 'moria' theme
highlight $1 -l -o print.html -s moria
open print.html # Open in browser
sleep 5 # Give the browser time to open
rm print.html highlight.css # Remove output files
}
Amusez-vous !