« Cowsay et fortunes » : différence entre les versions

Aller à la navigation Aller à la recherche
aucun résumé des modifications
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 27 : Ligne 27 :
''<u>'''Important :'''</u> cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''
''<u>'''Important :'''</u> cette commande utilise l'exécutable '''''rl''''' qui dépend du paquet '''''randomize-lines''''', il est donc nécessaire de l'installer.''
<br/>
<br/>
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 :
Notons qu'il est possible de se passer de la dépendance '''randomize-lines''' (et même de bash) en utilisant ces quelques lignes de code toujours dans notre fichier de configuration du shell (merci à [[Utilisateur:MisterFreez|MisterFreez]] pour m'avoir épuré le code de cette idée) :
#!/bin/sh
# on place le nombre total de fichiers *.cows dans NBRE_COWS
  NBRE_COWS=$(ls -1 /usr/share/cowsay/cows/ | wc -l)
  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)
  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}')
  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`"
  cowsay -f $COW_NAME "`fortune -s`"
16

modifications

Menu de navigation