Coloriser la sortie d'une commande arbitraire

Posté par  (site web personnel, Mastodon) . É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

Aller plus loin

  • # colorgcc

    Posté par  (site web personnel) . É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  (site web personnel) . É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  (site web personnel) . Évalué à 3.

      Ca s'appelle un terminal X11

    • [^] # Re: HS

      Posté par  (site web personnel, Mastodon) . É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  (site web personnel) . É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  (site web personnel) . É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  (site web personnel) . É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  (site web personnel) . É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  (site web personnel) . É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  (site web personnel) . Évalué à 3.

        diff file1 file2 | vim -

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

        • [^] # Re: Coloration des diff

          Posté par  . Évalué à 4.

          Et ça s'utilise comment?

          « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

          • [^] # Re: Coloration des diff

            Posté par  (site web personnel) . É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  . Évalué à 3. Dernière modification le 02 avril 2012 à 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.

              « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

            • [^] # 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é.

              Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

      • [^] # Re: Coloration des diff

        Posté par  (site web personnel) . É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  (site web personnel) . É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  (site web personnel) . É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 à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.