TP découverte des commandes Linux
On s’appuieras notamment sur les ressources suivantes :
Ressources
- Le chapitre 24 du manuel (Spécialité NSI, Th. Balabonski et al., Ellipses)
- Le site informatiquelycee proposé sous licence par le collègue D. Roche du lycée de Bonneville pour une présentation générale des systèmes d’exploitation, et surtout ici pour une présentation de la ligne de commande.
Environnement
Pour éviter toute installation, tout en disposant toujours du même environnement de base, disponible depuis toute machine connectée à Internet, on utiliseras à distance sur une machine « Weblinux » depuis un navigateur. Après le lancement, la connexion est automatiquement, en tant qu’utilisatrice alice
et dans le répertoire personnel d'alice.
En bas du shell, les trois icônes permettent (de gauche à droite) de :
Sauvegarder sur son PC une archive (.tar) qui reprend une grande partie du dossier personnel d’alice (ce qui te permet de fournir la trace de ton travail au prof notamment!)
D’envoyer un fichier de son PC vers la WebLinux. Il sera présent dans le répertoire personnel, à sa base.
De coller dans le shell du texte que tu as copié sur son PC : après avoir copié, clic droit dans cette zone clipboard
puis coller
Par défaut, l’invite de commande y reste réduite à un simple $
. On peut la rendre plus complète en exécutant la commande suivante (c’est le moment idéal pour tester le copier-coller qu’on vient d’évoquer !) :
PS1="\[\033[01;32m\][\u@\h\[\033[00m\]:\[\033[01;35m\]\w]\[\033[00m\]$" # (1)
- Nous ne l’expliquerons pas ici et il n’est pas indispensable de réaliser cette manipulation tout de suite.
Prenez des notes de vos manipulations pour vous souvenir de ce que vous faites
1. Explorer l’arborescence⚓︎
On va d’abord utiliser des commandes shell qui permettent de se déplacer dans l’arborescence, de visualiser les répertoires, fichiers, ainsi que d'récupérer des informations sur eux :
-
Exécute
pwd
(pour « Print Working Directory ») qui donne l’adresse du répertoire dans lequel on se trouve.
Est-ce une adresse absolue ou une adresse relative?
Comment le voit-on?
Note : si tu n’es pas à l’aise avec la différence entre adresse absolue ou adresse relative (notion vue avec le HTML notamment), tu peux lire l’article suivant -
Pour lister le contenu du répertoire courant (on dit aussi parfois dossier), utilise
ls
. Combien d’éléments contient-il? -
On peut ajouter des options à la commande :
-
ls -a
(pour «all») permet de lister également les fichiers «cachés» (au sens large, les systèmes POSIX, ou « de type UNIX », voient les répertoires comme des fichiers particuliers), à savoir ceux qui ont un nom commençant par.
et qui sont invisibles par défaut.
On voit apparaître notamment le.
qui représente le répertoire courant, ainsi que..
qui désigne le dossier « parent » situé au niveau juste au dessus dans l’arborescence. -
ls -l
(pour « long ») donne une description plus complète. Reporter vous au cours pour voir la décomposition des informations sur la ligne (le premier caractère de chaque ligne indique s’il s’agit d’un fichier classique (-) ou d’un répertoire (d pour directory), etc ...) -
On peut combiner les options :
ls -a -l
ouls -al
. Donne le nom d’un répertoire, celui d’un fichier ordinaire caché et celui d’un fichier ordinaire non caché. -
On peut aussi donner en argument le dossier à lister. Exécute
ls /
ouls -l /
et indique le nombre de répertoires immédiatement présents à la racine de l’arborescence (ignore le linuxrc qui est un lien symbolique comme l’indique le l en début de ligne...) Vérifie avecpwd
que tu es toujours dans le même dossier.
-
-
cd
(pour « Change Directory ») permet de se déplacer dans les répertoires. On lui donne en argument (écrit après un espace) l’adresse relative ou absolue où l’on veut se rendre.cd Documents
oucd Documents/
permet ainsi de se placer dans le sous-répertoire ainsi nommé (On peut commencer à écrire le nom du dossier puis utiliser l’autocomplétion en appuyant sur la touche de tabulation). Combien de fichiers ordinaires et combien de dossiers contient ce répertoire ?- Reviens dans le dossier parent avec
cd ..
puis remonte d’un niveau encore en exécutant à nouveau la même commande
Astuce
On peut utiliser la flèche «vers le haut» du clavier pour remonter dans l’historique des commandes . Tu aurais pu également saisir directement
cd ../..
dès le départ au lieu de deux foiscd ..
.- Note le nom des utilisateurs identifiés sur la Weblinux : ce sont ceux des sous-dossiers de
/home
. - Où que tu sois, tu peux revenir à la base de son espace personnel avec
cd
oucd ˜
. cd -
te permet de revenir au précédent dossier dans lequel tu étais.
-
À l’aide des commandes précédentes, représente l’arborescence (partielle) des fichiers en partant de la racine
/
. Tu peux l’écrire sous la forme suivante :BashLimite-toi à un niveau de profondeur, sauf pour/ |--- bin |--- dev |--- home | |--- alice | | |--- ...
/home/
où tu illustreras les sous-répertoires, et/home/alice
où tu montreras les fichiers ordinaires et quelques dossiers. -
Rends-toi dans le dossier
/home/bob/vide/
. Écris une commande unique qui permet alors de se rendre directement dans/home/alice/Documents/
.
2. Expansion de la ligne de commande, motifs⚓︎
Pour regrouper plusieurs noms de fichiers ou répertoires, on peut utiliser les motifs suivants dans ses commandes. Ils sont remplacés par les valeurs correspondantes avant l’exécution de la commande :
Motif
*
remplace n’importe quelle suite de caractère, éventuellement vide :ls *.txt
permet de lister tous les fichiers dont le nom se termine par.txt
?
remplace un unique caractère quelconque.[abc]
remplace n’importe quel caractère indiqué entre crochets.[0-9]
,[a-zA-Z]
, etc. permettent d’accepter tous les caractères d’un intervalle.- En insérant en première position
ˆ
ou!
, on peut écrire[ˆabc]
ou[!abc]
qui désignent tout caractère différent de tous ceux indiqués. On peut travailler aussi avec les intervalles.
A faire : Donne la commande à utiliser pour lister les documents du dossier
~/Compagnon/A22/
qui vérifient la condition proposée, puis note combien il y en a :
1. Fichiers dont le nom commence par un f
2. Fichiers dont le nom commence par un f et qui se terminent par .txt
3. Fichiers dont le nom commence par un fichier, suivi d’un chiffre quelconque, puis de .txt
4. Fichiers dont le nom commence par un fichier, suivi par n’importe quel caractère (un seul), puis de .txt
5. Fichiers dont le nom commence par fi, suivi d’un caractère autre quec
et quee
, puis se termine par n’importe quel(s) autre(s) caractère(s).
3. Créer, copier supprimer⚓︎
Retourne dans l'espace personnel d'alice cd ~
.
- Affiche à l’écran le contenu du fichier
/Compagnon/A13/Documents/detail-alice.txt
aveccat detail-alice.txt
. Le nom de la commande vient deconcat
: elle concatène le contenu des fichiers en argument, avant des les envoyer vers la sortie standard qui est par défaut l’affichage dans le shell. On l’utilise souvent pour un fichier unique. - Déplace ce fichier (command mv) à la base de ton espace personnel :
mv detail-alice.txt ˜
Le˜
final peut être remplacé par.
si tu es déjà situé au bon endroit (ici/home/alice
). - Crée un fichier (vide pour l’instant) dans le dossier personnel d'alice, qui a le même nom que toi (utilise ton vrai nom !) :
touch prenom_nom
- Détruis
fichier2.txt
avecrm fichier2.txt
(commande remove). - Crée un nouveau dossier local nommé exo avec la commande
mkdir exo
(make directory). Copie le fichierfichier1.txt
dans ce dossier avec la commandecp
(copy) qui fonctionne commemv
mais conserve le fichier d’origine. - Depuis la racine de ton dossier personnel, tente d’effacer le dossier exo avec
rm exo
. Et avecrmdir exo
(remove directory). Explique les messages d’erreurs. - Crée un dossier exo2, puis supprimmez le.
4. Gérer des droits⚓︎
L’un des intérêts des systèmes conforme au standard POSIX est d’avoir su dès le départ gérer rigoureusement les droits sur les fichiers et répertoires, d’où une bonne solidité de ces systèmes (massivement utilisés en particulier sur les serveurs).
-
Un utilisateur fait partie de groupe(s), dont un par défaut. En fait, le système d’exploitation l’identifie par un numéro (UID, identifiant d’utilisateur ou user ID) ainsi que ses groupes (par leur GID).
Utilise la commandeid
(pas incontournable, pour la suite), afin de déterminer les groupes auxquels appartientalice
en précisant lequel est le principal (indiqué juste après gid). Vérifie qu’on retrouve également ces informations dans les fichiers (à afficher aveccat
)/etc/passwd
et/etc/group
. -
Quand il crée un fichier ou un répertoire, ce dernier « appartient » à cet utilisateur, ainsi qu’à son groupe par défaut (des droits sont alors choisis, configurables avec la commande
umask
que nous expliquerons plus bas). Pour définir ces droits associés au fichier, on divise alors le monde en trois catégories :- L’utilisateur propriétaire, désigné par
u
- Les membres du groupe propriétaire
g
- Tous les autres utilisateurs
o
pour other
Et pour chacune de ces catégories, on attribue ou non chacun des droits suivants :
- Lecture (
r
pour read) qui autorise donc la copie, pour un fichier ordinaire. Pour un répertoire, il permet d’obtenir la liste de ses fichiers. - Écriture (
w
pour write) qui permet notamment la modification (pour un répertoire, l’ajout, la suppression, le renommage des fichiers qu’il contient). - Exécution (
x
pour execute), qui indique pour un fichier ordinaire qu’il peut être considéré comme une commande ; pour un répertoire, cela autorise à se positionner dedans, par exemple avec cd).
Avec
ls -l
on a déjà visualisé ces permissions : après le premier caractère de la ligne, trois blocs de trois caractères rwx dont certains peuvent être remplacés par-
indiquent (pour u, puis g, puis o) si l’on a accordé le droit (lettre présente) ou non (- présent). Il existe d’autres possibilités que nous laisserons de côté ici, concernant les droits.A Faire : Détaille les droits des dossiers de l’espace personnel d’alice, puis ceux des fichiers ordinaires.
- L’utilisateur propriétaire, désigné par
-
En fait, le propriétaire d’un fichier peut en modifier les droits avec
chmod
(change mode). Seul lui peut le faire, ainsi que le « super-utilisateur » (ou administrateur système)root
qui a les pleins pouvoirs sur la machine (ce qui est donc dangereux : on ne l’utilise que quand cela est strictement nécessaire).La syntaxe est
chmod
modifications fichier, où modifications est composé dans l'ordre - du public (une ou plusieurs lettres parmi u, g et o définis ci-dessus, voire a pour « tous », soit all) - d’un opérateur (= pour attribuer des droits et seulement ceux-là, + pour ajouter des droits à ceux déjà donnés et - pour en ôter à ceux qui existent) - du ou des droits désignés par l’une ou plusieurs des lettres parmi r, w et x.Exemples : -
chmod o-wx
mon_fichier ôte les droits en écriture et en exécution aux « autres utilisateurs ». -chmod a+x
mon_fichier donne les droits en écriture et en exécution à tous les utilisateurs, - On peut même donner plusieurs séries d’attributs, séparées par des virgules.chmod ug=rwx,o=r mon_fichier
donne tous les droits à l’utilisateur et au groupe, mais seulement le droit en lecture aux autres utilisateurs.A faire : Donne à ton tour la commande qui permet d’ôter les droits en écriture et en exécution au groupe et aux autres utilisateurs, pour
fichier1.txt
Vérifie le résultat après exécution avecls -l
(fichier1.txt
se trouve danshome\Alice\Compagnon\A22
). -
On peut utiliser comme précédemment
*
et les autres motifs. Il est également possible de changer les droits « récursivement » c’est-à-dire en remontant aussi loin que nécessaire dans les sous-dossiers, en ajoutant l’option-R
. > A faire : Donne tous les droits à l’utilisateur et ne garde que ceux en lecture pour les autres catégories, pour tous les sous-dossiers du répertoire personnel d’alice dont le nom commence par un S. Puis seulement le droit en lecture pour tout utilisateur, pour tous les fichiers et sous-dossiers à un niveau quelconque du dossier imdb. Vérifie le résulat avecls -l
. -
Il existe une autre manière de décrire les droits à appliquer : on indique un nombre en écriture octale (base 8), dont chacun des trois chiffres (il y en a parfois 4, on n’étudie pas ce cas ici), associés respectivement à
u
,g
eto
, est calculé ainsi : on additionne les droits à attribuer, en comptant 4 pour r, 2 pour w et 1 pour x. Par exemple,rwx
vaut 7,rx
vaut 5. On peut choisir directement des droits, mais pas en ajouter ou en ôter, avec cette notation.A faire : Indique quels droits sont attribués par
chmod 754 fichier1.txt
puis vérifie ta réponse avecls -l
. -
La commande
umask
(user mask) sans argument renvoie un «masque» qui indique les droits attribués par défaut à la création d’un fichier. En donnant comme argument une valeur octale, on peut choisir une nouvelle valeur pour ce masque.Pour déterminer la valeur, on soustrait chiffre par chiffre les droits calculés comme précédemment à
666
pour les fichiers ordinaires et à777
pour les répertoires. Par exemple, pour obtenir les droits par défaut644
, soitrw-r--r--
, sur les fichiers ordinaires, le masque vaut \(666-644 = 022\) : on exécuteumask 022
. Du coup, sur les nouveaux répertoires, on aura les droits \(777-022 = 755\), soitrwxr-xr-x
(droit en exécution en plus de ceux des fichiers, autrement dit celui de se positionner dedans avec cd). -
Les permissions dépendent des propriétaires (utilisateur et groupe) et on peut modifier ces derniers (là encore, seul
root
peut tout faire et un utilisateur peut changer le groupe d’un fichier qui lui appartient). Les commandes utilisées sontchown
(change owner) etchogrp
(change group) :chown bob fichier1.txt
donnerait la propriété de ce fichier à l’utilisateur bob, si on a suffisamment de droits pour exécuter cette commande. Il existe également des commandes pour ajouter un utilisateur à un groupe, que nous n’étudierons pas ici.A faire : Donne la commande qui donne le groupe developer à
fichier2.txt
, puis vérifie le résultat.
Compléments
Le plus important à retenir, surtout quand on connaît une commande mais pas ses options, ou si l’on découvre une commande inconnue dans un exemple, est de savoir accéder à l’information intégrée au shell :
- man la_commande
renvoie une aide complète (souvent plus longue qu’une page, on peut ajouter à la suite |less pour se déplacer dedans avec les flèches, puis quitter avec q, voir à la suite pourquoi). info la_commande
offre un service comparable.
- Plus simplement, la plupart des commandes ont une option -help
(en général, double tiret pour une option qui s’écrit sur plus d’un caractère) ou -h
qui décrit leur utilisation.
Avec ls -help
, trouve comment lister le contenu d’un répertoire en triant les éléments par ordre décroissant de taille.
- Si tu utilises un moteur de recherche, pense à inscrire l’un des mots shell
ou bash
en plus de celui de la commande ou de la fonctionnalité recherchée...