INTRODUCTION A LINUX

Introduction

Sous Unix ou Linux, tout est fichier, organisé suivant une unique arborescence dont la racine est / et dont l’administrateur est root. Linux possède son propre système de fichiers appelé ext3 ou ext4 mais peut en gérer beaucoup d’autres (Vfat, Ntfs,.....).

Comme pour l’utilisateur tout est fichier, il est nécessaire d’affecter aux systèmes externes (partitions sur disque, disquette, cd ....) un répertoire. Cette affectation sera réalisée à l’aide de la commande de montage : mount.

Arborescence du système Linux

La racine (/) est le sommet de la hiérarchie des répertoires. Sa structure est standard avec des extensions imposées par les distributions. Toute modification est de la compétence exclusive de l’administrateur à l’exception des répertoires personnels situés dans /home.

Liste des répertoires principaux et leur rôle :

/Le répertoire racine
/binLes fichiers exécutables
/bootLe noyau et les fichiers de démarrage
/devLes fichiers périphériques
/etcLes fichiers de configuration
/homeLa racine des répertoires personnels des utilisateurs
/mntLa racine des points de montage
/rootRépertoire personnel du super utilisateur
/sbinLes fichiers exécutables pour l’administration du système
/tmpStockage des fichiers temporaires
/usrProgrammes accessibles à tout utilisateur

Le shell

Sous le nom de shell (coquille), on désigne l'interface utilisateur qui, dans l'architecture d'UNIX, entoure le noyau ou kernel. Plus simplement, le shell est un programme système (interpréteur de commande) qui permet à l'utilisateur de dialoguer avec le cœur du système (le noyau) à l'aide de commandes.

Il permet de réaliser plusieurs tâches :

Les commandes

Syntaxe d'une commande

Le shell interprète la série de caractères tapés à chaque fois qu'un retour chariot (entrée) est reçu; en même temps, les caractères tapés sont affichés à l'écran.

Les premiers caractères tapés jusqu'au premier séparateur (espace ou tabulation) sont interprétés par le shell comme le nom de la commande à exécuter, les chaînes de caractères suivantes étant considérées comme les arguments.

La syntaxe d'une commande UNIX est donc :

commande [argument(s)]

avec :

Les entrées-sorties

Une commande lit normalement ses données d'entrée dans l’entrée standard et écrit sa sortie dans la sortie standard qui, par défaut, correspondent respectivement au clavier et à l'écran du terminal.

Les processus accèdent à ces périphériques comme s'ils accédaient à des fichiers normaux, par le biais de handle (descripteurs de fichiers). Voici donc un récapitulatif des périphériques, de leur association par défaut, ainsi que des descripteurs de fichiers.

PériphériqueAssociation par défautDescripteur de fichier
Standard input bufferClavier0
Standard outputEcran1
Standard output errorEcran2

Ils peuvent être matérialisés de la sorte :

Les Pipes (tubes)

Le tube (ou pipe en anglais) est un mécanisme permettant la communication entre plusieurs commandes. Dans un pipe, la sortie de la première commande devient l'entrée de la seconde; le shell prend à sa charge la connexion de la sortie standard de la première commande sur l’entrée standard de la deuxième. Le signe représentant le tube est |.

Il peut être matérialisé de la sorte :

Redirection des entrées-sorties

Le mécanisme de redirection des entrées-sorties, géré par le shell, permet de changer l'association par défaut de l’entrée standard et des standards outputs; dans ce cas, on utilise des fichiers normaux en entrée ou en sortie.

Ces redirections sont effectuées grâce aux signes suivants :

< nom_ficprend comme entrée le fichier nom_fic
<< motprend comme entrée toutes les lignes tapées au clavier jusqu'à celle qui contient mot
> fichierenvoie la sortie dans fichier (si fichier existe, il est écrasé)
>> fichier rajoute la sortie à la fin du fichier ; on dit aussi concaténation de la sortie et de fichier (si fichier n'existe pas, il est créé)

Par exemple, pour créer le fichier test contenant /home :

echo /home > test

Pour mettre le contenu du fichier test à l'entrée de la commande ls :

ls $(< test)

Pour que le contenu du fichier test soit pris en compte par ls, il faut le passer comme un *argument* de la ligne de commande. Le fait d'ajouter le $() va exécuter la commande et la remplacer par ce qu'elle va afficher.

Les groupes de commandes

Il existe plusieurs méthodes pour enchaîner des commandes sur une même ligne :

Les variables d'environnement

Les variables sont des valeurs associées à des noms explicites; elles constituent l'environnement d'exécution des commandes. On retrouve dans l'environnement standard du shell un certain nombre de variables dont il se sert à l'exécution.

Les plus utilisées sont :

HOMEvariable initialisée au login et contenant le répertoire de connexion de l'utilisateur
PATHvariable contenant la liste des répertoires où effectuer une recherche de programmes entrés au clavier
PS1généralement initialisée à '$', elle contient l'invite (équivalent à la variable PROMPT de DOS)
CDPATHprécise les chemins de recherche de répertoire pour la commande cd (Change Directory)

Bien sûr, l'utilisateur peut définir ses propres variables, en respectant la syntaxe suivante :

$ nom_variable=valeur
/* Sans espace avant ni après le signe égal */

Pour récupérer le contenu d'une variable, l'utilisateur utilise le caractère $ suivi du nom de sa variable.

Exemple :

$ echo $LOGNAME
root
/* Les noms de variables distinguent aussi les minuscules des MAJUSCULES */