Cowsay et fortunes

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche


Pour ceux qui ne connaissent pas :
cowsay est un petit programme qui affiche un dessin en ASCII d'un animal qui parle. A l'origine, cowsay n'affichait qu'une vache (d'ou son nom...), mais aujourd'hui il permet d'afficher plus ou moins ce que l'on veut grace à l'existence des fichiers *.cow
fortunes quant à lui, est un générateur aléatoire de citations, proverbes, et autres geekeries du monde irc.
Si on combine les deux, alors on se retrouve à chaque ouverture de shell avec un animal de son choix qui nous pond une citation de victor hugo, un proverbe persan, ou encore une remarque désobligeante accusant redhat de ne pas être un linux (ça c'est méchant... xD)


Voici comment faire :

# aptitude install cowsay fortunes fortunes-fr

Retrouver la liste des "cows" dispo ici : /usr/share/cowsay/cows
Ensuite, suivant votre shell (bash, ksh, csh, zsh, etc..) éditer son fichier de configuration (~/.bashrc, ~/.zshrc, etc...) et coller ces lignes à la fin du fichier :

cow_name=dragon
cowsay -f $cow_name "`fortune -s`"

Remplacer "dragon" par le nom que vous voulez (la listes des "cows" étant dans /usr/share/cowsay/cows)

Encore plus fort :
Votre "cow" toujours identique vous ennuie ? Envie que celui-ci change son déguisement à chaque ouverture de shell ? Alors remplacer la commande cowsay ci-dessus par celle-ci (un grand merci à Dunatotatos sur le forum debian-fr)

cowsay -f `ls /usr/share/cowsay/cows/ | rl | tail -n 1 | cut -d'.' -f1` "`fortune -s`"

Important : cette commande utilise l'exécutable rl qui dépend du paquet randomize-lines, il est donc nécessaire de l'installer.
Important : l'exécutable rl qui dépend du paquet randomize-lines, indique sur sa description qu'il devrait être considéré comme obsolète, et qu'il faut utiliser shuf. On peut donc utiliser la commande suivante à la place :

cowsay -f `ls /usr/share/cowsay/cows |shuf -n1|cut -d'.' -f1` "`fortune -s`"



Notons qu'il est possible de se passer de la dépendance randomize-lines en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell (merci à MisterFreez pour m'avoir épuré le code de cette idée)
Cependant attention, ce qui suit n'est pas compatible avec csh, ksh, et tcsh :

NBRE_COWS=$(ls -1 /usr/share/cowsay/cows/ | wc -l)
COWS_RANDOM=$(expr $RANDOM % $NBRE_COWS + 1)
COW_NAME=$(ls -1 /usr/share/cowsay/cows/ | awk -F\. -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $1}')
cowsay -f $COW_NAME "`fortune -s`"



Spatule 20 avril 2010 à 16:06 (UTC)

Rsync, ssh & les fortunes à la connexion :
Attention : Si vous paramétrez votre invite de commande pour qu'une fortune s'affiche à la connexion (ou d'ailleurs avec un message d'accueil trop fourni), rsync ne reconnaitra pas le type de shell et vous renverra une erreur :

protocol version mismatch - is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(69)

Cela peut normalement être réglé en ajoutant :

[ -z "PS1" ] && return

Au début du fichier .bashrc.

Cela empêche les interpréteurs de commandes non interactifs tels rsync d'exécuter le code suivant (merci à kna pour cette solution de contournement).



Afficher une fortune sur votre site web avec php :
Ajoutez le code suivant dans une page HTML :

putenv('LANG=fr_FR.UTF-8'); /* Afin d'éviter les problèmes d'interprétation de certains caractères spéciaux */
exec("/usr/games/fortune fr | tr -d '\n'",$output); /* On lance fortune en français en supprimant les retours à la ligne */
print_r($output[0]);