GNU/Linux >> Tutoriels Linux >  >> Linux

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

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 !


Linux
  1. Existe-t-il des codes d'état de sortie standard sous Linux ?

  2. Existe-t-il un moyen de conserver le texte transmis à head, tail, less, etc. pour qu'il soit coloré?

  3. Existe-t-il un moyen de vérifier quels débits en bauds sont pris en charge sur un périphérique série ?

  4. Existe-t-il des interfaces graphiques pour Linux qui n'utilisent pas X11 ?

  5. Existe-t-il des utilitaires de ligne de commande capables de capturer les pressions sur les boutons du joystick ?

Ccat - Coloriser la sortie de la commande Cat

Fichiers Cat avec répertoire ?

Linux - Existe-t-il des interfaces graphiques pour Linux qui n'utilisent pas X11 ?

Existe-t-il des idées de script shell bien connues et bien utilisées pour Un * x ?

Existe-t-il une alternative open source au paysage ?

Comment grep ps sortie avec des en-têtes