# Répertoires

# Corrigé des exercices sur les répertoires (`mkdir`, `rmdir`, `cd`)

Ces exercices sont des questions de cours : les solutions se trouvent toutes dans les pages de man des commandes en question. On suppose donc connues les commandes de `less`, qui servent à se déplacer dans les pages de man... et la commande servant à chercher un mot. Testez les commandes sur des fichiers et répertoires d'essai pour vous faire la main et comprendre ce qui se passe.

## `mkdir, rmdir`

1. Créez trois répertoires en une seule ligne de commande.

   Si vous voulez créer trois répertoires `bla`, `ble` et `bli`, tapez

       mkdir bla ble bli

2. Effacez ces trois répertoires en une seule ligne de commande .

   Il faut taper

       rmdir bla ble bli

3. Que se passe-t-il si vous tapez `mkdir mkdir` ?

   Vous créez chez vous un répertoire appelé `mkdir`.

4. Vous voulez détruire un répertoire `bla/`... mais ça ne marche pas.

   `ls` vous dit qu'il est vide, et pourtant vous ne réussissez pas à l'effacer : c'est qu'il n'est pas vide. Il doit y avoir des fichiers cachés, commençant par un point, que vous ne voyez pas avec `ls` sans option. Il faut taper

       ls -a

   et effacer les fichiers trouvés.

5. Est-ce que `mkdir` peut prendre des options ?

   Oui, une : l'option `-p`, dont on va parler tout de suite.

6. À quelle condition est-ce que la ligne de commande «`mkdir Rapport/annexes`» peut fonctionner et créer effectivement ce sous-répertoire ?

   Il faut que le répertoire `Rapport` existe, pour que l'on puisse y créer un sous-répertoire.

7. Y a-t-il une option de `mkdir` qui permette de créer à la fois un répertoire et un sous-répertoire de ce répertoire ?

   Oui, c'est l'option `-p`. Quand vous tapez

       mkdir -p Rapport/annexes

   un répertoire `Rapport` est créé, et dans ce répertoire un sous-répertoire `annexes`.

8. Comment créer un répertoire en spécifiant des droits ?

   On utilise l'option `-m` (mode) de `mkdir`. Par exemple :

       bireme ~ $ mkdir -m 700 Mail
       bireme ~ $ ls -ld Mail
       drwx------   2 robin    litt95     2048 Jun  2 15:27 Mail/

9. Quel est l'effet de la commande suivante :

        rmdir -p toto/tata/tutu/

   Cette commande efface toute la hiérarchie des répertoires, à condition qu'ils soient vides; si par exemple `tutu/` est vide mais `toto/` ne l'est pas, `tutu/` sera effacé mais pas `toto/`, et le programme s'arrête.

10. Création récursive sans message d'erreur

    On achève avec ceci le tour de l'option `-p`... Si donc on tape

        mkdir -p toto/tutu/

    le sous-répertoire `tutu/` est créé si `toto/` existe déjà; et si `toto/` n'existe pas, ce répertoire et son sous-répertoire sont créés. Il n'y a pas de message d'erreur.

## `cd`

But de l'exercice : apprendre à se servir de `.` et `..` («point» et «point point»). `..` désigne le répertoire père du répertoire courant, et `.` désigne le répertoire courant. `..` sert beaucoup avec `cd`, pour remonter d'un niveau dans une arborescence; `.` est très utile avec des commandes comme `mv` ou `cp`, où il signifie en fait «ici».

1. Dans quel répertoire vous trouvez-vous quand vous vous loguez ?

   Vous vous trouvez dans votre répertoire personnel, dans `~` (tilde).

2. Allez directement dans `~/Rapport/docs/afaire/`

   Taper

       cd Rapport/docs/afaire

3. De là, passez dans `~/Rapport/docs/fait/`

       cd ../fait

4. Revenez dans `~/Rapport/`

   Taper

       cd ../..

   ou

       cd ~/Rapport

5. Sans changer de répertoire, regardez avec `less` le contenu de `~/www/index.html`

   Il faut taper

       less ~/www/index.html

   ou

       less ../www/index.html

6. Passez dans `~/Rapport/docs/`

       cd docs/

7. En restant là où vous êtes, affichez les droits de `~/Mail/`

   Il y a un petit piège dans cette question. En effet, si vous tapez

       ls -l Mail/

   vous allez obtenir le contenu du répertoire `Mail/`, mais pas le statut du répertoire lui-même. Il faut donc utiliser l'option `-d` de `ls` :

       bireme ~ $ ls -ld Mail
       drwx------ 2 toto  litt98 512 Apr  2 19:02 /users/98/litt/toto/Mail/

8. Revenez dans votre répertoire principal

   Taper `cd`, sans arguments.

9. Que se passe-t-il si vous vous déloguez alors que vous n'êtes pas dans votre répertoire principal ?

   Strictement rien ! Ça n'a aucune importance.

Auteur : Émilia Robin, Joël Riou.