Unité libre: scripts sous unix/ TD No2

Objectifs du TD :  redirection, enchaînements de commandes, utilisation de filtres classiques, premiers scripts shell, premier contact avec les variables d'environnement.

exercice 1: filtres usuels

Dans cet exercice, vous aurez à utiliser les filtres usuels (sort, uniq, tail, head, tr, grep, ràf) et, parfois à les enchaîner pour obtenir le résultat voulu. N'hésitez pas à consulter la page de manuel de ces outils pour y préciser/découvrir des options utiles.
  1. on travaille sur le fichier adresses.txt situé dans /home/petit. Les lignes de ce fichier ont la structure suivantes: "Nom:Prénom:No tel:code postal:ville". Les champs sont séparés par le caractère ":".Affichez en une version triée dans l'ordre croissant des noms.
  2. affichez les 3 premières lignes du fichier
  3. affichez les 4 dernières lignes du fichier
  4. affichez les lignes 2 à 5 du fichier
  5. affichez en une version triée par prénoms croissants
  6. affichez en une version triée par nom et prénom croissants (en cas d'égalité du nom, les lignes sont par prénoms croissants) en enchaînant deux commandes sort.
  7. affichez la liste des noms triée par noms croissants
  8. affichez la liste des noms, prénom et code postaux triée par code postaux
  9. affichez la liste des noms sans doublons (si un nom apparaît deux fois, on ne veut le voir qu'une seule fois)
  10. affichez les noms qui apparaissent plusieurs fois dans la liste
  11. affichez la liste des noms sans doublons et indiquez devant chaque nom le nombre de fois il apparaît
  12. affichez la liste des noms et prénoms triés par nom et prénoms croissants
  13. affichez la liste des noms après les avoir passés en majuscule
  14. affichez la liste des noms et prénoms des personnes habitant Evry.
  15. affichez, par la même méthode, la liste des gens qui habitent Dreux

exercice 2: premiers scripts shells

1. écrire un script dateNom qui retourne la date courante et le login de l'utilisateur: "nous sommes le date et vous êtes login"
2. On considère le script test.sh suivant :
#! /bin/sh
echo $1
testez le :
test.sh
test.sh salut les tepos
remplacez $1 par $2 et recommencez vos tests.
remplacez $2 par $* puis par $#
Expliquez.
3. On travaille avec le fichier adresses.txt. Ecrire un script noTel.sh ayant comme argument un nom et un prénom qui retourne le numéro de téléphone de la première personne. du fichier ayant ce nom et ce prénom.
4. modifiez votre script de façon à ce qu'il indique "non trouvé" s'il n'y a personne ayant ce nom et prénom dans le fichier adresses.txt (remarque: consultez la page de manuel de la commande grep et regardez les codes de retour).
5. Ecrire un script coordonnees.sh ayant un nom et un prénom comme argument qui  indique les coordonnées de la première personne ayant ce nom et ce prénom . L'affichage se fera sous la forme : "prenom NOM habite nomVille (codePostal) et a comme No de tel: numeroTel". Le nom de la personne sera en majuscule.

exercice 3: renommage de photos

  1. copiez les photos présentes dans /home/petit dans votre dossier personnel. Ces fichiers photos ont des noms de fichiers de la forme DSCF*.JPG
  2. la commande exif permet de lire les informations exif des photos. Faites quelques tests avec la commande exif et notez qu'il est possible d'obtenir la date de prise de vue. Ces photos ont-elles été prises au flash ?
  3. en utilisant la commande grep, extrayez la ligne contenant les dates et heures de prise de vue
  4. donnez un enchaînement de commandes permettant d'obtenir la date de prise de vue
  5. donnez un enchaînement de commandes permettant d'obtenir l'heure de prise de vue
  6. ecrire un script qui renommera une photo passant en argument sous la forme date-heure-ancienNom. Exemple DSCF2006.JPG devient 2006-1201-123450-DSCF2006.JPG

Bibliographie/liens utiles

Dans une version ultérieure de ce document.