TP 2 de Système 1ere Année Informatique 2005-2006

Exercice 1 : Mon premier script unix

Créez un fichier nommé affiche contenant le texte
    
      #!/bin/sh
      echo $1 $3
    
    
  1. Rendez ce script exécutable
  2. Testez-le avec divers arguments
  3. ajoutez l'affichage du nombre d'arguments
  4. écrivez un script qui fasse la somme de ses trois premiers arguments (utilisez expr)
  5. Écrivez un script qui prend comme argument un nom de programme, et qui affiche la liste des id de process correspondant à ce programme.

Exercice 2

Question 1

Écrire un programme shell qui affiche la valeur du plus grand de ses arguments, qui sont supposés être des entiers. Commencez donc par écrire l'algorithme correspondant !!!!

Question 2

Examinez la valeur de $? après appel du programme grep, selon que grep a reconnu une ligne ou pas.

Écrire une fonction shell qui teste si son argument est un nombre.
  1. en utilisant grep ou egrep
  2. en utilisant le code d'erreur de test ou expr.

Question 3

Modifiez le programme précédent pour qu'il affiche un message d'erreur si l'utilisateur ne fournit pas les arguments corrects.

Question 4

Ajouter une option "-r" à votre programme. Si l'utilisateur appelle le programme avec l'option "-r", c'est le plus petit nombre trouvé qui sera affiché.

Question 5

Ajouter une option "--" à votre programme, pour préciser qu'il n'y a pas d'option supplémentaire.

Question 6

Ajouter une option "-l" à votre programme. Si l'utilisateur appelle le programme avec l'option "-l", les arguments seront compris comme des chaînes de caractères, et le programme renverra la plus longue d'entre elles (utilisez wc).

Question 7

Testez votre programme en vérifiant qu'il fonctionne même quand les arguments comportent des espaces.

Question 8

Ajouter une option "-s" à votre programme. Si l'utilisateur appelle le programme avec l'option "-s", les arguments seront compris comme des chaînes de caractères, et le programme renverra la plus grande d'entre elles selon l'ordre lexicographique.

Exercice 3

  1. Utilisez ls, et éventuellement grep, pour obtenir la liste des fichiers et répertoires de votre compte (un nom de fichier ou de répertoire par ligne).
  2. Regardez le manuel de la commande uniq.
  3. Écrivez un programme qui affiche combien de fois un nom de fichier ou de répertoire est utilisé sur votre compte.
  4. Écrivez un programme qui affiche les noms des fichiers ou répertoires qui sont utilisés plusieurs sur votre compte.

Exercice 4

La commande find.prend comme arguments une liste de répertoire où démarrer une recherche, suivi d'un certain nombre d'action ou de conditions.

Ainsi,

find . -name '*.java' -print
affiche le nom de tous les fichiers java compris dans le répertoire courant ou un de ses sous répertoires. En utilisant le manuel de find :

Question 1

Listez tous les fichiers .java et .class de votre compte.

Question 2

Listez tous les fichiers de plus de 10ko de votre compte.

Question 3

Listez tous les fichiers qui n'ont pas été lus depuis plus de 30 jour.