Architecture
Unix est un système d’exploitation organisées en couches quasi indépendantes les unes des autres.
Ces couches constituent l’interface entre l’utilisateur et le matériel.
En voici une vue simplifiée :
Le noyau (Kernel) gère principalement :
- la mémoire
- les disques
- les autres périphériques d’entrée/sorties
- les processus
Voici un apercu plus détaillé :
Langage de Commande
Le SHELL est la partie émergée de l’iceberg.
Son Interpréteur de Commandes permet d’intéragir (directement ou non) avec l’utilisteur.
Il en existe plusieurs versions, plus ou moins disponibles suivant les versions d’Unix :
- sh : Bourne shell, le shell historique
- csh : C-shell, à la syntaxe inspirée…du C
- ksh : Korn shell, une version mixte des 2 précédentes
- bash : Bourne-again shell, LE shell Linux
Exécution d’une commande Shell
Trois phases pour l’exécution d’une commande :
- Lecture d’une commande
- Analyse syntaxique
- Exécution si aucune erreur de syntaxe
Pour exécuter une commande son nom suffit généralement.
Cela veut dire dans ce cas que c’est une commande interne ou qu’elle est localisable dans le chemin d’exécution de l’utilisateur (PATH).
Dans le cas contraire, il faut :
- donner le chemin absolu de la commande
- ou se trouver dans le répertoire où se trouve la commande
La syntaxe générale d’une commande est la suivante :
$> nom_commande [options] [paramètres]
L’option est en général de la forme -lettre_simple ou –mot_complet
Le paramètre peut être un chiffre , une chaine, un nom de fichier , …
Certaines commandes acceptent plusieurs paramètres
‘#’ permet de faire des commentaires
Voici quelques exemples :
$> # commande interne
$> ls
$> # avec parametre
$> ls -l
$> # avec parametre et option
$> ls -l /usr
$> # avec chemin complet
$> /home/dd/le_shell_a_dd.sh
Buffer de commande
Les commandes entrées par l’utilisateur, sont en fait mémorisées dans un espace temporaire (le temps de la session) : le buffer de commandes.
Elles peuvent ainsi être rappelées facilement, puis réexécutées avec ou sans modifications.
La commande ‘history’ liste les commandes du buffer de commandes, en les numérotant à partir di début de la session.
Bien que peu conviviale, elle présente l’intérêt d’être disponible dans la plupart des Shells.
$> # on va lister les dernières commandes
$> history
1 whoami
2 pwd
3 ls
$>
On peut exécuter une commande particulière de la liste avec les opérateur ‘!’ et ;?’
!n : rappelle la commande de no n
!-n : rappelle la commande de no courant – n
!chaine : rappelle la dernière commande qui débute par ‘chaine’
!?chaine : rappelle la dernière commande qui contient ‘chaine’
remarque : les commandes de gestions du buffer …ne sont pas tockées dans le buffer
En bash, ce buffer se manipule aisément avec les flèches du clavier :
haut : remonte d’une commande
bas : descend d’une commande
droite : un caractère à droite
gauche : un caractère en arrière
home : 1er caractère de la commande
end : dernier caractère
On peut également suivant les Shell compléter automatiquement les commandes :
<Tab> complète, en bash
<Tab><Tab> propose des choix en cas d’ambiguité
<*> complète, en Ksh
Touches et caractères spéciaux du Shell
Quelques combinaisons de touches utiles :
CTRL-C : interruption du programme en cours
CTRL-D : déconnexion (logout) ou fin de fichier (EOF)
CTRL-L : effacement d’écran (raccourci pour clear)
CTRL-Z : mise en pause du processus courant (voir contrôle des Jobs pour plus d’infos)
Quelques caractères spéciaux (et donc à utiliser à bon escient !) en Shell :
; : séparateur de commande
<espace> <tab> <enter> : séparateur de mots
<, >, |, & : redirections
$ : substitution de variable
` <anti cote> : substitution de commande
\<antislash>, ” <guillemets> ‘ <simple cote> : masque / échappe ou encadre un caractère ou une chaine
& <et commercial> : passe la commande en arrière plan
exemples
$> # 2 instructions sur la même ligne
$> cd /; ls
$> # un bloc d’instructions…se termine par un ‘;’
$> { cd /; ls -R; }
Environnement graphique
Alternativement à cette interface de commande textuelle, il en existe de graphiques, basées sur le système X-Window.
Elles permettent d’utiliser carte graphique et souris, et en plus d’un gestionnaire de fenêtres, offrent un ‘bureau’ comparable à celui de Windows.
Sous linux on dénombre essentiellement 2 “bureaux” (desktops) :
- GNOME, pour Gnu Network Object Model Environment (basé sur les librairies GTK+)
- KDE, (basé sur les librairies Qt)
Ubuntu est par exemple livré avec GNOME par défaut.


