Le chat peut-il afficher des fichiers à l'aide de balises de code en couleurs?

41

Parfois, je souhaite rapidement afficher le contenu d'un fichier à partir de la ligne de commande. Pour cela, j'utilise bien sûr cat , mais il s'agit souvent de fichiers sources dans Python , Java ou simple HTML . Pour ces fichiers, il serait pratique si cat pouvait attribuer des balises de couleur aux fichiers, afin que la lecture soit plus facile.

cat peut-il faire une chose pareille?

    
posée kramer65 15.01.2014 - 17:44
la source

7 réponses

44

cat n'est pas en mesure de le faire. Toutefois, pygments peut également vous aider. C’est un script python qui peut être installé via apt-get

sudo apt-get install python-pygments

ou facilement téléchargé et installé via easy_install.

Il prend en charge de nombreuses langues de code source, ainsi que des langages de balisage

.

Il est utilisé par

pygmentize -g <filename>
    
réponse donnée txwikinger 15.01.2014 - 18:05
la source
18

Pas de cat lui-même mais vous pouvez utiliser quelque chose comme source highlite ou supercat ou surligner

Source-highlight

This program, given a source file, produces a document with syntax highlighting. It also provides a C++ highlight library (new) (since version 3.0).

Source-highlight reads source language specifications dynamically, thus it can be easily extended (without recompiling the sources) for handling new languages. It also reads output format specifications dynamically, and thus it can be easily extended (without recompiling the sources) for handling new output formats. The syntax for these specifications is quite easy (take a look at the manual).

The manual about installation:

See the file INSTALL for detailed building and installation instructions; anyway if you're used to compiling Linux software that comes with sources you may simply follow the usual procedure, i.e., untar the file you downloaded in a directory and then:

 cd <source code main directory>
 ./configure
 make
 make install

Supercat

This is Supercat's homepage. Supercat is a program that colorizes text based on matching regular expressions/strings/characters. Supercat supports html output as well as standard ASCII text. Unlike some text-colorizing programs that exist, Supercat does not require you to have to be a programmer to make colorization rules.

If you have written a supercat config file for a standard file type please do not hesitate to contact me at "bug-spc (at) nosredna (dot) net" for possible inclusion in the supercat distribution.

Ou avec une fonction ( source ) :

#!/bin/bash#!/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

Nécessite: Pygments ( sudo apt-get install python-pygments python3-pygments )   Ajoutez-le en tant que fonction à bash .functions et attribuez-lui un nom tel que color ()

    
réponse donnée Rinzwind 15.01.2014 - 18:05
la source
13

À partir de cette réponse, ici , vous pouvez utiliser les packages python-pygments pour mettre en évidence des éléments. D'abord faire:

sudo apt-get install python-pygments python3-pygments

alors:

pygmentize -g FILENAME

puis essayer:

Vouspouvezégalementledéfinircommeunalias,commedanslaréponsequej'ailiée-engros,exécutezceci:

echo"alias catc='pygmentize -g'" >> ~/.bash_aliases 
chmod +x ~/.bash_aliases

Fermez le terminal, ouvrez-le à nouveau et la commande catc devrait maintenant fonctionner. Sinon, assurez-vous que ces lignes figurent dans le fichier .bashrc et ne sont pas commentées:

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

Une autre chose à faire serait d'utiliser simplement nano :

nano testfile

    
réponse donnée Wilf 15.01.2014 - 18:08
la source
5

man view ou man vim

Utilisation de base: view <filename>

Quittez: :q<Return> (ajoutez d'abord un <Esc> si vous utilisez vim ) ou ZZ (z deux fois en majuscule).

L'éditeur de texte du programmeur vim a déjà tout ce dont vous avez besoin et fait probablement déjà partie de votre système.

vim a un mode lecture seule activé avec view ou vim -R . Si tout ce que vous voulez faire est de visualiser le fichier balisé, cela devrait suffire.

Simple à utiliser, navigable, disponible partout. Plus besoin d'installer un nouveau logiciel ou d'écrire des scripts bash.

    
réponse donnée a different ben 16.01.2014 - 06:55
la source
3

cat ne peut pas produire uniquement la coloration syntaxique. Vous pouvez néanmoins le faire comme suit, en utilisant python-pygments . Tout d'abord l'installer à partir du terminal en tant que,

sudo apt-get install python-pygments

Copiez maintenant la fonction sous ~/.bashrc . Cela vous donnera ce que vous voulez et en plus, il conservera les propriétés de cat , sinon il ne sert à rien d'utiliser cat

catc(){
    cat "[email protected]" > /tmp/.tmp
    pygmentize -g /tmp/.tmp
    rm /tmp/.tmp
}

Source ~/.bashrc as,

. ~/.bashrc

Cela donnera une sortie colorisée,

catc <filename>

Cela concaténera également avec la couleur,

catc <file1> <file2> ... <filen>
    
réponse donnée souravc 15.01.2014 - 19:12
la source
2

On peut consulter ccat .

Il ajoute une mise en évidence de la syntaxe aux fichiers de sortie.

    
réponse donnée Alan Dong 27.08.2015 - 02:08
la source
0

D'autres réponses expliquent pourquoi cat n'est pas en mesure de le faire. Bien que vous puissiez le faire avec moins d’utilisation lesspipe.sh .

    
réponse donnée Fuad Saud 21.01.2014 - 23:23
la source

Lire d'autres questions sur les étiquettes