Skip to content

Créer un motif pour cowsay

30 juin 2014

Cowsay est un de ces outils en ligne de commande prouvant que le génie humain est sans limite. Indispensable lors des grandes étapes d’une vie (déclaration d’amour, divorce, post sur IRC, etc.), il est nécessaire de maîtriser cet outil crucial au point de ne faire qu’un avec lui. À la limite 1,2 si vous n’êtes pas ambitieux.

Installation et utilisation

Cowsay est écrit en Perl et est disponible dans toutes les distributions sérieuses :

apt-get install cowsay  #sous Debian et dérivées

Le paquet fournit `cowsay` et `cowthink`. Une démo valant mille mots, voici deux démos pour deux fois plus d’économies :

$ cowsay "Bonjour lecteur"
 _________________
< Bonjour lecteur >
 -----------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
$ cowthink "Ça c'est fait"
 _______________
( Ça c'est fait )
 ---------------
        o   ^__^
         o  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Il est possible de changer les yeux, et de faire apparaître la langue avec des paramètres facultatifs. Par exemple :

$ cowsay -t "Malaaaade, je suis malaaade"
 _____________________________
< Malaaaade, je suis malaaade >
 -----------------------------
        \   ^__^
         \  (--)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
$ cowsay -d "Malaaaade, j'étais trop malaaade"
 __________________________________
< Malaaaade, j'étais trop malaaade >
 ----------------------------------
        \   ^__^
         \  (xx)\_______
            (__)\       )\/\
             U  ||----w |
                ||     ||

Il est aussi possible de changer la vache par un autre dessin. Plus de 50 motifs sont disponibles dans /usr/share/cowsay/cows/. Cependant, nous ne sommes pas limités à ces motifs car nous pouvons fournir notre propre motif :

$ cowsay -f ./rabbit.cow "Je n'ai pas la myxomatose..."
 ______________________________
< Je n'ai pas la myxomatose... >
 ------------------------------
    \    /|
     \  | |   ____
      \ \ |--/ ___\
       \ ) oo (   `
       =(>(\/)<)=_ --._
         (       /     \_
          \    ,(      / )
          | | / _\   ,'-'
         (_(_/ (______)

Voyons comment réaliser un tel prodige !

Créer son propre motif

Le plus simple est de commencer par une version en ascii satisfaisante. Si on veut avoir la possibilité de modifier les yeux, les deux caractères les représentant doivent être l’un à côté de l’autre. Pour le lapin, on commence avec :

$ cat lapin.txt 
         /|
        | |   ____
        \ |--/ ___\
         ) oo (   `
       =(>(\/)<)=_ --._
         (       /     \_
          \    ,(      / )
          | | / _\   ,'-'
         (_(_/ (______)

Pour en faire un fichier utilisable par `cowsay`, le nouveau fichier devra finir par « .cow » et être du code Perl valide.
Ainsi les caractères « \ » et « @ » doivent être protégé par un premier « \ ». L’emplacement (facultatif) de la langue est marqué par $tongue, celui des yeux par $eyes. Les variables $thoughts seront remplacées automatiquement pour relier le motif (ici le lapin) à la bulle contenant le texte.

La variable $the_cow sera définie avec ce motif.

Au final, on obtient :

$the_cow = <<EOC;
    $thoughts    /|
     $thoughts  | |   ____
      $thoughts \\ |--/ ___\\
       $thoughts ) $eyes (   `
       =(>(\\/)<)=_ --._
         (  $tongue   /     \\_
          \\    ,(      / )
          | | / _\\   ,'-'
         (_(_/ (______)
EOC

Évidemment, le résultat est beaucoup moins lisible mais comme c’est du Perl, les traditions sont respectées.

Le résultat en action :

$ cowsay -d -f ./rabbit.cow "Caramba, encore raté"
 ______________________
< Caramba, encore raté >
 ----------------------
    \    /|
     \  | |   ____
      \ \ |--/ ___\
       \ ) xx (   `
       =(>(\/)<)=_ --._
         (  U    /     \_
          \    ,(      / )
          | | / _\   ,'-'
         (_(_/ (______)

Code source et références

Télécharger rabbit.cow

Pour connaître les possibilités non couvertes par l’article, lisez la page de manuel de `cowsay`. C’est la même page qui sert de manuel pour `cowthink`.

La version utilisée pour cet article est la 3.0.3.

La page historique sur `cowsay` par son créateur : https://web.archive.org/web/20120225123719/http://www.nog.net/~tony/warez/cowsay.shtml

From → Autre

Laisser un commentaire

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :