1. Introduction

Vous devrez rédiger un compte-rendu de TP qui sera en fin de séance transmis par mail à votre chargé de TP. Ce compte-rendu nous sert à savoir ce que vous avez compris ou non, et vous servira pour réviser les TP ainsi que lors de l’évaluation pratique (les documents seront autorisés). Aussi, attachez-vous à présenter les informations importantes de façon à pouvoir les retrouver facilement.

Manipulations en ligne de commande

Linux ayant hérité de la philosophie des systèmes Unix, il propose une autre interface que l’interface graphique : l’interpréteur de commande (ou shell). Les commandes que veut exécuter l’utilisateur sont entrées dans un terminal en mode texte. Bien que cette interface puisse paraître archaïque, elle est un outil très puissant et possédant de nombreux avantages sur les interfaces graphiques en particulier dans la possibilité d’automatiser les actions ou de répéter les commandes, mais aussi dans l’utilisation à distance : il y a beaucoup moins d’informations à transmettre par le réseau pour une interface textuelle que pour une interface graphique.

Pour la suite du TP, nous allons lancer un terminal. Nous aurons ainsi dans notre environnement graphique une fenêtre donnant accès à un shell à côté des autres fenêtres.

Dans un système de la famille Unix, plusieurs shells différents peuvent être disponibles. Chacun de ces shells a ses spécificités. Il y a deux grandes familles parmi les shells :

  • les shell descendant de sh ou shells de type Bourne. On y trouve par exemple bash, dash, zsh et d’autres.
  • les shells de type C-shell comme csh ou tcsh.

Le shell que nous allons utiliser est le shell par défaut des systèmes Linux : bash, qui est le shell qui se lancera par défaut dans votre fenêtre de terminal. Il y a normalement une icône dans votre barre d’outils pour lancer un terminal.

Algorithme d’un shell

Les commandes que vous tapez sont analysées et exécutées par l’interpréteur de commandes. Une commande correspond en fait à l’exécution d’un programme dans l’interpréteur avec des options et des données. Pour s’exécuter, la commande que vous tapez peut :

  • avoir besoin d’informations, sous forme de paramètres qui peuvent être des options, des fichiers à manipuler ou des arguments ;
  • produire ou transformer de l’information (par exemple dans des fichiers) ;
  • produire un message d’erreur.

L’algorithme de base d’un interpréteur de commande, c’est-à-dire le schéma de fonctionnement est le suivant :

  1. afficher le prompt (invite de commande) pour indiquer à l’utilisateur qu’il est prêt et attend une commande
  2. attendre l’appui de la touche Entrée
  3. interpréter la ligne de commande
  4. si la commande est bien formée, alors
  5. exécuter la ligne de commande
  6. sinon
  7. produire un message d’erreur
  8. revenir en 1.

Pour sortir de cette boucle, il suffit de taper la commande exit. Notez que l’étape 3 peut être complexe (cela inclut par exemple de transformer les noms de fichiers en des descripteurs des fichiers) et que l’étape 5 n’est en réalité pas effectuée par le shell mais consiste à confier au programme voulu de s’exécuter avec les arguments précisés, cette exécution peut produire des messages (y compris d’erreur).

Parmi les informations dont peut avoir besoin une commande, on trouve les options et les arguments. Une commande peut être lancée seule, avec une ou plusieurs options, avec un ou plusieurs arguments ou avec des options et des arguments. La syntaxe de base d’une commande est la suivante :

commande [options] [arg1] [arg2] ... [argN]

Où les crochets indiquent qu’un élément est optionnel (il ne faut pas taper les crochets). Les options sont en général de la forme -a ou --option. Notez que l’espace est interprété comme le séparateur des arguments, la commande commande Le nom de mon fichier est donc compris comme la commande commande avec 5 arguments : Le, nom, de, mon, et fichier.

2. Les commandes d’aide

man et apropos

Vous avez vu que la commande who vous donne de l’aide sur son usage quand vous utilisez une option inconnue. Il existe une autre source d’informations pour savoir comment utiliser une commande : le manuel. Pour avoir des informations sur la commande w, il suffit de taper

man w

Par exemple, pour le manuel de la commande who, on tapera

man who

Toutes les pages de manuel sont structurées de la même manière. Elles comportent des parties distinctes fournissant chacune une catégorie d’informations particulière :

