Coloriser la sortie d'une commande arbitraire

Posté par (page perso) . Édité par NeoX. Modéré par j. Licence CC by-sa
36
31
mar.
2012
Ligne de commande

Ne vous est-il jamais arrivé de souhaiter que la sortie de votre commande favorite soit en couleurs, afin de vous aider à trouver l'information que vous cherchez ? Que celui qui n'a jamais pesté devant les affichages de g++, en dehors de son IDE favori, sur un code utilisant des templates, me jette la première pierre.

En attendant la nouvelle génération de terminaux, il vous reste au moins deux options : acoc ou colout.

Ces deux programmes font grosso-modo la même chose : insérer des balises de couleurs ANSI sur les parties du texte qui matchent une expression rationnelle.

acoc (Arbitrary Command Output Colourer) est un script Ruby qui se comporte comme un wrapper autour d'une commande. Il vous permet de spécifier une configuration complète pour vos commandes et peut coloriser des programmes interactifs tels que top. il est nécessaire de spécifier une configuration (quelque peu complexe) pour chaque programme que vous voulez coloriser. acoc permet de nombreux formatages et (avec une dépendance optionnelle) peut gérer les commandes se comportant différemment hors TTY.

colout (Color Output) est un script Python (sans dépendance exotique) qui lit l'entrée standard, colorise et redirige le tout sur la sortie standard. Sa syntaxe est beaucoup plus simple, mais il ne permet pas de coloriser les programmes interactifs.

Un exemple d'utilisation de colout, permettant de coloriser la sortie de gcc, avec en rouge gras les erreurs, en magenta gras les avertissements et en jaune le numéro de ligne :

