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
shou shells de type Bourne. On y trouve par exemplebash,dash,zshet d’autres. - les shells de type C-shell comme
cshoutcsh.
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 :
- afficher le prompt (invite de commande) pour indiquer à l’utilisateur qu’il est prêt et attend une commande
- attendre l’appui de la touche
Entrée - interpréter la ligne de commande
- si la commande est bien formée, alors
- exécuter la ligne de commande
- sinon
- produire un message d’erreur
- 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
- Parcourez les pages de manuel de
aproposetman. - Quelles commandes ont un rapport avec le calendrier ?
- Affichez un calendrier du mois.
- Affichez un calendrier de votre mois de naissance.
- 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 |
- Lisez les pages de manuel des commandes
ls,pwdetmkdirpour vérifier leurs rôles. - 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».
- Tapez
cd ..; dans quel dossier vous trouvez-vous ? - 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.
Déplacez-vous dans le dossier personnel de votre binôme (son «home»), affichez les fichiers qu’il contient.
Tapez
cd; que s’est-il passé ?Dans votre «home», créez un dossier
moduleM1105. Créez un dossierTPdansmoduleM1105. Pouvez-vous créer des nouveaux répertoiresmodulem1105,ModuleM1105etmoduleM1105dans votre «home» ?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 `-- poulpeAfficher tous les contenus du répertoire
animaux.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 :
Donnez le chemin absolu des dossiers
humain,chien,cheval,chatetchauve-souris.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ésVérifiez vos réponses avec des commandes.
Donnez trois commandes permettant de se déplacer dans votre dossier personnel (votre «home»).
Lisez les pages de manuel de
mvettouch. Dans quel ordre sont les arguments demv? Peut1.on régler la date de modification d’un fichier dans le passé ou dans le futur ?Placez-vous dans votre «home» et, sans utiliser
cd, créez un dossierpoissonsdans le dossier desvertébrés, créez des dossiersdeau douceetde merdans ce dossier et à l’aide de la commandetouchcréez des fichiersbar,merlu,sole,truite,carpe.Affichez des informations détaillées sur les fichiers que vous venez de créer (taille, inode, date…)
Créez un fichier nommé
vampiredans le dossierchauve-souris.Déplacez le dossier
chauve-sourisdans le dossierbipèdes(les chauve1.souris ne sont pas apodes, elles ont des pattes).Sans utiliser
cd, déplacez ledauphindans le dossierpoissons. Proposez une commande ne dépendant pas du dossier courant puis une dépendant du dossier courant (que nous supposerons être~).Supprimez le dossier
poulpe(celui-ci doit être vide). Proposez plusieurs méthodes pour le faire.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.
- Copiez le fichier
/home/profs/ehainry/lecture/lecturesur votre bureau. - Modifiez votre copie.
- Modifiez l’original.
- Ajoutez votre nom dans le fichier
/home/profs/ehainry/lecture/ecriture. - Accédez aux dossiers
interdit,lectureetautorisedans/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.
dsignifie 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
essaietautre? Vérifier. - Est-il possible de supprimer
essaietautre? - Est-il possible de lister le contenu de
autorise,interditetlecture. - 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.