Cowsay + fortunes

Salut

Petit truc pas très utile mais indispensable :laughing:

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 (méchant pas bien :mrgreen: )

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)

Cool ! J’aime, et je mets en place :smiley:
Merci à toi.

EDIT : Si vous voulez un animal aléatoire, changez la ligne de commande :

Héhé sympa :stuck_out_tongue:

J’ai mis en place avec un tux :slightly_smiling:

Ce genre de commentaires est à faire dans la pause café ! Merci de ne pas encombrer

Au prochain commentaire je serais obligé de verrouiller pour protéger le travail de l’auteur :mrgreen:

[quote=“Dunatotatos”]
EDIT : Si vous voulez un animal aléatoire, changez la ligne de commande :

Salut,

J’ai pas compris ta commande, à quoi sert le “rl” avant le tail ? Chez moi ça marche pas.

Du coup me suis motivé pour réfléchir à une solution pour les cows aléatoires. Voici ce qui fonctionne chez moi, c’est un peu tordu j’avoue :neutral_face:

[code]# on place le nombre total de fichiers *.cows dans NBRE_COWS
NBRE_COWS=ls -l /usr/share/cowsay/cows/ | grep -v total | wc -l

on génère un nombre aléatoire compris entre 1 et NBRE_COWS

COWS_RANDOM=echo $[$RANDOM % ($[$NBRE_COWS - 1] + 1) + 1]

là il faut comprendre la syntaxe awk :

NR correspond au numéro de la ligne en cours de traitement par awk.

NF correspond au dernier champs de la ligne traitée (soit le nom du fichier cow).

Le NR == COWS_RANDOM_AWK et un critère de sélection conditionnel qui dit :

“je n’execute l’action {print NF} que si le numéro de ligne est égal à COWS_RANDOM_AWK”

COW_NAME=ls -l /usr/share/cowsay/cows/ | grep -v total | awk -v COWS_RANDOM_AWK=$COWS_RANDOM 'NR == COWS_RANDOM_AWK {print $NF}' | cut -d"." -f1

cowsay -f $COW_NAME “fortune -s”[/code]

Hum, désolé, j’ai oublié de préciser une dépendance : randomize-lines (d’où le rl)

ah ouais carrément pratique ! merci je connaissais pas :stuck_out_tongue:

Merci à vous, un gadget fort sympa!!!

Yop,
Saptule l’a mis sur le wiki : beronono.com/wiki-debian/index.p … t_fortunes 8)

[code]#!/bin/sh

on place le nombre total de fichiers *.cows dans NBRE_COWS

NBRE_COWS=$(ls -1 /usr/share/cowsay/cows/ | wc -l)

on génère un nombre aléatoire compris entre 1 et NBRE_COWS

COWS_RANDOM=$(expr $RANDOM % $NBRE_COWS + 1)

là il faut comprendre la syntaxe awk :

NR correspond au numéro de la ligne en cours de traitement par awk.

NF correspond au dernier champs de la ligne traitée (soit le nom du fichier cow).

Le NR == COWS_RANDOM_AWK et un critère de sélection conditionnel qui dit :

“je n’execute l’action {print NF} que si le numéro de ligne est égal à COWS_RANDOM_AWK”

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
[/code]
C’est pas plus simple ?

Edit : A je vais toucher au wiki alors.
Edit 2 : retrait de la dépendance à bash

yeah génial le ls -1 :mrgreen:
Connaissais pas :blush: comme beaucoup de chose en coding :cry:

j’ai vu que t’as modif le wiki, je vais le remodifier en citant ton nom pour la contribution mais aussi je vais virer la shebang #!/bin/sh parceque dans le wiki je parle de mettre ce code directement dans le fichier rc de son shell (.bashrc, .cshrc, etc…) Puis aussi du coup le commentaire sur le print NF il sert plus a grand chose :mrgreen:

C’est du code compatible avec le bourne shell, bash, zsh, dash, mais pas avec tcsh, csh, ksh,…

Re,

Ceci est à ajouter en commentaire :slightly_smiling:

En effet j’ai vérifier avec ksh, csh, et tcsh et le

ne passe pas…
ni le

je le signale dans le wiki alors, merci pour votre aide :stuck_out_tongue: