cours chapitre 14

PREMIERE NSI

1) la ligne de commande

À la "préhistoire" des systèmes d'exploitation, ces derniers étaient dépourvus d'interface graphique (système de fenêtres "pilotables" à la souris), toutes les interactions "système d'exploitation - utilisateur" se faisaient par l'intermédiaire de "lignes de commandes" (suites de caractères, souvent ésotériques, saisies par l'utilisateur). Aujourd'hui, même si les interfaces graphiques modernes permettent d'effectuer la plupart des opérations, il est important de connaitre quelques-unes de ces lignes de commandes.

Pour saisir des lignes de commandes, nous allons utiliser une console (aussi appelé terminal même si ce n'est pas exactement la même chose).

Nous avons ci-dessus la console de l'utilisateur "david" qui utilise un ordinateur qui se nomme "PC-Bureau" ("david@PC-Bureau").

2) arborescence du système de fichier

a) introduction

Principalement nous allons, grâce à la ligne de commande, travailler sur les fichiers et les répertoires. Dans les systèmes de type "UNIX" (par exemple GNU/Linux ou macOS), nous avons un système de fichier en arborescence :

Dans le schéma ci-dessus on trouve des répertoires (noms entourés d'un rectangle, exemple : "home") et des fichiers (uniquement des noms "grub.cfg"). À noter : les extensions des noms de fichiers, par exemple le "cfg" de "grub.cfg", ne sont pas obligatoires dans les systèmes de type "UNIX", par exemple, "bash" est bien un nom de fichier et il n'a pas d'extension.

On parle d'arborescence, car ce système de fichier ressemble à un arbre à l'envers.

Comme vous pouvez le constater, la base de l'arbre s'appelle la racine de l'arborescence et se représente par un "/"

b) chemin absolu ou chemin relatif ?

Pour indiquer la position d'un fichier (ou d'un répertoire) dans l'arborescence, il existe 2 méthodes : indiquer un chemin absolu ou indiquer un chemin relatif. Le chemin absolu doit indiquer "le chemin" depuis la racine. Par exemple le chemin absolu du fichier fiche.ods sera : /home/elsa/documents/fiche.ods

Remarquez que nous démarrons bien de la racine / (attention les symboles de séparation sont aussi des /)

Il est possible d'indiquer le chemin non pas depuis la racine, mais depuis un répertoire quelconque, nous parlerons alors de chemin relatif :

Le chemin relatif permettant d'accéder au fichier "photo_1.jpg" depuis le répertoire "max" est : "images/photo_vac/photo_1.jpg"

Remarquez l’absence du / au début du chemin (c'est cela qui nous permettra de distinguer un chemin relatif et un chemin absolu).

Imaginons maintenant que nous désirions indiquer le chemin relatif pour accéder au fichier "gdbd_3.jpg" depuis le répertoire "photos_vac".

Comment faire ?

Il faut "remonter" d'un "niveau" dans l'arborescence pour se retrouver dans le répertoire "images" et ainsi pouvoir repartir vers la bonne "branche". Pour ce faire il faut utiliser 2 points : ..

"../ski/gdbd_3.jpg"

Il est tout à fait possible de remonter de plusieurs "crans" : "../../" depuis le répertoire "photos_vac" permet de "remonter" dans le répertoire "max"

Comme déjà évoqué plus haut, les systèmes de type "UNIX" sont des systèmes "multi-utilisateurs" : chaque utilisateur possède son propre compte. Chaque utilisateur possède un répertoire à son nom, ces répertoires personnels se situent traditionnellement dans le répertoire "home". Dans l'arborescence ci-dessus, nous avons 2 utilisateurs : "max" et "elsa". Par défaut, quand un utilisateur ouvre une console, il se trouve dans son répertoire personnel. Dans l'image de la console ci-dessus, nous avons un david@PC-Bureau ~ $ (au passage, on appelle cela "l'invite de commande"), le "~" (caractère "tilde") signifie que l'on se trouve actuellement dans le répertoire personnel de l'utilisateur courant, autrement dit dans le répertoire de chemin absolu "/home/david" (puisque l'utilisateur courant est "david"). Le répertoire "où l'on se trouve actuellement" est appelé "répertoire courant". L'invite de commande vous indique à tout moment le répertoire courant : david@PC-Bureau ~/Documents $ vous indique que vous êtes dans le répertoire "Documents" qui se trouve dans le répertoire "david" qui se trouve dans le répertoire "home" (chemin absolu : "/home/david/Documents")

Attention : les systèmes de type "UNIX" sont "sensibles à la casse" (il faut différencier les caractères majuscules et les caractères minuscules) : le répertoire "Documents" et le répertoire "documents" sont 2 répertoires différents.

Il est important de savoir que si le double point ("../") permet de remonter d'un cran dans l'arborescence, le simple point "./" représente le répertoire courant. Si vous vous trouvez dans le répertoire "home" un "./document" représente le répertoire "document" qui se trouve dans le répertoire "home".

3) les commandes pour manipuler les fichiers et les répertoires

a) la commande cd

La commande cd permet de changer le répertoire courant (cd => change directory). Il suffit d'indiquer le chemin (relatif ou absolu) qui permet d'atteindre le nouveau répertoire.

Par exemple (en utilisant l'arborescence ci-dessous) :

b) la commande ls

La commande ls permet de lister le contenu du répertoire courant.

Dans l'exemple ci-dessus, depuis le répertoire personnel de l'utilisateur david, nous passons dans le répertoire nsi à l'aide d'un cd nsi, puis nous affichons le contenu de ce répertoire nsi à l'aide de la commande ls. Nous trouvons dans le répertoire nsi : 2 fichiers (fiche1.odt et photo.jpg) et un répertoire (test).

c) la commande pwd

La commande pwd permet de connaitre le répertoire courant (permet d'afficher le chemin d'accès vers le répertoire courant depuis la racine)

d) La commande mkdir

La commande mkdir permet de créer un répertoire dans le répertoire courant. La commande est de la forme mkdir nom_du_répertoire

Remarque : il est préférable de ne pas utiliser de caractères accentués dans les noms de répertoire (ou de fichier). Il en est de même pour les espaces (à remplacer par des caractères tirets bas "_")

e) La commande rm

La commande rm permet de supprimer un fichier ou un répertoire. La commande est de la forme rm nom_du_répertoire_ou_nom_du_fichier

La plupart des commandes UNIX peuvent être utilisées avec une ou des options. Par exemple, pour supprimer un répertoire non vide, il est nécessaire d'utiliser la commande rm avec l'option -r : rm -r nom_du_répertoire

En fait l'option -r permet de supprimer un répertoire et ses sous répertoire.

ATTENTION : cette commande est relativement "dangereuse", il faut donc la manipuler prudemment. Par exemple la commande rm * efface tous les fichiers du répertoire courant (le * signifie tous les fichiers et tous les répertoires). Pour effacer tous les fichiers et tous les répertoires présents dans le répertoire courant il faut donc utiliser rm -r *

f) La commande touch

La commande touch permet de créer un fichier vide. La commande est de la forme touch nom_du_fichier_à_créer

g) La commande cat

La commande cat permet d'afficher dans la console le contenu d'un fichier.

Soit un fichier toto.txt. Si à l'aide d'un éditeur de texte vous avez saisi coucou dans le fichier toto.txt, la commande cat toto.txt affichera coucou dans la console.

h) La commande cp

La commande cp permet de copier un fichier. La commande est de la forme cp /répertoire_source/nom_fichier_à_copier /répertoire_destination/nom_fichier

i) La commande mv

La commande mv (move) permet de déplacer un fichier dans un dossier. Par exemple un mv toto.txt titi déplacera le fichier toto.txt dans le répertoire titi (attention on parle bien de déplacement pas de copie).

j) La commande man

La commande man permet d'obtenir la documentation d'une autre commande. Par exemple, man ls vous donnera la documentation de la commande ls.

4) Gestion des utilisateurs et des groupes

Les systèmes de type "UNIX" sont des systèmes multi-utilisateurs, plusieurs utilisateurs peuvent donc partager un même ordinateur, chaque utilisateur possédant un environnement de travail qui lui est propre.

Chaque utilisateur possède certains droits lui permettant d'effectuer certaines opérations et pas d'autres. Le système d'exploitation permet de gérer ces droits très finement. Un utilisateur un peu particulier est autorisé à modifier tous les droits : ce "super utilisateur" est appelé "administrateur" ou "root". L'administrateur pourra donc attribuer ou retirer des droits aux autres utilisateurs. Au lieu de gérer les utilisateurs un par un, il est possible de créer des groupes d'utilisateurs. L'administrateur attribue des droits à un groupe au lieu d'attribuer des droits particuliers à chaque utilisateur.

Comme nous venons de le voir, chaque utilisateur possède des droits qui lui ont été octroyés par le "super utilisateur". Nous nous intéresserons ici uniquement aux droits liés aux fichiers, mais vous devez savoir qu'il existe d'autres droits liés aux autres éléments du système d'exploitation ((imprimante, installation de logiciels...).

Les fichiers et les répertoires possèdent 3 types de droits :

Il existe 3 types d'utilisateurs pour un fichier ou un répertoire :

Il est possible d'utiliser la commande ls avec l'option -l afin d'avoir des informations supplémentaires.

Prenons la première ligne :

-rw-r--r-- 1 david david 0 avril 13 19:58 fic.txt

Lisons cette ligne de gauche à droite :

Prenons la deuxième ligne :

drwxr-xr-x 2 david david 4096 avril 13 20:05 info

Lisons cette ligne de gauche à droite :

Il est important de ne pas perdre de vu que l'utilisateur root a la possibilité de modifier les droits de tous les utilisateurs.

Le propriétaire d'un fichier peut modifier les permissions d'un fichier ou d'un répertoire à l'aide de la commande chmod. Pour utiliser cette commande, il est nécessaire de connaitre certains symboles :

La commande chmod à cette forme :

chmod [u g o a] [+ - =] [r w x] nom_du_fichier

par exemple

chmod o+w toto.txt

attribuera la permission "écriture" pour le fichier "toto.txt" "aux autres utilisateurs"

Il est possible de combiner les symboles :

chmod g-wx toto.txt

La commande chmod ci-dessus permet de supprimer la permission "écriture" et la permission "exécution" pour le fichier toto.txt "au groupe lié au fichier"

Une fois de plus, "root" a tous les droits sur l'ensemble des fichiers et des répertoires, il peut donc utiliser la commande chmod sur tous les répertoires et tous les fichiers.