make 2>&1 | colout error | colout warning magenta bold | colout :\([0-9]+\):[0-9]* yellow standard

  • # colorgcc

    Posté par (page perso) . Évalué à  10 .

    Pour ce qui est de coloriser gcc, il y a toujours colorgcc dont je me sers depuis un petit moment et qui fonctionne très bien.

    • [^] # Re: colorgcc

      Posté par . Évalué à  9 .

      Pour coloriser gcc, je pensais plutot à clang :)

  • # HS

    Posté par (page perso) . Évalué à  8 .

    En attendant la nouvelle génération de terminaux,

    Est-ce qu'il y a des projets en cours? Je pensais justement aujourd'hui, qu'en 2012 c'est un peu naze qu'il ne soit toujours pas possible de spécifier les couleurs dans le terminal en RGB…

    • [^] # Re: HS

      Posté par (page perso) . Évalué à  3 .

      Ca s'appelle un terminal X11

    • [^] # Re: HS

      Posté par (page perso) . Évalué à  8 .

      Il y en a plusieurs, mais pour moi, le plus prometteur est sans conteste TermKit : http://acko.net/blog/on-termkit/

      • [^] # Re: HS

        Posté par . Évalué à  4 .

        Et quels sont les autres ?

    • [^] # Re: HS

      Posté par (page perso) . Évalué à  8 .

      Il y a par exemple TermKit. J'avais vu d'autres terminaux dans le même style, mais pas moyen de remettre la main dessus.

      • [^] # Re: HS

        Posté par (page perso) . Évalué à  9 .

        TermKit a l'air assez intéressant.

        Cependant je le trouve un peu lourd, il fait trop de truc. Il faudrait arriver à faire quelque chose dans le même genre pour rendre notre terminal habituel un peu moins sobre, mais sans pour autant avoir des machins qui bougent dans tous les sens.

        Il existe deux catégories de gens : ceux qui divisent les gens en deux catégories et les autres.

      • [^] # Re: HS

        Posté par . Évalué à  1 .

        Il y a hotwire : c'est un peu mort. XMLterm mais c'est très vieux (ça ressemble à TermKit mais en XUL). J'utilise le shell IPython avec sa console Qt.

      • [^] # Re: HS

        Posté par (page perso) . Évalué à  3 .

        Je serais plus pour quelque chose de très proche des terminaux actuels, mais en plus moderne, débarassé de l'époque où un terminal était une machine reliée par un port série.

        • [^] # Re: HS

          Posté par . Évalué à  3 .

          Je serais plus pour quelque chose de très proche des terminaux actuels, mais en plus moderne, débarassé de l'époque où un terminal était une machine reliée par un port série.

          Comme ça, tu seras bien content d'être "débarrassé" quand il te faudra passer par le port série pour récupérer une machine en vrac. :)

          THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.

          • [^] # Re: HS

            Posté par (page perso) . Évalué à  2 .

            On pourra toujours utiliser les vieux terminaux pour ça, non? En attendant c'est dommage de s'interdire toute amélioration de l'interface qu'on utilise au quotidien pour travailler, non?

            • [^] # Re: HS

              Posté par . Évalué à  3 .

              Je suis tout à fait partant pour une amélioration. Seulement, ce qui m'inquiète c'est de se retrouver coincé un beau jour, parce que "plus supporté, personne n'est censé s'en servir".

              THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.

    • [^] # Re: HS

      Posté par (page perso) . Évalué à  1 .

      Heu, ben c'est déjà le cas dans rxvt, xterm, gnome-terminal (avec TERM=xterm-88color), il suffit d'utiliser initc ou initp (voir man 5 terminfo).

  • # ccze

    Posté par . Évalué à  6 .

    http://freecode.com/projects/ccze

    bien sur les tout neufs ne connaissent sans doute pas ;-)

  • # Coloration des diff

    Posté par . Évalué à  3 .

    Il y a aussi colordiff pour coloriser le résultat de la commande diff.

    • [^] # Re: Coloration des diff

      Posté par . Évalué à  1 .

      Sinon avec vim et la coloration syntaxique :

      diff file1 file2 | vim -

      en prime on peut faire une recherche facilement

      • [^] # Re: Coloration des diff

        Posté par (page perso) . Évalué à  3 .

        diff file1 file2 | vim -

        vim vient avec un script less.sh pour être utilisé comme pager.

        • [^] # Re: Coloration des diff

          Posté par (page perso) . Évalué à  4 .

          Et ça s'utilise comment?

          « Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. » Raymond Devos

          • [^] # Re: Coloration des diff

            Posté par (page perso) . Évalué à  7 .

            Et ça s'utilise comment?

            export VPAGER=/usr/local/share/vim/vim72/macros/less.sh
            
            alias less=$VPAGER
            alias more=$VPAGER
            
            

            dans ton bashrc ou un truc du genre

            • [^] # Re: Coloration des diff

              Posté par (page perso) . Évalué à  3 . Dernière modification : le 02/04/12 à 13:43

              Merci. En fait, j'avais compris que c'était un script dans vim et qu'il fallait configurer vim pour qu'il l'utilise quand on l'utilise comme pager. En fait, c'est beaucoup plus simple.

              « Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. » Raymond Devos

            • [^] # Re: Coloration des diff

              Posté par . Évalué à  2 .

              Intéressant mais ça ne marche pas très bien chez moi : les caractères de formatages des manpages n'est pas bien interprété.

              Je suis dans ma tour d'ivoire (rien à foutre des autres, dites moi un truc pour moi), si je ne pose pas explicitement une question pour les 99%, les kévin, les Mm Michu alors c'est que je ne parle pas d'eux.

              • [^] # Re: Coloration des diff

                Posté par (page perso) . Évalué à  2 .

                les caractères de formatages des manpages n'est pas bien interprété.

                C'est pour cela que je ne l'exporte pas comme PAGER

      • [^] # Re: Coloration des diff

        Posté par (page perso) . Évalué à  4 .

        Ou directement
        vimdiff file1 file2

  • # cw alias color wrapper

    Posté par . Évalué à  4 .

    cw fait pas mal de colorisation des outputs : http://freecode.com/projects/cw

  • # Sans couleur, mais pour le suivi des différences

    Posté par . Évalué à  1 .

    Il y a aussi watch(1) :

    watch -d -n0,1 df
    
    

    Pas de couleur, mais un marquage des choses qui bougent.

  • # gcc

    Posté par (page perso) . Évalué à  1 .

    Que celui qui n'a jamais pesté devant les affichages de g++, en dehors de son IDE favori, sur un code utilisant des templates, me jette la première pierre.

    Il est temps de ce mettre à clang !

    • [^] # Re: gcc

      Posté par (page perso) . Évalué à  1 .

      Il y a aussi la commande colorit du package dict
      qui peut coloriser.
      Si je ne rappelle bien, il faut parametrer son
      fichier ~/.coloritrc

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.