EXERCICE DE TRAVAUX PRATIQUES UNIX PROGRAMMATION SHELL ANNEE UNIVERSITAIRE 2012/13/14/15 Aprés avoir sauvegardé une copie de ce fichier, vous répondrez aux questions, directement dans le fichier afin de conserver une trace de votre travail. Par exemple, dans un terminal : mkdir -p $HOME/i54/tps/src cd $HOME/i54/tps wget -O $HOME/i54/tps/serie-4.txt langevin.univ-tln.fr/cours/UPS/tps/ups-tps-4.txt Vous répondrez aux questions, directement dans le fichier afin de conserver une trace de votre travail. Vous placerez vos sources dans le réperpoire src qui sera maintenu à jour par make et son makefile. Lancer l'edition a partir de la ligne de commande : {editeur} ups-tps-4.txt & ---------------------------------------------------------------- dernière modification : ven. oct. 17 11:32:13 CEST 2014 ---------------------------------------------------------------- 1) prompt, PS{1..4} 2) if, IFS, substitution 3) bc, let, (()) , for, heredoc 4) chaine, printf, od, hexdump 5) git, getopt, strings ================================================================ EXERCICE 1 ================================================================ objectif : prompt, PS{1..4} durée : 20 minutes --- modifier le prompt de la ligne de commande [ 0 ] help variable ; help variable | grep -i prompt [ 1 ] Lire le manuel de bash concernant les variables PS{1..4} [ 2 ] Quelles sont les valeurs par défaut de ces variables ? [ 3 ] modifier le prompt PS1 pour afficher : le nom de base du répertoire courant, l'heure et vos initiales. commentaires: ---------------------------------------------------------------- exemples: ---------------------------------------------------------------- ================================================================ EXERCICE 2 ================================================================ objectif : if, IFS, substitution durée : 30 minutes Ecrire un script qui liste les exécutables dont le nom est donné, comme which, la recherche sera faite dans les répertoire de la variable PATH. commentaires: ---------------------------------------------------------------- exemples: ---------------------------------------------------------------- ================================================================ EXERCICE 3 ================================================================ objectif : bc, let, (()) , for, heredoc durée : 30 minutes - calculer le nombre de chiffres nul à la fin de n! [1] script sans commande externe ( n petit ) [2] script basé sur la commande bc commentaires: ---------------------------------------------------------------- exemples: ---------------------------------------------------------------- ================================================================ EXERCICE 4 ================================================================ objectif : chaine, printf, od, hexdump durée : 30 minutes --- transformer une chaine de carctère en une chaine hexadécimale correspont au codage ascii et réciproquement. Par exemple : ABC -> \x41\x42\x43 [ 1 ] script basée printf [ 2 ] solution basée (od|hexdump) indication : - voir la digression du cours sur bash concernant printf commentaires: ---------------------------------------------------------------- exemples: ---------------------------------------------------------------- ================================================================ EXERCICE 5 ================================================================ objectif : git, getopt, strings durée : 30 minutes [ 0 ] commenter les resultats : $ echo 'hello world' | sed 's/[l]+/--/g' $ echo 'hello world' | sed -r 's/[l]+/--/g' $ echo 'hello world' | sed -E 's/[l]+/--/g' $ sed --help | grep -E '^[ ]*-' [ 1 ] Utiliser les instructions de cette page : http://git.savannah.gnu.org/cgit/sed.git pour télécharger les sources de la commande sed dans un repertoire temporaire. [ 2 ] Retrouver la gestion des options dans les sources. Et alors ? [ 3 ] Utiliser grep, strings pour retrouver la liste des options disponibles directement dans le binaire sed. commentaires: ---------------------------------------------------------------- exemples: ---------------------------------------------------------------- dm, pl, octobre 2014