Mise à niveau 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: redirections

  1. sauvegardez la liste des fichiers présents dans /etc dans un dossier nommé /tmp/liste.txt
  2. ajoutez y la liste des fichiers présents dans /usr/bin et dans /var/log
  3. sauvez dans un fichier la liste des noms et espaces disques occupé du contenu de /var : une ligne par fichier contenu dans /var
  4. faites de même mais sauvez aussi dans /tmp/erreurs la liste des erreurs générée par votre commande

Exercice 2: enchaîments de commandes, filtres

  1. que fait la commande suivante : "ls |wc -l"
  2. combien y a-t-il de comptes d'étudiants de l3 ? (ypcat passwd permet d'obtenir la liste totale des comptes utilisateurs du domaine)
  3. que fait la commande suivante: df -k . | tail -1|tr -s ' ' |cut -d ' ' -f 4
  4. liste des fichiers triès par taille: affichez la liste des fichiers d'un dossier triés par taille. L'affichage doit comprendre la taille du fichier puis son nom (regardez "ls -s")
  5. utilisateurs connectés: Écrire une commande qui liste les login des utilisateurs connectés sur la machine au moment où on lance la commande (regardez la commande who).

exercice 3: 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 présent dans le dossier ~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 5: 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.