Existe-t-il des options pour laisser le chat sortir avec de la couleur?

19

Si je veux sortir un fichier de code source C avec une coloration syntaxique, puis-je l'utiliser cat?

Jichao
la source
vous pouvez simplement utiliser bat ostechnix.com/…
Ridderhoff

Réponses:

18

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 regex Boost. 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 à ceci:

#!/bin/bash
src-hilite-lesspipe.sh $1

Rien d'extraordinaire, simplifiant simplement le moins de 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 bon script à 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 la mise en évidence de la source.

Je suppose que vous pouvez alias cat pour appeler src-hilite-lesspipe.sh $ 1 si vous avez envie d'ignorer complètement cat, mais ce n'est peut-être pas souhaitable.

rgm
la source
4
Personnellement, je préfère un alias aux scripts bash d'une ligne se terminant par $1:).
mgalgs
Oui, mitch_feaster, vous êtes sur place. :]
rgm
2
Fonctionne également sur un Mac avec brew install source-highlight. Impossible de colorer le yaml :(
Sairam
9

Pour sortir du code surligné par la syntaxe avec quelque chose comme cat, j'ai créé une ccatcommande 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 du code surligné par la syntaxe avec quelque chose comme less, j'utilise vim comme moins de remplacement.

alias less='/usr/share/vim/vim72/macros/less.sh'
michaelvobrien
la source
Comment installer pygmentize: easy_install --install-dir $ SOMEDIR Pygments
psihodelia
J'aime ce type de solutions portables. J'ai ajouté ce script en fonction de mon bash .functionsascolorize(){...}
guneysus
3

Pour résoudre ce problème, j'ai utilisé la mise en 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 vous le souhaitez.

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 un Mac et que vous utilisez Homebrew (fortement recommandé!), Vous pouvez installer la mise en évidence 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 fait une fonction pour imprimer un fichier avec la coloration syntaxique en html et l'ouvrir dans le navigateur pour imprimer (repose sur la opencommande sur 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
}

Prendre plaisir!

Kevin
la source
1

Non, le chat n'a pas de capacités de coloration syntaxique. Si vous souhaitez afficher le code source avec une coloration syntaxique, insérez-le dans vim ou dans l'éditeur de votre choix (qui dispose d'une coloration syntaxique). De cette façon, vous pouvez même parcourir la sortie s'il s'agit d'un fichier long en utilisant Ctrl+ F(avant) et Ctrl+ B(arrière).

John T
la source