PROJET AUTOBLOG


bfontaine.net

Site original : bfontaine.net

⇐ retour index

Créez vos propres fichiers pour Cowsay

dimanche 11 décembre 2011 à 20:54

Ce billet est la suite du billet sur Fortune et Cowsay.

Dans le précédent billet, on a vu comment combiner les commandes fortune et cowsay pour afficher une citation dans une bulle, avec un personnage en ASCII Art (une vache, par défaut). L'utilitaire Cowsay propose pas moins d'une cinquantaine de personnages différents, du squelette au cheval en passant par Dark Vador, Calvin (de Calvin & Hobbes) ou encore un stégosaure. Ce billet vous propose de créer votre propre personnage.

Tout ce dont vous aurez besoin sera votre éditeur de texte préféré, et un peu d'imagination. Pour ce billet, on ne fera pas preuve d'une grande originalité en créant un fichier pour le petit lapin suivant :
(\_/)
('.')
(> <)

On crée donc un fichier lapin.cow, dont on commente les premières lignes (à l'aide de #) pour expliquer ce que représente notre dessin :

#
# A little rabbit
#

On précise ensuite que notre dessin personnage va suivre, et qu'on terminera ledit dessin par "EOC" (End Of Cow) :

$the_cow = <<"EOC";

On dessine ensuite notre personnage avec quelques backslashs en haut à gauche, pour montrer que la bulle de texte vient de lui. On n'oublie pas de se décaler un peu sur la droite pour que nos backslashs tombent à peu près au milieu de la bulle.

$the_cow = <<"EOC";
\
\
(\_/)
('.')
(> <)

Vous pouvez bien entendu ajouter des backslashs, surtout si votre personnage est grand. Une fois votre personnage terminé, il faut « échapper » les caractères spéciaux, ici les backslashs du dessin (pas ceux en haut à gauche). Faites précéder chaque backslash du dessin par un second backslash.

$the_cow = <<"EOC";
\
\
(\\_/)
('.')
(> <)

Ensuite, remplacez les backslashs en haut à gauche par $thoughts. Ainsi, le programme cowsay remplacera chaque occurence de $thoughts par un backslash, tandis que cowthink le remplacera par une petite bulle (un « o » minuscule). Il ne reste plus qu'à tenir notre promesse et terminer notre dessin par "EOC", sur une dernière ligne.

$the_cow = <<"EOC";
$thoughts
$thoughts
(\\_/)
('.')
(> <)
EOC

Voilà, votre personnage est terminé. Vous pouvez tester le résultat avec l'option -f de cowsay, suivie du chemin vers votre fichier :

$ cowsay -f ./lapin.cow "Hello World ! "
 ________________
< Hello World !  >
 ----------------
    \
     \
      (\_/)
      ('.')
      (> <)

Si vous souhaitez mettre votre personnage avec tous les autres, il suffit de déplacer le fichier au bon endroit (vérifiez avant qu'aucun autre fichier n'a le même nom) :

$ sudo mv lapin.cow /usr/share/cowsay/cows/

Et voilà !