# ls

# Corrigé des exercices sur `ls`

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.

1. Affichez le contenu de `/usr/local/games/bin`

       ls /usr/local/games/bin

   Vous obtenez une liste des jeux installés.

2. Quelle est la taille de votre `.flnewsrc.forum` ?

       ls -al .flnewsrc.forum

   L'option `-a` fait apparaître les fichiers de configuration, qui commencent par un point; l'option `-l` affiche plusieurs renseignements, en particulier la taille. En fait, si vous indiquez le nom complet du fichier cherché, avec le point, l'option `-a` est inutile; c'est le cas ici.

   Le `.flnewsrc.forum` contient la liste de continua de forum avec des indications sur les contis auxquels vous êtes abonnés et les messages que vous avez déjà lus. Il est remis à jour à chaque fois que vous lisez forum : la date indiquée correspond donc à la dernière fois que vous avec lancé (ou plus précisément, quitté...) forum.

3. À quoi sert l'option `-R` de `ls` ?

   Cette option permet d'afficher une liste récursive, c'est-à-dire qui indique le contenu des répertoires listés, ainsi que de leurs sous-répertoires. Si vous tapez `ls -R` dans votre répertoire personnel, vous aurez une liste de tout ce que vous avez chez vous.

4. Dans quel ordre les fichiers et répertoires sont-ils classés par défaut? Quelles sont les options qui peuvent servir à modifier ce critère de classement ?

   Pour savoir cela, il faut chercher le mot sort dans le man de `ls`. La première occurence vous dit que par défaut le résultat est trié par ordre alphabétique, selon la première lettre des fichiers. De façon plus précise, l'ordre est le suivant : ponctuations, chiffres, majuscules, minuscules, selon l'ordre défini par la table des caractères ASCII.

   En continuant à chercher, vous trouvez des options intéressantes : `-r` (reverse), qui inverse l'ordre de classement, `-t` (time) qui trie en fonction de la date de dernière modification.

5. Affichez le contenu de votre répertoire courant de telle sorte que les fichiers modifiés récemment apparaissent en premier.

       ls -t

   si vous voulez juste modifier le critère de tri, sans plus de renseignements; ou encore

       ls -lt

   si vous voulez une longue liste.

6. Quels sont les droits de votre répertoire `Mail` ? Qu'est-ce que cela signifie ?

   La ligne ressemble à ceci :

       drwx------ 2 toto  litt98 512 Apr  2 19:02 Mail

   Le `d` indique qu'il s'agit d'un répertoire (directory). Suivent ensuite neuf caractères, allant par trois; `r, w, x` correspondent aux droits que vous avez sur le répertoire (ou le fichier) : `r` (read) pour le droit de lecture, `w` (write) pour le droit d'écriture, `x` (execute) pour le droit d'exécution.

   Les six tirets qui suivent correspondent aux droits qu'ont le groupe (ici `litt98`) puis le reste des utilisateurs. Ici il y a des tirets, ce qui signifie qu'ils n'ont aucun droit sur ce répertoire.

   Cela veut dire que seul le propriétaire a le droit de lire et écrire dans son répertoire `Mail/`, ainsi que d'y accéder. Les répertoires et les fichiers de courrier sont protégés contre les indiscrétions.

   Un fichier de texte standard a les droits suivants :

       -rw-r--r--

   Il y a un tiret tout au début, ce qui signifie que c'est un fichier normal; vous avez le droit d'écrire et de lire (`rw-`), votre groupe et les autres utilisateurs ont le droit de lire le fichier (`r--`). La commande `chmod` permet de changer ces droits, si l'on veut restreindre la lecture, ou rendre un fichier exécutable.

   Remarque : ne cédez pas à la paranoïa... vos camarades ne passent pas leur temps à farfouiller sur les comptes des voisins, donc vous n'avez pas besoin d'interdire à la lecture tout ce que vous avez chez vous.

7. Décrivez le résultat de la commande `ls -l`.

   -     -rw-r--r-- 1 robin    litt95     754 Mar 22 11:59 projet.aux

     Les dix premiers caractères détaillent les droits du fichier. Le premier caratère identifie le type du fichier : ici, rien n'est spécifié, c'est donc un fichier normal. L'exercice précédent détaille la signification des lettres suivantes. Ce sont les droits normaux d'un fichier standard : tout le monde (propriétaire, groupe et autres utilisateurs) peut lire le fichier, seul le propriétaire peut écrire dedans.

   -     -rw-r--r-- 1 robin    litt95     754 Mar 22 11:59 projet.aux

     Le chiffre indique le nombre de liens. Nous vous renvoyons aux exercices sur les liens pour plus d'explications (qui peuvent attendre à un niveau débutant...).

   -     -rw-r--r-- 1 robin    litt95     754 Mar 22 11:59 projet.aux

     Le troisième champ donne le nom du propriétaire du fichier. Ici, il s'agit de l'utilisateur `robin`.

   -     -rw-r--r-- 1 robin    litt95     754 Mar 22 11:59 projet.aux

     Ce champ indique le groupe de l'utilisateur. Ici, nous apprenons qu'Émilia est une littéraire de la promotion 1995.

   -     -rw-r--r-- 1 robin    litt95     754 Mar 22 11:59 projet.aux

     Ce chiffre donne la taille en octets du fichier considéré. Ici, le fichier fait 754 octets, soit moins d'un Ko (1000 octets). C'est un petit fichier.

         -rw-r--r-- 1 robin    litt95     754 Mar 22 11:59 projet.aux

     Ce champ indique la date de dernière modification du fichier, ici le 22 mars de l'année courante, à 11h59. Quand le fichier date d'une année antérieure, celle-ci est indiquée et l'heure ne figure plus.

         -rw-r--r-- 1 robin    litt95     754 Mar 22 11:59 projet.aux

     Vient enfin le nom du fichier. Le suffixe `.aux` montre qu'il s'agit d'un fichier produit par LaTeX lors de la compilation d'un fichier `projet.tex`.

8. Comment afficher les droits d'un répertoire donné ?

   Si on tape

       ls -l repertoire/

   c'est le contenu du répertoire qui s'affiche, et pas son statut à lui. L'option `-d` (directory) permet de lister le répertoire lui-même.

9. Caractères identifiant les fichiers

   Ce sont les caractères suivants :

   slash | (`/`) | pour un répertoire
   arobase | (`@`) | pour un lien symbolique
   étoile | (`*`) | pour un exécutable
   pipe | (`|`) | pour un pipe nommé
   égal | (`=`) | pour un socket

   C'est l'option `-F` qui permet de les afficher.

10. Droits sur un répertoire

    Avoir le droit d'«exécuter» un répertoire, c'est avoir le droit d'y accéder, de s'y déplacer; mais je n'ai pas le droit de «lire» son contenu. Donc, à moins d'en être propriétaire, je ne peux pas afficher le contenu d'un répertoire ayant comme droits :

        drwx--x--x

Auteur : Émilia Robin, Joël Riou. Dernière modification le 2002-12-08.