Solution des exercices

Solution de l'exercice 1

Il suffit d'utiliser les commandes décrites.
maranget@manche ~ > touch bidon
maranget@manche ~ > mkdir TD
maranget@manche ~ > cd TD
maranget@manche ~/TD > mkdir TD-0
maranget@manche ~/TD > cd TD-0
maranget@manche ~/TD/TD-0 > 
Remarquons que pour retourner dans le répertoire personnel, on peut utliser cd .. deux fois :
maranget@manche ~/TD/TD-0 > cd ..
maranget@manche ~/TD > cd ..
maranget@manche ~ > 
Ou encore remonter deux crans d'un coup dand la hiérarchie des fichiers :
maranget@manche ~/TD/TD-0 > cd ../..
maranget@manche ~ > 
(Ça mérite bien trente secondes de réflexion.)

Solution de l'exercice 2

C'est la suite du précédent
maranget@manche ~/TD/TD-0 > cd
maranget@manche ~ > ls -F
TD/  bidon
Quelque mots sur ``-F'', c'est une option de la commande ``ls'', c'est à dire une sorte d'argument qui se siture avant les autres et qui commence par ``-''. (Tout ça, c'est des conventions). L'option modifie le comportement des commandes, ici, elle indique le type des fichiers listés (comme on pourrait s'attendre ``/'' indique un répertoire.

Solution de l'exercice 3

On peut y aller directement :
maranget@manche ~ > cd /
maranget@manche / > 
Ou par un certain nombre de ``cd ..''. Soit en tapant les touches cd_.. puis Ctrl-p, Ctrl-p, ...
maranget@manche ~ > cd ..
maranget@manche /users/profs/info > cd ..
maranget@manche /users/profs > cd ..
maranget@manche /users > cd ..
maranget@manche / > cd ..
maranget@manche / > cd ..
Noter que ça ne bouge plus à la fin.

Solution de l'exercice 4

Utilisez les commandes ``basename coucou'' et ``dirname coucou'', pour vérifier que `basename coucou`/`dirname coucou` est bien un chemin d'accès valide vers le fichier coucou du répertoire courant.

Solution de l'exercice 5

Solution de l'exercice 6

Solution de l'exercice 7

Solution de l'exercice 8

Voici tfiles
#! /bin/sh

for i
do
  tfile $i
done
On liste le répertoire courant par :
maranget@manche ~/TD/TD-0 > tfiles *
args*
tfile*
tfiles*
On liste un répertoire quelconque (par exemple ..) par
maranget@manche ~/TD/TD-0 > tfiles ../*
../TD-0/

Solution de l'exercice 9

Voici une version un peu étendue de liste qui liste tous les répertoires passés en argument.
#! /bin/sh

for dir
do
  for file in $dir/*
  do
    echo $file
    if test -d $file
    then
      liste $file
    fi
  done
done
On notera l'utilisation de test -d, ainsi que l'appel récursif à liste.


Ce document a été traduit de LATEX par HEVEA.