Architecture, Shell et commandes

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 :

kernel

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é :

kernel_details

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

klogo1gnome

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.

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Twitter picture

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Connexion à %s

Suivre

Get every new post delivered to your Inbox.