Précédent Suivant Index

4   Ordres UNIX de base

4.1   Le système de fichiers



Figure 1 : Un extrait de l'arborescence des fichiers gèrés par Linux dans les salles DEUG

Les informations sont rangées sur le disque dans des fichiers. Les fichiers sont eux-mêmes rangés dans des répertoires (ou directory en anglais). En fait les répertoires sont des fichiers particuliers contenant une liste de fichiers, ils sont donc eux aussi rangés dans des répertoires. Le seul répertoire qui ne soit pas dans un autre répertoire est appelé racine et noté /. Cette organisation est représentable par une structure d'« arbre » renversé esquissé sur la figure 1.

4.1.1   Noms de fichiers, chemins

On désigne un fichier soit de manière « absolue », soit de manière « relative ». Quand on donne son nom de manière absolue, on donne la liste des répertoires et sous-répertoires pour accéder au fichier depuis la racine séparés par des /. Par exemple, dans l'arborescence de la figure 1, /home/Etu/mio1/mio1m1); quand on le donne de manière relative on donne de la même manière le chemin depuis le répertoire de travail, sans commencer par /. Par exemple, si le répertoire de travail est /home/Etu/, le nom relatif du fichier précédent sera mio1/mio1m1.

4.1.2   Répertoires

À tout moment, chaque utilisateur se situe dans un répertoire de travail, dont on peut avoir le nom par la commande pwd (comme print working directory).

Chaque utilisateur dispose d'un répertoire principal, où il se trouve par défaut en début de session (par exemple, dans l'arborescence de la figure 1, /home/Etu/mio1/mio1m1) dans lequel il met ses fichiers. Ce répertoire est aussi appelé home directory et noté « ~ ».

On obtient la liste des fichiers contenus dans un répertoire par la commande ls (comme list). Pour se déplacer dans l'arborescence, on dispose de la commande cd (comme change directory).

Nous reviendrons plus tard sur ces trois commandes.

4.1.3   Les droits d'accès

UNIX étant un système multi-utilisateurs, il dispose d'un système permettant de contrôler qui a accès à quels fichiers.

Pour cela, comme le montre la figure 2 chaque fichier dispose :


Figure 2 : Les différentes classes d'utilisateurs vis-à-vis des droits d'accès à un fichier.

De plus chaque utilisateur appartient à un ou plusieurs groupe(s). Pour voir les droits d'un fichier il suffit d'utiliser l'option -l de ls, c'est-à-dire taper ls -l argument. On obtient alors, pour chaque fichier, une ligne de la forme :

-rw-r--r-- 1 user 6876 Sep 10 11:04 fichier

Cette ligne donne un certain nombre d'informations : en partant de la droite
  1. Le nom du fichier (fichier)
  2. La date et l'heure de dernière modification, ou éventuellement seulement la date si elle est assez éloignée. (Sep 10 11:04)
  3. La taille en octets (6876)
  4. Le nom du propriétaire du fichier. (user)
  5. Un nombre que vous pouvez ignorer (1)
  6. Les droits et le type du fichier (-rw-r--r--). Ce champ est représenté par une suite de dix caractères. Le plus à gauche donne le type du fichier : - si c'est un fichier « normal » et d si c'est un répertoire (d comme directory). Ensuite viennent 9 caractères donnant les droits proprement dits. Les 3 premiers donnent les droits pour le propriétaire du fichier, les 3 suivants pour les gens appartenant au même groupe que le propriétaire du fichier, et les 3 derniers pour les autres utilisateurs. Ces trois caractères sont :
    1. r ou -. Un r indique que le fichier est accessible en lecture, un - indique que le fichier n'est pas permis en lecture.
    2. w ou -. Un w indique que l'utilisateur concerné peut écrire sur ce fichier.
    3. x ou -. Un x indique que le fichier contient un programme que l'utilisateur peut exécuter.
    Ces permissions ont une signification spéciale quand le fichier est un répertoire : écrire dans un répertoire signifie y créer ou y détruire des fichiers. Exécuter un répertoire signifie y accéder par la commande cd. En général, les droits sur un répertoire seront drwxr-xr-x ce qui signifie que seul le propriétaire peut y créer ou détruire des fichiers, mais que tout le monde peut aller voir ce qui se trouve dans ce répertoire, ou (mais très rarement) drwx------, ce qui signifie que c'est un répertoire où seul le propriétaire peut aller. Il s'agit typiquement de répertoires confidentiels tel que celui où vous sauverez les courriers électroniques que vous souhaiterez conserver.

    Par défaut, vos fichiers (excepté les fichiers de courrier créés par certains utilitaires de courrier électronique) sont créés avec les droits -rw-r--r--.

    Vous pouvez toujours modifier ces droits a posteriori avec la commande chmod (pour change mode). On peut appliquer cette commande à un fichier unique ou une liste de fichiers.

    On indique les modifications à apporter aux droits de la façon suivante : chmod mode fichier. L'argument mode est décrit par trois composantes : la catégorie des gens dont on modifie les droits sur le fichier, la nature de la modification (ajout, retrait, redéfinition) des droits, la nature des droits à modifier (lecture, écriture ou exécution). La figure 3 récapitule le contenu de cet argument. Par exemple si le fichier fichier a été créé avec les droits par défaut -rw-r--r-- et si on veut retirer les droits de lecture de ce fichier aux membres du groupe et aux autres, on écrit chmod go-r fichier.



    Figure 3 : L'argument mode de la commande chmod à appliquer à un fichier.

4.1.4   Quelques commandes de base sur les répertoires et les fichiers

4.2   Communication entre programmes

UNIX permet à plusieurs programmes de s'exécuter simultanément, et dispose de moyens pour les faire communiquer. Le moyen le plus simple est le « pipe » (|). En gros quand on tape commande1 | commande2, le résultat de commande1 est envoyé comme entrée à commande2. Cela permet de faire des filtres. L'utilisation la plus courante est avec la commande more qui, lorsqu'elle n'a pas d'argument, affiche le texte qu'on lui entre en s'arrêtant lorsque l'écran est plein. Par exemple, ls -l /bin|more affiche page par page la liste des fichiers contenus dans le répertoire /bin avec leurs droits.

Pour rediriger le résultat d'une commande vers un fichier commande > fichier. Pour rediriger les messages d'erreurs d'une commande vers un fichier commande 2> fichier*. Si on veut jeter quelque chose, on dispose du fichier /dev/null qui absorbe toute information sans la stocker.

4.3   Commandes souvent utilisées comme filtres


Précédent Suivant Index