PROJET AUTOBLOG


bfontaine.net

Site original : bfontaine.net

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

Afficher des citations dans le terminal avec Fortune

mardi 30 août 2011 à 21:02

Fortune est un utilitaire UNIX utilisable en ligne de commande qui permet d'afficher une citation au hasard, parmi celles de la base de donnée. Il tire son nom des "fortune cookies", ces petits biscuits dans lesquels on trouve un morceau de papier sur lequel on peut lire une prédiction ou une citation humoristique.

Sous Ubuntu, il faut installer le paquet fortune-mod pour des citations en anglais (par défaut), et fortune-fr pour des citations en français. Pour la suite du billet, on considérera que vous avez installé les paquets nécessaires pour les citations en français. Pour l'utiliser, il suffit de taper la commande dans un terminal:

$ fortune

Rien de très compliqué. L'utilitaire pioche une citation au hasard parmi les fichiers dont il dispose. On pourra avoir la liste desdits fichiers, avec, pour chacun, la probabilité qu'une citation provienne du fichier, en ajoutant l'option -f. Plus le fichier est gros, plus la probabilité qu'une citation en provienne est élevée. Si vous avez un fichier bien plus gros que les autres, il peut être intéressant d'ajouter l'option -e, qui donne la même probabilité à chaque fichier. D'autres options existent, par exemple -l qui sélectionne uniquement les citations longues (au contraire de -s), -m <expression> qui permet de ne sélectionner que les citations qui contiennent l'expression régulière donnée, etc. Pour tirer une citation d'un fichier en particulier, il suffit de l'ajouter en argument, exemple:

$ fortune humour
Ajouter ses propres fichiers

Il peut être intéressant d'ajouter ses propres fichiers pour diversifier les sources de citations. Les fichiers sont formatés de la façon suivante:

citation 1
%
citation 2
citation 2 (suite)
%
citation 3
%
...

Chaque citation est séparée de la suivante par le symbole du pourcentage (%). Il suffit donc d'ouvrir votre éditeur de texte, et de remplir un fichier avec vos citations préférés. Certains sites proposent des fichiers déjà prêts, par exemple les Chuck Norris Facts (l'encodage pose problème chez moi), DansTonChat (attention, fichier assez lourd), ou encore des astuces pour Vi(m) (issues des tweets de @vimtips).

Pour pouvoir ajouter un fichier à fortune, faites les manipulations suivantes (on suppose que vous avez téléchargé un fichier de nom monfichier.txt, qui contient des citations formatés qui parlent de Tintin).

$ sudo cp ./monfichier.txt /usr/share/games/fortunes/fr/tintin
$ strfile monfichier.txt
$ sudo mv ./monfichier.txt.dat /usr/share/games/fortunes-fr/tintin.dat
$ sudo ln -s /usr/share/games/fortunes-fr/tintin.dat /usr/share/games/fortunes/fr/tintin.dat

Et voilà ! Vous pouvez faire un test:

$ fortune tintin

Ce qui vous affichera une citation tirée (pseudo-)aléatoirement de votre fichier.

Bonus: Cowsay

Avec fortune, les citations s'affichent directement dans le terminal. On peut également avoir un personnage en ASCII Art avec une bulle contenant la citation, comme ci-dessous:

 _____________________________________
/ Après une heure de gym, je me sens  \
| mieux ; Les autres aussi me sentent |
| mieux.                              |
|                                     |
\ -+- Philippe Geluck, Le chat -+-    /
 -------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Pour cela, il faut utiliser l'utilitaire cowsay, qui affiche un personnage (une vache, par défaut) avec une bulle contenant le texte donné en argument (pour avoir un personnage qui pense au lieu de parler, utilisez cowthink. D'autres options de personnalisation sont disponibles, consultez la page de manuel pour plus d'informations). Il est possible de spécifier quel personnage utiliser avec l'option -f suivie du nom du fichier correspondant, les fichiers étant dans /usr/share/cowsay/cows. Pour afficher des citations, on préfèrera utiliser des citations courtes, on utilisera donc la commande suivante:

$ cowsay "`fortune -se`"

Qui affichera une vache disant une citation courte (-s) provenant d'un fichier aléatoire (tous ayant la même probabilité, grâce à l'option -e). Pour utiliser un personnage aléatoire (attention, certains sont très grands), on pourra utiliser la commande suivante:

$ cowsay -f `\ls /usr/share/cowsay/cows | rl | tail -n 1` "`fortune -se`"

On utilise ici un fichier (-f) aléatoire, sélectionné en listant (ls) le répertoire (l'utilisation d'un backslash avant permet d'annuler les éventuels alias), en mélangeant les lignes (rl, obtenu sous Ubuntu en installant le paquet randomize-lines), et en sélectionnant la dernière (tail -n 1, ou  plus simplement tail -1).

Mise-à-jour 11 déc. 2011 : La création de fichiers pour cowsay a été l'objet d'un billet : Créez vos propres fichiers pour Cowsay.