NAME
nom et courte description de la commande
SYNOPSIS
usage de la commande
DESCRIPTION
description longue de ce que fait la commande
OPTIONS
les différentes options de la commande et leur signification
RETURN VALUE
ce que renvoie la commande
ERRORS
Les erreurs qu’elle peut renvoyer
ENVIRONMENT
variables d’environnement considérées
FILES
Les fichiers touchés
VERSIONS
versions
NOTES
notes
BUGS
problèmes connus de cette commande
EXAMPLE
quelques exemples d’utilisation
AUTHORS
les auteurs du programme
SEE ALSO
autres pages de manuel en relation avec celle-ci

Pour sortir du manuel, appuyer sur la touche q. Pour rechercher un terme, utilisez /terme.

Une autre commande qui va vous être utile est la commande apropos. Elle sert à savoir dans quelle page de manuel on pourra trouver des informations sur un terme donné.

Questions sur les commandes d’aide

  1. Parcourez les pages de manuel de apropos et man.
  2. Quelles commandes ont un rapport avec le calendrier ?
  3. Affichez un calendrier du mois.
  4. Affichez un calendrier de votre mois de naissance.
  5. Quand a eu lieu le passage du calendrier julien au calendrier grégorien en Grande Bretagne ? Affichez le calendrier du mois en question. Combien comptait-il de jours ?

3. Fichiers et dossiers

Commandes de manipulation de fichiers

ls afficher le contenu d’un dossier ls [chemin]
cd se déplacer dans l’arborescence cd [chemin]
mkdir créer un dossier mkdir [-p] chemin
pwd afficher le dossier courant pwd
rmdir supprimer un dossier rmdir chemin
  1. Lisez les pages de manuel des commandes ls, pwd et mkdir pour vérifier leurs rôles.
  2. Après connexion (ou lancement d’une fenêtre Terminal), dans quel dossier vous trouvez-vous ? À partir de maintenant, nous appellerons ce répertoire votre «home».
  3. Tapez cd .. ; dans quel dossier vous trouvez-vous ?
  4. Affichez son contenu. Que remarquez-vous ?

cd permet de se déplacer dans l’arborescence. Le répertoire courant est pris en compte quand on affiche la liste des fichiers du répertoire et est donc important.

  1. Déplacez-vous dans le dossier personnel de votre binôme (son «home»), affichez les fichiers qu’il contient.

  2. Tapez cd ; que s’est-il passé ?

  3. Dans votre «home», créez un dossier moduleM1105. Créez un dossier TP dans moduleM1105. Pouvez-vous créer des nouveaux répertoires modulem1105, ModuleM1105 et moduleM1105 dans votre «home» ?

  4. Reproduisez l’arborescence suivante à l’aide uniquement de la ligne de commande :

    ~
    `-- animaux
        |-- vertébrés
        |   |-- mammifères
        |   |   |-- bipèdes
        |   |   |   `-- humain
        |   |   |-- quadrupèdes
        |   |   |   |-- canidés
        |   |   |   |   |-- chien
        |   |   |   |   `-- coyotte
        |   |   |   |-- équidés
        |   |   |   |   |-- cheval
        |   |   |   |   `-- zèbre
        |   |   |   `-- félins
        |   |   |       |-- chat
        |   |   |       `-- lynx
        |   |   `-- apode
        |   |       |-- cétacés
        |   |       |   |-- baleine
        |   |       |   `-- dauphin
        |   |       `-- chauve-souris
        |   `-- oiseaux
        |       |-- corbeau
        |       `-- mésange
        `-- invertébrés
            `-- mollusques
                `-- poulpe
  5. Afficher tous les contenus du répertoire animaux.

  6. Ajouter le panda dans le dossier ursidés dans le dossier quadrupèdes en une seule commande (à la fois ursidés et panda doivent être créés).

Chemins absolus et relatifs

L’utilisation de la commande cd se fait en lui donnant en argument un chemin menant au point de l’arborescence où l’on veut se rendre. Ce chemin peut être de deux sortes : ou bien relatif, c’est-à-dire expliquant comment s’y rendre depuis le point courant (par exemple remonter d’un étage, puis descendre dans le dossier lecture) ; ou bien absolu, c’est-à-dire explicitant où il est et non comment s’y rendre (ce qui en pratique se fait en expliquant comment s’y rendre de puis la racine).

