Exercices Bash supplémentaires

A- Figlet

Installer l'outil figlet depuis http://www.figlet.org

Cet outil permet d'afficher du texte dans des polices « exotiques » ou avec des décorations. Par exemple :

$ ./figlet -f fonts/bubble.flf "Christophe"
  _   _   _   _   _   _   _   _   _   _
 / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
( C | h | r | i | s | t | o | p | h | e )
 \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/

On vous demande d'écrire un script figlet.sh qui prend un texte en paramètre et qui affiche ce texte avec la décoration de la police bubble.flt. Ce script ne fait pas d'appel à l'executable figlet, bien entendu, sinon c'est trop facile. C'est à vous de simuler son comportement, en Bash et seulement en Bash !

On vous demande ensuite un script figlet1.sh qui prend en paramètre un texte écrit en minuscule et qui produit à l'écran ceci :

 ./figlet1.sh "abcdefghijklmopqrstuvwxyz"
               _
 _.|_  _ _| __|__ |_ oo| |._ _  _ ._  _..___|_             _
(_||_)(_(_|(/_|(_|| ||||<|| | |(_)|_)(_||_> |_|_|\/\/\/><\//_
                _|   _|           |    |                 /

Ecrire le script figlet3.sh qui produit un texte en minuscule dans l'alphabet suivant :

./figlet3.sh "abcdefghijklmopqrstuvwxyz" 
      _                   _        _           _    _
     | |          |      | |      | |    o  o | |  | |
 __, | |   __   __|   _  | |  __, | |         | |  | |  _  _  _    __    _
/  | |/ \_/    /  |  |/  |/  /  | |/ \   |  | |/_) |/  / |/ |/ |  /  \_|/ \_
\_/|_/\_/ \___/\_/|_/|__/|__/\_/|/|   |_/|_/|/| \_/|__/  |  |  |_/\__/ |__/
                         |\    /|          /|                         /|
                         |/    \|          \|                         \|

 __,   ,_    , _|_                                 __
/  |  /  |  / \_|  |   |  |  |_|  |  |_/\/  |   | / / _
\_/|_/   |_/ \/ |_/ \_/|_/ \/   \/ \/   /\_/ \_/|/ /_/
   |\                                          /|   /|
   |/                                          \|   \|

Plus difficile : reprendre les 2 derniers scripts pour les modifier de la façon suivante : un deuxième paramètre est passé au script qui spécifie un facteur d'échelle (2 => police 2 fois plus grosse que l'affichage de base ; 3 => police 3 fois plus grosse que l'affichage de base ; ...)

B- Gestion de bibliographie

Bibtex (http://en.wikipedia.org/wiki/BibTeX ou Kbibtex : http://www.unix-ag.uni-kl.de/~fischer/kbibtex/) est un outil pour gérer de la bibliographie.

Après avoir compris le format des entrées d'un fichier Bibtex, vous écrirez un script sortBibtex.sh qui va trier un fichier .bib par ordre alphabétique de l'auteur (si l'auteur est seul). Vous vérifirez que les entrées sont bien des entrées possibles (Inproceedings, etc).

Ensuite, si l'auteur n'est pas seul, il s'agira de trier selon l'ordre alphabétique des auteurs pour l'entrée considérée, puis de trier par entrée bibliographique sur les noms d'auteurs.

Vous pouvez faire des hypothèses du genre : les noms apparaissent sous la forme « Prénom Nom », les noms/prénoms composés le sont avec le symbole – (exemple Jean-Christophe). Ensuite vous essayerez de lever toutes les contraintes.

C- Tableaux

Écrire un script Bash qui fait la somme de deux tableaux de même longueur qui contiennent des entiers, puis un script qui fait la somme de toutes les valeurs contenues dans deux tableaux qui n'ont pas forcément la même taille.

Voila les tableaux sur lesquels il faut travailler :

t1=([0]=7 [1]=3 [2]=4)
t2=([0]=7 [1]=3 [2]=4)
puis
t1=([0]=7 [1]=3 [2]=4 [6]=6)
t2=([0]=7 [1]=3 [2]=4 [4]=6 [8]=8)

D- Dictionnaire

Écrire un script Bash qui prend en paramètre un fichier texte et compte de nombre d'occurences des mots du fichier texte en rangeant les différents mots dans un dictionnaire. Voici un exemple :

$ /opt/local/bin/bash dico2.sh titi
------Fichier en entree: titi-------------
ASSOC[ZZeeZZ] = 1
ASSOC[fdg] = 1
ASSOC[ZZ] = 1
ASSOC[fsdf] = 1
ASSOC[sdf] = 1
ASSOC[ZZ] = 2
ASSOC[sdfsdf] = 1
ASSOC[sdf] = 2
ASSOC[$] = 1
ASSOC[sdf] = 3
ASSOC[sdfds] = 1
ASSOC[$sdfsf] = 1
ASSOC[dfgdf] = 1
ASSOC[ZZ] = 3
ASSOC[dfgdfg] = 1