Par exemple, /home/eleves/toto/lecture/ est un chemin absolu (le / débutant le chemin montre que l’on part de la racine et non du dossier courant). Par contre, ../interdit est un chemin relatif. Il ne sera valable que depuis certains points. Un chemin relatif est relatif à un dossier.

Ainsi, dans l’arbre de dossiers, réalisé lors de la première séance, un chemin relatif du dossier lynx par rapport au dossier humain est ../../quadrupèdes/félins/lynx : il faut remonter dans le dossier bipède puis dans le dossier mammifères avant de pouvoir redescendre vers le lynx.

Remarque : il existe plusieurs chemins pour aller d’un point à un autre, par exemple, ../../quadrupèdes/canidés/../félins/chat/../lynx est aussi un chemin relatif du dossier lynx par rapport au dossier humain.

Il existe certains raccourcis désignant des chemins particuliers :

.. répertoire parent
. répertoire courant
~ répertoire «home»
/ répertoire racine

Ainsi, “cd .” permet de rester dans le dossier courant, “cd ..” de remonter d’un étage dans l’arborescence de fichiers et “cd ~” de revenir dans son répertoire personnel (par exemple /home/eleves/dias0071/).

Nous allons maintenant découvrir de nouvelles commandes : rm, mv et touch. mv permet de déplacer (move) ou renommer des fichiers et dossiers. touch change la date de dernière modification d’un fichier ou le crée s’il n’existe pas. rm permet de supprimer un dossier ou un fichier.

Questions :

  1. Donnez le chemin absolu des dossiers humain, chien, cheval, chat et chauve-souris.

  2. Pour chacun des noms suivants, indiquez s’il est absolu valide, relatif valide par rapport à ~/animaux/vertébrés/mammifères (1) et relatif valide par rapport au chemin ~/animaux/vertébrés/mammifères/apode/cétacés/baleine/ (2) :

    chemin absolu ? relatif à 1 relatif à 2
    ../dauphin
    ../mammifères/apode/cétacés/baleine
    ~/animaux/vertébrés
    ../../cétacés/baleine
    ../chauve-souris
    ../../.
    ../invertébrés/./mollusques
    ../../../../../../../../..
    ./baleine
    ./bipèdes
    ~/apode/cétacés/baleine
    ~/animaux/invertébrés/../vertébrés
  3. Vérifiez vos réponses avec des commandes.

  4. Donnez trois commandes permettant de se déplacer dans votre dossier personnel (votre «home»).

  5. Lisez les pages de manuel de mv et touch. Dans quel ordre sont les arguments de mv ? Peut1.on régler la date de modification d’un fichier dans le passé ou dans le futur ?

  6. Placez-vous dans votre «home» et, sans utiliser cd, créez un dossier poissons dans le dossier des vertébrés, créez des dossiers deau douce et de mer dans ce dossier et à l’aide de la commande touch créez des fichiers bar, merlu, sole, truite, carpe.

  7. Affichez des informations détaillées sur les fichiers que vous venez de créer (taille, inode, date…)

  8. Créez un fichier nommé vampire dans le dossier chauve-souris.

  9. Déplacez le dossier chauve-souris dans le dossier bipèdes (les chauve1.souris ne sont pas apodes, elles ont des pattes).

  10. Sans utiliser cd, déplacez le dauphin dans le dossier poissons. Proposez une commande ne dépendant pas du dossier courant puis une dépendant du dossier courant (que nous supposerons être ~).

  11. Supprimez le dossier poulpe (celui-ci doit être vide). Proposez plusieurs méthodes pour le faire.

  12. Supprimez le dossier bipèdes. Lesquelles des méthodes précédentes réussissent ?

4. Droits

Pour la salle Backus, suivre l’énoncé spécial Backus.

  1. Copiez le fichier /home/profs/ehainry/lecture/lecture sur votre bureau.
  2. Modifiez votre copie.
  3. Modifiez l’original.
  4. Ajoutez votre nom dans le fichier /home/profs/ehainry/lecture/ecriture.
  5. Accédez aux dossiers interdit, lecture et autorise dans /home/profs/ehainry/. Dans lesquels pouvez vous voir les fichiers, modifier les fichiers, supprimer des fichiers ?

Les élèves (membres du groupe eleves) peuvent créer des fichiers dans le dossier /home/profs/ehainry/autorise/ mais ne le peuvent pas dans le dossier /home/profs/ehainry/lecture. De plus, il est possible de voir le contenu de ces dossiers mais pas celui de /home/profs/ehainry/interdit.

D’autre part, le fichier /home/profs/ehainry/lecture/ecriture est modifiable tandis que /home/profs/ehainry/lecture/lecture et /home/profs/ehainry/lecture/interdit ne le sont pas et interdit n’est même pas lisible. Ces dossiers et ces fichiers disposent de droits différents.

L’option -l (ell) de la commande ls permet d’obtenir plus d’informations sur les fichiers et dossiers. Ainsi, la commande ls -l /home/profs/ehainry/ renvoie quelque chose ressemblant à

hainry@backus17:~$ ls -l /home/profs/ehainry
drwxrwxrwx 3 ehainry profs  4096 Sept 21 10:21 autorise
-rw-rw-rw- 1 ehainry profs    63 Sept 21 10:21 autre
-rw-r--r-- 1 ehainry profs    64 Sept 21 10:21 essai
drwxr-x--- 5 ehainry profs  4096 Sept 21 10:21 interdit
drwxr-xr-x 5 ehainry profs  4096 Sept 21 10:21 lecture

Les colonnes représentent respectivement les droits, le nombre de liens, le login du propriétaire, le groupe du propriétaire, la taille du fichier, la date de création et enfin le nom.

Analysons les droits sur interdit.

d
Le premier caractère indique le type du fichier. d signifie qu’il s’agit d’un dossier. - que c’est un fichier régulier. Nous verrons d’autres types prochainement.
rwx
Les trois caractères suivants représentent les droits accordés au propriétaire (ici ehainry). Ils représentent respectivement les droits de lecture (read), d’écriture (write) et d’exécution (execute).
r-x
Les trois caractères suivants représentent les droits accordés au groupe (ici profs). Les membres du groupe ont ici droit de lecture et d’exécution mais pas d’écriture (le - représente l’absence du droit).
---
Les trois derniers caractères représentent les droits accordés aux personnes qui n’appartiennent pas aux groupes (cela inclut dans notre exemple les élèves par exemple).

Sur un fichier, le droit d’écriture permet de modifier le contenu du fichier, le droit de lecture permet d’afficher le contenu du fichier. Le droit d’exécution permet l’exécution (voir les fichiers dans /usr/bin).

Sur un dossier, le droit de lecture permet de connaître la liste des fichiers contenus, le droit d’exécution permet d’aller dans le dossier en question, le droit d’écriture permet de modifier la liste des fichiers, c’est-à-dire de créer ou supprimer des fichiers dans ce dossier.

Répondez aux questions suivantes en vérifiant vos réponses à l’aide des commandes ls, touch, rm, cat et gedit (il s’agit d’un éditeur de texte).

Questions

  • En fonction des droits précisés ci-dessus, est-il possible de modifier essai et autre ? Vérifier.
  • Est-il possible de supprimer essai et autre ?
  • Est-il possible de lister le contenu de autorise, interdit et lecture.
  • Est-il possible de supprimer des fichiers dans ces 3 dossiers ?
  • Est-il possible de créer des fichiers dans ces 3 dossiers ?
  • Expliquez ces différents comportements à l’aide des droits.
  • Pour les fichiers ayant les droits suivants (et le groupe eleves), pouvez-vous les modifier, les lire, les supprimer ?
droits modifier lire supprimer
-rwxrwxrwx
-rwxr--r--
-r--r--r--
-rwx-w--w-
  • Pour les dossiers ayant les droits suivants (et le groupe eleves), pouvez-vous y créer un fichier, supprimer un fichier, lister le contenu, lister le contenu de façon détaillée, supprimer le dossier ?
droits créer fichier suppr. fichier liste liste détaillée suppr.
drwxr--r--
drwxr-xr-x
drwxrwxrwx
drwx-w--w-

Dans la suite, vous allez pouvoir vérifier vos réponses en créant des fichiers et dossiers ayant les droits en question. La commande chmod permet de changer les droits d’un fichier ou dossier.