Système d'exploitation

Embed Size (px)

DESCRIPTION

Système d'exploitation

Citation preview

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation I

    Pr. Hicham Laanaya [email protected]

    20142015

    Facult des Sciences Rabat Dpartement d'Informatique

    Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Plan du cours

    1 Introduction gnrale sur les systmes d'exploitation

    Rappels sur le matriel

    Notions de systmes d'exploitation

    Les principaux systmes d'exploitation

    2 Systme Unix

    Introduction au systme Unix

    Commandes de base du Shell

    Systme de gestion de chiers

    3 Programmation Shell

    Introduction bash

    Les scripts Shell

    4 Filtre programmable awk

    Introduction

    Expressions rgulires et commande egrep

    Filtre programmable awk

    2/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IIntroduction gnrale sur les systmes d'exploitation

    Rappels sur le matriel

    1 Introduction gnrale sur les systmes d'exploitation

    Rappels sur le matriel

    Notions de systmes d'exploitation

    Les principaux systmes d'exploitation

    2 Systme Unix

    Introduction au systme Unix

    Commandes de base du Shell

    Systme de gestion de chiers

    3 Programmation Shell

    Introduction bash

    Les scripts Shell

    4 Filtre programmable awk

    Introduction

    Expressions rgulires et commande egrep

    Filtre programmable awk

    3/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IIntroduction gnrale sur les systmes d'exploitation

    Rappels sur le matriel

    Architecture simplie d'un ordinateur

    Une unit pour effectuer les traitements, galement appele unit centrale ou processeur,

    Une unit pour contenir les programmes excuter qui est le lieu de travail dans un ordinateur appele

    mmoire centrale,

    Des priphriques de stockage permanent pour y enregistrer les travaux effectus en mmoire centrale tel

    que le disque dur,

    Des dispositifs pour entrer et rcuprer des donnes appels priphriques d'entre- sortie : un cran, une

    souris, un clavier, un lecteur de disquettes et un lecteur de CD- ROM ou DVD-ROM

    UC

    MC

    Carte mre

    Disque dur

    Priphrique de stockage

    Priphrique d'entre/sortie

    Bus

    Figure: Architecture simplifie d'un ordinateur

    4/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IIntroduction gnrale sur les systmes d'exploitation

    Rappels sur le matriel

    La carte mre

    La carte mre est une plaque de rsine contenant l'intrieur et sur les deux faces une fine couche de cuivre sur

    laquelle est imprim le circuit imprim, On y trouve les lments suivants :

    Le microprocesseur

    La mmoire vive RAM (Random Access Memory) : La mmoire vive RAM (Random Access Memory). Elle

    reprsente le lieu de travail dans un ordinateur savoir quun programme stock sur le disque dur est charg

    en mmoire centrale o ses instructions seront accdes une une pour tre excutes par le processeur. La

    RAM est une mmoire volatile c'est--dire que son contenu serait perdu en cas de coupure dlectricit

    La mmoire morte ROM (Read Only memory) : Elle contient les programmes du BIOS qui grent le

    chargement du systme et les entres-sorties. On distingue plusieurs puces ROM tel que la PROM

    (Programmable ROM) et EPROM (Erasable Programmable ROM)

    L'horloge qui permet de cadencer le fonctionnement du processeur, du bus. Sa frquence caractrise la carte

    mre. Elle est gnralement trs infrieure celle du processeur (de l'ordre de quelques centaines de MHz).

    Un ensemble de bus : un bus est un ensemble de fils de cuivre incrusts dans la carte mre qui permettent de

    vhiculer l'information. Le bus se caractrise par le nombre de fils qui le composent. Si le nombre de fils est

    de 64, on parle alors de bus 64 bits. Il est galement caractris par sa frquence de fonctionnement.

    Le "chipset" ou "jeu de composants" soud sur la carte mre. Le chipset rgit tous les changes au sein du

    PC en aiguillant les donnes sur les diffrents bus de la carte mre.

    5/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IIntroduction gnrale sur les systmes d'exploitation

    Rappels sur le matriel

    L'unit centrale ou microprocesseur

    L'unit centrale est un circuit intgr qui ralise les traitements et les dcisions, elle se compose :

    d'une unit de commande et de contrle UCC : elle recherche les instructions, les dcode et en supervise

    leur excution par l'UAL.

    d'une unit arithmtique et logique UAL : elle ralise les traitements qu'ils soient arithmtiques ou logiques.

    de registres : ils sont des zones mmoires internes au processeur destines accueillir les donnes, les

    instructions et les rsultats.

    d'une horloge qui rythme le processeur : chaque top d'horloge le processeur effectue une instruction, ainsi

    plus l'horloge a une frquence leve, plus le processeur effectue d'instructions par seconde (MIPS: Millions

    d'instruction par seconde). Par exemple un ordinateur ayant une frquence de 1 GHz (1000 MHz) effectue

    1000 millions d'instructions par seconde.

    d'un bus interne qui relie ces units aux registres.

    De nos jours d'autres composants sont intgrs au processeur tels que :

    Une unit flottante pour le calcul des oprations sur les nombres rels.

    La mmoire cache : c'est une mmoire de petite taille, accs plus rapide que la mmoire principale. Elle

    permet au processeur de se "rappeler" les oprations dj effectues auparavant. La taille de la mmoire

    cache est gnralement de l'ordre de quelques centaines de KO. Ce type de mmoire rsidait sur la carte

    mre, sur les ordinateurs rcents ce type de mmoire est directement intgr dans le processeur.

    Les units de gestion mmoire servent convertir des adresses logiques en des adresses relles situes en

    mmoire.

    6/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IIntroduction gnrale sur les systmes d'exploitation

    Notions de systmes d'exploitation

    1 Introduction gnrale sur les systmes d'exploitation

    Rappels sur le matriel

    Notions de systmes d'exploitation

    Les principaux systmes d'exploitation

    2 Systme Unix

    Introduction au systme Unix

    Commandes de base du Shell

    Systme de gestion de chiers

    3 Programmation Shell

    Introduction bash

    Les scripts Shell

    4 Filtre programmable awk

    Introduction

    Expressions rgulires et commande egrep

    Filtre programmable awk

    7/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IIntroduction gnrale sur les systmes d'exploitation

    Notions de systmes d'exploitation

    Notions de systmes d'exploitation

    Le systme d'exploitation est un gestionnaire de ressources :

    il contrle l'accs toutes les ressources de la machine,

    l'attribution de ces ressources aux diffrents utilisateurs,

    la libration de ces ressources lorsqu'elles ne sont plus utilises,

    tous les priphriques comme la mmoire, le disque dur ou les imprimantes sont des ressources, le

    processeur galement est une ressource.

    8/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IIntroduction gnrale sur les systmes d'exploitation

    Les principaux systmes d'exploitation

    1 Introduction gnrale sur les systmes d'exploitation

    Rappels sur le matriel

    Notions de systmes d'exploitation

    Les principaux systmes d'exploitation

    2 Systme Unix

    Introduction au systme Unix

    Commandes de base du Shell

    Systme de gestion de chiers

    3 Programmation Shell

    Introduction bash

    Les scripts Shell

    4 Filtre programmable awk

    Introduction

    Expressions rgulires et commande egrep

    Filtre programmable awk

    9/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IIntroduction gnrale sur les systmes d'exploitation

    Les principaux systmes d'exploitation

    Les principaux systmes d'exploitation

    MS-DOS est le plus connu des premiers systmes d'exploitation pour PC

    Il est mono-utilisateur et mono-tche. On a du greffer des couches logicielles pour rpondre aux

    volutions matrielles et aux demandes des utilisateurs

    MS-DOS a t rapidement supplant par les systmes Windows

    Mac OS : C'est le systme d'exploitation dApple

    Il a t livr pour le Macintosh en 1984

    La version actuelle est la X (prononcer dix). Mac OS X se distingue par un noyau Darwin qui est un

    open source

    Mac OS est un des principaux rivaux des Windows

    Unix tant distribu gratuitement, il a donn naissance de nombreuses versions :

    Les versions les plus connues Unix SYSTEM V (volution de la version initiale d'AT&T et Bell) et

    Unix BSD

    Les principaux Unix du march sur Intel sont : Open Server et Unixware de SCO (Santa Cruz

    Operation), Solaris (Sun Microsystems), BSD (Berkeley),

    Trois Unix dominent le monde des serveurs : HP/UX, Sun Solaris, IBM AIX

    Linux a pris des parts de march aux Unix, Novell Netware et Windows NT-2000 serveur

    Il s'est impos ds la fin du 20me sicle. Linux est multi-utilisateurs, multi-tches, stable et gratuit

    Principales distributions de Linux : RedHat, Debian, Caldera, Ubuntu,

    10/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IIntroduction gnrale sur les systmes d'exploitation

    Les principaux systmes d'exploitation

    Les principaux systmes d'exploitation (suite)

    La famille des Windows :

    Microsoft propose en 1992 Windows 3.10 et Windows pour Workgroups 3.11 dont les mots cls

    sont Multifentres et Multitches coopratif. En 1993, on voit apparatre la premire version de

    Windows NT 3.1 suivie en 1994 par NT 3.5

    L'anne 1995, verra la sortie du fort clbre Windows 95

    En 1996, Windows NT 4 avec deux versions station de travail et Serveur. Ensuite,

    Windows Terminal Server : un systme qui simule un environnement multi-utilisateurs et prend en

    charge la connexion de plusieurs terminaux

    En 1998 Windows 98

    En 2000, Microsoft commercialise Windows 2000 professionnel et serveur, Windows Millenium,

    suivi de Windows XP familial et serveur

    Windows 2003 (initialement baptis .NET) sort en 2003

    VISTA, Windows Seven, Windows 8

    11/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Introduction au systme Unix

    1 Introduction gnrale sur les systmes d'exploitation

    Rappels sur le matriel

    Notions de systmes d'exploitation

    Les principaux systmes d'exploitation

    2 Systme Unix

    Introduction au systme Unix

    Commandes de base du Shell

    Systme de gestion de chiers

    3 Programmation Shell

    Introduction bash

    Les scripts Shell

    4 Filtre programmable awk

    Introduction

    Expressions rgulires et commande egrep

    Filtre programmable awk

    12/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Introduction au systme Unix

    Systme Unix

    Unix est un systme d'exploitation (Operating System)

    Multi-utilisateurs : le systme identifie des personnes logiques et permet ces personnes d'utiliser le

    systme dans certaines limites

    Multi-tches : le systme est tudi pour excuter plusieurs programmes en mme temps, grce au concept

    de "temps partag"

    Multi-plateforme : Unix n'est pas un systme ddi un processeur, mais que c'est une famille de systmes

    que l'on retrouve sur une multitude de plates-formes.

    Distributions Unix

    Des Unix propritaires :

    Nom Propritaire Processeur

    Solaris Sun Sparc & Intel

    HPUX HP PA

    AIX IBM Risc & PowerPC

    Digital Unix Digital Alpha

    Des Unix libres

    Linux sur plate-forme Intel, Sparc, Alpha, Mac,

    FreeBSD sur plate-forme Intel, Alpha, PC-98

    OpenBSD galement multi-plate-forme

    13/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Introduction au systme Unix

    Architecture et caractristiques

    On peut dcomposer un systme Unix en trois grandes entits :

    Le noyau : il assure la gestion de la mmoire et des entres sorties de bas niveau et l'enchanement des tches

    Un ensemble d'utilitaires : ddis des tches diverses :

    des interprteurs de commande appels Shells permettant de soumettre des tches au systme, tches

    pouvant tre concurrentes et/ou communicantes

    des commandes de manipulation de fichiers (copie, dplacement, effacement, etc.)

    Une base de donnes systme : un ensemble de fichiers contenant :

    des informations sur la configuration des diffrents services

    des scripts de changement d'tat du systme (dmarrage, arrt, )

    Applications

    NoyauCPU

    RAM

    Drivers

    Prphiriques

    Vido Clavier Souris Disques ...

    14/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Introduction au systme Unix

    Logiciels propritaires

    Ces logiciels sont vendus et sont rgis par une licence restrictive qui interdit aux utilisateurs de copier,

    distribuer, modifier ou vendre le programme en question

    Logiciels libres

    Les logiciels libres sont les logiciels que l'ont peut librement utiliser, changer, tudier et redistribuer. Cela

    implique que l'on ait accs leur code source (d'o le terme quivalent OpenSource)

    i la libert d'excution : tout le monde a le droit de lancer le programme, quel qu'en soit le but

    ii la libert de modification : tout le monde a le droit d'tudier le programme et de le modifier, ce

    qui implique un accs au code source

    iii la libert de redistribution : tout le monde a le droit de rediffuser le programme, gratuitement

    ou non

    iv la libert d'amlioration : tout le monde a le droit de redistribuer une version modifie du

    programme

    15/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Commandes de base du Shell

    1 Introduction gnrale sur les systmes d'exploitation

    Rappels sur le matriel

    Notions de systmes d'exploitation

    Les principaux systmes d'exploitation

    2 Systme Unix

    Introduction au systme Unix

    Commandes de base du Shell

    Systme de gestion de chiers

    3 Programmation Shell

    Introduction bash

    Les scripts Shell

    4 Filtre programmable awk

    Introduction

    Expressions rgulires et commande egrep

    Filtre programmable awk

    16/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Commandes de base du Shell

    Commandes de base du Shell

    Un Shell

    est un interprteur de commande en mode texte

    peut s'utiliser en mode interactif ou pour excuter des programmes crits dans le langage de programmation

    du Shell (appels scripts Shell)

    En mode interactif, le Shell

    affiche une invite en dbut de ligne (prompt)

    La commande est interprte et excute aprs la frappe de la touche "Entre"

    Invite affich par l'interprteur de commande

    Terminal sous Mac OS X

    17/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Commandes de base du Shell

    Format des commandes

    Le format des commandes suit une convention bien tablie

    commande [-options] [paramtres]

    Les options et les paramtres sont parfois facultatifs.

    Exemple : cp -i /home/profs/prof1/Hello.c /home/etudiants/etudiant1

    cp : commande qui va lancer la fonction de copie

    l'option -i : permet de contrler certains aspects du comportement de la commande

    /home/profs/prof1/Hello.c : Il s'agit de la source ou le fichier que vous souhaitez copier

    /home/etudiants/etudiant1 : Il s'agit de la destination ou l'emplacement de la copie

    Mta-caractres du Shell

    sont interprts spcialement par le Shell avant de lancer la commande entre par l'utilisateur

    permettent de spcifier des ensembles de fichiers, sans avoir rentrer tous leurs noms

    Voici les plus utiliss :

    * : remplac par n'importe quelle suite de caractres

    ? : remplac par un seul caractre quelconque

    [ ] : remplac par l'un des caractres mentionns entre les crochets. On peut spcifier un intervalle avec

    - : [a-z] spcifie donc l'ensemble des lettres minuscules

    18/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    1 Introduction gnrale sur les systmes d'exploitation

    Rappels sur le matriel

    Notions de systmes d'exploitation

    Les principaux systmes d'exploitation

    2 Systme Unix

    Introduction au systme Unix

    Commandes de base du Shell

    Systme de gestion de chiers

    3 Programmation Shell

    Introduction bash

    Les scripts Shell

    4 Filtre programmable awk

    Introduction

    Expressions rgulires et commande egrep

    Filtre programmable awk

    19/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    Concept de base

    Le systme de fichiers d'Unix est une vaste arborescence dont les nuds sont des rpertoires et les feuilles

    des fichiers

    Un fichier peut :

    i contenir des donnes

    ii tre un lien sur un autre fichier

    iii tre un moyen d'accs un priphrique (mmoire, cran, disque dur, ...)

    iv tre un canal de communication entre processus

    Hirarchie du systme de chiers

    /

    bin boot etc home usr

    bash vmlinuz bash passwd etudiant1 etudiant2 include

    java

    Go.java

    .bashrc sys stdio.h

    types.h

    rpertoire

    fichier

    20/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    Les diffrents types de chiers

    Les fichiers ordinaires (rguliers) sont une suite d'octets sans structure

    Les rpertoires contiennent des informations sur les fichiers et les sous-rpertoires

    Les liens symboliques sont une catgorie particulire de fichiers (qui contiennent l'emplacement du fichier

    prendre en compte)

    Les priphriques sont vus comme des fichiers spciaux du rpertoire /dev

    Les tubes nomms sont des fichiers sur disque grs comme un tube (pipe) entre deux processus changeant

    des donnes

    Les i-nuds

    chaque fichier correspond un i-noud contenant :

    le type du fichier et les droits d'accs des diffrents utilisateurs

    l'identification du propritaire du fichier

    la taille du fichier exprime en nombre de caractres (pas de sens pour les fichiers spciaux)

    le nombre de liens physiques sur le fichier

    la date de dernire modification/consultation (criture/lecture) du fichier

    la date de dernire modification du nud (modification d'attributs)

    l'identification de la ressource associe (pour les fichiers spciaux)

    21/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    Le nom des chiers

    Le nom d'un fichier doit permettre de l'identifier dans un ensemble de fichiers

    Le nom est compos de caractres

    Le nom est souvent compos de deux parties :

    i la base ; et

    ii l'extension qui se trouve aprs le caractre '.'

    L'extension d'un nom de fichier dsigne la nature de son contenu (texte, image, son, )

    Caractres acceptables pour les noms de chiers

    Caractres Signification

    AZ Lettres majuscules

    az Lettres minuscules

    09 Chiffres

    _ , Caractre soulign et caractre virgule

    . Caractre point

    UNIX est un systme qui distingue les caractres majuscules et minuscules

    Ne pas utiliser le caractre espace comme nom de fichier ou rpertoire !!

    22/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    Les chemins d'accs

    Pour identifier un fichier dans l'arborescence on indique le nom complet du fichier

    Le nom complet du fichier est reprsent par :

    Le chemin compos de rpertoires qui conduit de la racine de l'arborescence du systme de fichiers

    jusqu'au rpertoire qui contient le fichier

    Chaque rpertoire est distingu des autres par un symbole sparateur "/"

    le nom du fichier

    /home/etudiant1/data/Fichier.txt

    Sparateur

    Chemin Nom

    23/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    Les chemins d'accs (suite)

    On distingue deux expressions d'un chemin :

    Le chemin d'accs absolu (chemin absolu)

    Le chemin d'accs relatif (chemin relatif)

    Le chemin absolu commence par le symbole sparateur, il exprime le chemin complet partir de la racine

    de l'arborescence

    Le chemin relatif commence par un autre caractre que le caractre sparateur. Il indique un chemin partir

    du rpertoire de travail courant

    Exemple : Le rpertoire courant est : /var/log

    Le chemin absolu pour dsigner le fichier fichier.txt : est /home/etd/etudiant1/fichier.txt

    Le chemin relatif est : ../../home/etd/etudiant1/fichier.txt

    ".." dsigne le rpertoire parent, "." dsigne le rpertoire courant

    /

    usr etc home lib var

    bash vmlinuz prof etd log

    acces.datprof1 etudiant1

    fichier.txt Hello.c

    24/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    Les chemins d'accs : Exercice

    Dans la hirarchie prcdente, exprimez les chemins suivants :

    1 absolu pour prof1

    2 absolu pour etc

    3 absolu pour prof

    4 relatif log pour acces.dat

    5 relatif prof pour acces.dat

    6 relatif etudiant1 pour acces.dat

    /

    usr etc home lib var

    bash vmlinuz prof etd log

    acces.datprof1 etudiant1

    fichier.txt Hello.c

    25/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    Les chemins d'accs : Correction

    Dans la hirarchie prcdente, exprimez les chemins suivants :

    1 absolu pour prof1 : /home/prof/prof1

    2 absolu pour etc : /etc

    3 absolu pour prof : /home/prof

    4 relatif log pour acces.dat : acces.dat

    5 relatif prof pour acces.dat : ../../var/log/acces.dat

    6 relatif etudiant1 pour acces.dat : ../../../var/log/acces.dat

    /

    usr etc home lib var

    bash vmlinuz prof etd log

    acces.datprof1 etudiant1

    fichier.txt Hello.c

    26/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    Quelques commandes d'accs aux chiers

    Commande Explications

    cat affiche le contenu du fichier

    stat affiche les caractristiques du fichier

    ls affiche les caractristiques d'une liste de fichiers

    (l'option -i affiche les numros d'i-nuds des fichiers)

    rm supprime un fichier

    touch modifie les caractristiques de date d'un fichier

    (permet galement de crer un fichier vide)

    Quelques commandes d'accs aux rpertoires

    Commande Explications

    ls affiche la liste des fichiers contenus dans un rpertoire

    Options :

    -a liste aussi les fichiers cachs

    -l donne des informations dtailles sur chaque fichier

    -i donne le numro de l'i-nud du fichier

    mkdir cre un rpertoire

    cd change le rpertoire de travail (rpertoire courant)

    pwd donne le chemin absolu du rpertoire courant

    rmdir supprime un rpertoire vide

    27/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    Quelques commandes de manipulation du systme de chiers

    Commande Explications

    cp copie de fichier

    syntaxe cp

    duplication du contenu du fichier

    et cration d'une entre dans un rpertoire

    mv dplace/renomme un fichier

    syntaxe mv

    suppression d'une entre dans un rpertoire

    et cration d'une nouvelle entre dans un rpertoire

    Si on copie (dplace/renomme) un fichier dans un fichier qui existe dj, ce second fichier est modifi (contenu

    cras et caractristiques modifies)

    28/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    Notion de liens physiques

    Un mme fichier peut avoir donc plusieurs noms

    Il y a plusieurs liens physiques sur le fichier

    Notion de liens symboliques

    Un lien symbolique est un fichier (de type lien) qui contient le chemin et le nom d'un autre fichier

    Les accs un lien sont donc des redirections vers un autre fichier : les commandes qui manipulent des liens

    manipulent en fait le fichier dont le nom est stock dans le lien

    Un lien se comporte comme un raccourci (alias) vers un autre fichier

    Le contenu d'un lien est :

    soit un chemin absolu

    soit un chemin relatif (qui doit tre valide depuis le rpertoire dans lequel se trouve le lien !)

    29/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    Notion de Liens : Rsum

    Les liens physiques sont plusieurs entres de rpertoires du mme i-nud (ce sont donc des fichiers

    rguliers)

    Les liens symboliques ont chacun leur propre i-nud ; leur contenu dsigne un mme fichier rgulier (ils

    sont du type liens)

    La commande ln permet de crer des liens : ln [options]

    sans option : cration de liens physiques

    avec l'option -s : cration de liens symboliques

    30/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    Notions d'utilisateur et de groupe

    Pour pouvoir accder au systme de fichier, l'utilisateur doit tre connect

    Pour ce connecter, l'utilisateur doit saisir son login et le mot de passe associ

    A chaque login le systme fait correspondre un numro d'identification uid (User IDentifier)

    Chaque utilisateur appartient au moins un groupe d'utilisateurs

    A chaque groupe d'utilisateur le systme fait correspondre un numro d'identification gid (Group IDentifier)

    Ces informations sont stockes dans des fichiers d'administration

    /etc/passwd contient les informations relatives aux utilisateurs (login, mot de passe crypt, uid,

    gid, nom complet, rpertoire de travail au login, commande excute au login) ; et

    /etc/group contient les informations relatives aux groupes (nom, mot de passe, gid, liste des

    membres du groupe)

    Un utilisateur peut appartenir plusieurs groupes.

    Le super-utilisateur (root)

    Il est toujours considr par le systme comme propritaire de tous les fichiers (et des processus)

    La personne qui gre le systme est normalement la seule connatre son mot de passe

    Lui seul peut ajouter de nouveaux utilisateurs au systme.

    31/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    Notions de scurit

    Concept de base

    sujet Utilisateur ou Processus qui veut excuter une opration ;

    objet Fichier sur lequel on veut excuter une opration ; et enfin

    opration Action que l'on veut excuter.

    Des rgles de scurit ont pour rle d'indiquer les oprations (droits) qui seront autorises pour un sujet

    sur un objet

    Le systme a pour rle de vrifier que le sujet a le droit d'excuter l'opration sur l'objet.

    32/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    Scurit sous Unix

    Le systme Unix associe des droits chaque fichier (rgles). Ces droits sont fonctions du sujet

    Un fichier appartient un utilisateur et un groupe

    Unix distingue le sujet comme tant :

    1 le propritaire de l'objet (fichier)

    2 membre du groupe propritaire de l'objet (fichier)

    3 les autres

    Les oprations pour les fichiers rguliers :

    r : droit de lecture

    w : droit de modification et de suppression

    x : droit d'excution

    Les oprations pour les rpertoires :

    r : droit de lister le contenu du rpertoire

    w : droit de modification et de suppression du contenu du rpertoire

    x : droit d'accs comme rpertoire de travail sur le rpertoire

    33/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    Scurit sous Unix (suite)

    Pour chaque fichier, la rgle va indiquer les oprations acceptes en fonction de la catgorie de sujet

    (propritaire, groupe, autre)

    La commande ls permet de visualiser les droits. Elle prsente pour chaque catgorie de gauche droite les

    droits :

    i pour l'utilisateur propritaire du fichierii pour l'utilisateur membre du groupe propritaire du fichieriii pour les autres utilisateurs ;

    Chaque droit est dsign par une lettre :

    r : signifie que le droit en lecture est accord

    w : droit en criture

    x : droit d'excution

    - : le droit correspondant n'est pas accord

    Propritaire Groupe

    droits propritaire

    droits groupe droits pour les autres

    34/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    Commandes pour modier les rgles

    Des commandes permettent de modifier les rgles de droits sur les fichiers :

    chown : permet de changer le propritaire (utilisateur et groupe)

    chgrp : permet de changer le groupe propritaire

    chmod : permet de changer les droits

    umask : permet d'indiquer les droits la cration

    La commande chown

    La commande chown permet de changer le propritaire d'un fichier et/ou d'un rpertoire et rcursivement

    ce qu'il contient

    La syntaxe : chown [OPTION][OWNER][:[GROUP]] FILE

    La commande chgrp

    La commande chgrp permet de changer le groupe d'un fichier et/ou d'un rpertoire et rcursivement ce

    qu'il contient

    La syntaxe : chgrp [OPTION][GROUP]] FILE

    Conditions : tre le propritaire du fichier et tre membre du groupe auquel on veut donner le fichier

    35/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    La commande chmod

    La commande chmod permet de changer les droits sur les fichiers

    Syntaxe : chmod [options] mode fichier

    options : -R : modifier rcursivement les autorisations d'un rpertoire et son contenu

    Le mode permet de spcifier les droits :

    de manire symbolique (en utilisant les lettres r,w,x et les symboles +,-,=)

    de manire numrique (en octal base 8)

    Le mode est spcifi par : personne action droits

    Personne

    u : l'utilisateur propritaire

    g : le groupe propritaire

    o : les autres

    a : tous les utilisateurs

    Action

    + : ajouter

    - : supprimer

    = : initialiser

    Droit

    r : lecture

    w : criture

    x : excution

    Exemple :

    u+rwx : ajouter tous les droits au propritaire

    og-w : enlever le droit d'criture aux autres

    a=rx : donner le droit de lecture et excution tous (propritaire, groupe et autres)

    g=rwx : accorder tous les droits au groupe

    36/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    La commande chmod (suite)

    Le mode est spcifi par un nombre en octal (base 8), dont les chiffres reprsentent (dans l'ordre de gauche

    droite) :

    les droits pour l'utilisateur propritaire du fichier

    les droits pour le groupe propritaire du fichier

    les droits pour tous les autres

    Droits Binaire Octal

    --- 000 0

    --x 001 1

    -w- 010 2

    -wx 011 3

    r-- 100 4

    r-x 101 5

    rw- 110 6

    rwx 111 7

    Exemples

    700 : reprsente les droits rwx------

    751 : reprsente les droits rwxr-x--x

    640 : reprsente les droits rw-r-----

    37/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    La commande chmod : Exercices

    1 Interdire la lecture et l'accs au rpertoire RepertoireUn aux utilisateurs ne faisant pas partie du groupe

    staff

    2 Donner les droits d'criture au groupe sur le fichier fichierUn

    3 Donner le droit d'excution sur le fichier fichierUn l'utilisateur propritaire

    4 Prvoir les droits affichs par la commande ls -l aprs excution de ces commandes

    5 Rcrire les commandes avec l'utilisation numrique de la commande chmod

    38/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    La commande chmod : Correction

    Mode symbolique

    1 chmod o-rx RepertoireUn

    2 chmod g+w fichierUn

    3 chmod u+x fichierUn

    Mode numrique

    1 chmod 750 RepertoireUn

    2 chmod 664 fichierUn

    3 chmod 764 fichierUn

    39/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation ISystme Unix

    Systme de gestion de chiers

    La commande umask

    La commande umask

    permet de spcifier des droits par dfaut lors de la cration des fichiers

    utilise des masques sous forme numrique octale

    sans paramtre : indique le masque courant

    avec le masque en paramtre : modifie le masque courant

    les droits obtenus sont le complmentaire de ceux indiqus par le masque

    Exemple :

    Droits 777 rwxrwxrwx 777 rwxrwxrwx

    Masque 022 ----w--w- 227 -w--w-rwx

    Droits obtenus 755 rwxr-xr-x 550 r-xr-x---

    40/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Introduction bash

    1 Introduction gnrale sur les systmes d'exploitation

    Rappels sur le matriel

    Notions de systmes d'exploitation

    Les principaux systmes d'exploitation

    2 Systme Unix

    Introduction au systme Unix

    Commandes de base du Shell

    Systme de gestion de chiers

    3 Programmation Shell

    Introduction bash

    Les scripts Shell

    4 Filtre programmable awk

    Introduction

    Expressions rgulires et commande egrep

    Filtre programmable awk

    41/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Introduction bash

    Les diffrents Shells

    Il existe plusieurs Shells UNIX :

    C-Shell (csh ou tcsh)

    Bourne Shell (sh ou bash)

    Korn Shell (ksh), ....

    L'interprtation des commandes simples est semblable pour tous

    L'utilisation pour crire des scripts diffre beaucoup (dfinition des variables, structures de contrle, etc)

    Initialisation d'un Shell

    Lors de leur dmarrage,

    les Shell excutent des fichiers de configuration, qui peuvent contenir des commandes quelconques et sont

    gnralement utiliss pour dfinir des variables d'environnement et des alias

    csh excute le fichier ~/.cshrc (le "rc" signifie run command)

    tcsh excute ~/.cshrc

    sh excute ~/.profile

    bash excute ~/.bash_profile ou dfaut ~/.profile

    les fichiers d'initialisation sont "invisibles"

    42/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Introduction bash

    Variables d'environnement

    Elles sont instancies lorsqu'un Shell est excut par le systme

    Ce sont des variables dynamiques utilises par les diffrents processus d'un systme d'exploitation

    Elles donnent des informations sur le systme, la machine et l'utilisateur, entre autres

    La commande set affiche l'cran toutes les variables d'environnement pour le Shell

    VARIABLE=VALEUR : donne une valeur une variable

    export VARIABLE : dfinit VARIABLE comme une variable d'environnement

    echo $VARIABLE : affiche la valeur de la variable

    43/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Introduction bash

    Entre standard

    attache au clavier

    numro de descripteur 0

    Sortie standard

    attache l'cran

    numro de descripteur 1

    Erreur standard

    attache l'cran

    numro de descripteur 2

    Redirections des entres/sorties

    Il est possible de rediriger ces trois flux :

    Redirection de la sortie standard : $ echo bonjour > test.txt

    Concatnation pour prserver le contenu du fichier de sortie : $ cat < toto.txt >> FichierSortie

    Redirection de l'erreur standard : $ ls abdnkjf 2> erreur.txt

    Redirection de l'entre standard : $ bc < calcul.dat

    Redirection de l'entre et de la sortie standard : $ bc < calcul.dat > resultat.txt

    Exemple : $ ls abdnkjf > sortie.txt 2>&1 : La sortie de ls est enregistre dans le fichier

    sortie.txt. L'erreur standard est redirige la sortie standard. Donc, l'erreur standard est galement

    redirige au fichier sortie.txt

    Pipe "|"

    Brancher la sortie standard d'une commande l'entre standard d'une autre commande

    Exemple : $ ls -l | sort -r (affiche le contenu du rpertoire courant tri l'envers)

    44/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Introduction bash

    Regroupement des commandes

    Pour lancer l'excution squentielle de plusieurs commandes sur la mme ligne de commande, il suffit de les

    sparer par un caractre ;

    Exemple : $ cd /tmp ; pwd; echo bonjour; cd ; pwd

    Excution squentielle d'une ligne de commandes par regroupement

    (cmd1 ; cmd2) ; cmd3

    (cmd1 ; cmd2) & cmd3

    Les commandes regroups sont excutes dans un interprteur enfant (subshell)

    Exemple : pwd ; (cd ..; pwd; cp user.txt test.txt; ls -l test.txt); pwd

    Contrle des tches

    le Shell attend la fin de l'excution d'une commande avant d'afficher le prompt suivant

    L'excution en arrire-plan permet un utilisateur de lancer une commande et de rcuprer immdiatement

    la main pour lancer "en parallle" la commande suivante (paralllisme logique)

    On utilise le caractre & pour lancer une commande en arrire-plan

    Exemple : $ sleep 100 &

    La commande jobs affiche les commandes lances en arrire plan.

    45/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    1 Introduction gnrale sur les systmes d'exploitation

    Rappels sur le matriel

    Notions de systmes d'exploitation

    Les principaux systmes d'exploitation

    2 Systme Unix

    Introduction au systme Unix

    Commandes de base du Shell

    Systme de gestion de chiers

    3 Programmation Shell

    Introduction bash

    Les scripts Shell

    4 Filtre programmable awk

    Introduction

    Expressions rgulires et commande egrep

    Filtre programmable awk

    46/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Scripts

    Les scripts sont des programmes crits dans un langage interprt, par exemple le langage du Shell

    Un script peut tre une simple liste de commandes

    La premire ligne du script doit prciser l'interprteur utilis, elle commence par les deux caractres #!,

    suivis du chemin de l'interprteur.

    Exemple :

    #!/bin/bash

    # liste

    echo "Contenu du repertoire courant"

    ls -l

    echo "-----------------------------"

    La deuxime ligne est un commentaire

    Le fichier contenant ces commandes doit tre rendu excutable : $ chmod u+x liste

    47/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Variables

    Les variables du Shell sont des symboles auxquels on affecte des valeurs

    Une variable est identifie par son nom

    Le contenu de la variable est identifi par le symbole $ plac devant le nom

    Exemple : Affichage en utilisant la commande echo

    $ VARIABLE=VALEUR

    $ echo $VARIABLE

    VALEUR

    Substitution: variables

    Bash ralisera la substitution du contenu d'une variable lorsqu'il rencontre $ suivi d'un nom de variable

    Deux comportements possibles :

    Substitution vide : La variable n'est pas dfinie ou la variable est dfinie mais son contenu est vide

    Substitution du contenu : La variable est dfinie et son contenu est non nul

    Exemple 1 :

    $ MSG1="Jean est un "

    $ MSG2="chien fort rput"

    $ echo "$MSG1 $METIER $MSG2"

    Jean est un chien fort rput

    Exemple 2 :

    $ MSG1="Jean est un "

    $ MSG2="chien fort rput"

    $ METIER="dresseur de"

    $ echo "$MSG1 $METIER $MSG2"

    Jean est un dresseur de chien fort rput

    48/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Substitution: commandes

    Bash est en mesure de substituer le rsultat d'une ligne de commandes UNIX

    Le symbole impliqu dans ce genre de substitution est l'accent grave ( `)

    Exemple :

    $ echo pwd

    pwd

    $ echo `pwd`

    /Users/Hicham/Desktop

    $ echo "Mon rpertoire de travail est: `pwd`"

    Mon rpertoire de travail est: /Users/Hicham/Desktop

    Il est possible d'assigner le rsultat d'une ligne de commande UNIX une variable

    Exemple :

    $ REPERTOIRE=`pwd`

    $ JESUIS=`who am i`

    $ MACHINE=`hostname`

    $ echo -e "Utilisateur: $JESUIS\n Rpertoire de travail: $REPERTOIRE\n\

    > Machine: $MACHINE"

    Utilisateur: Hicham ttys000 Feb 24 22:46

    Rpertoire de travail: /Users/Hicham/Desktop

    Machine: MacBookPro.local

    49/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Neutralisation des caractres

    Certains caractres ont des significations particulires pour l'interprteur de commandes

    Par exemple : &, (, ), *, !, {, }, etc.

    Sans un mcanisme d'chappement, ces caractres spciaux seront interprts par Bash

    Les commandes et programmes qui utilisent ces caractres spciaux ne pourront pas s'excuter correctement

    D'o la ncessit de neutraliser la signification particulire de ces caractres spciaux pour Bash

    Exemple : Nous dsirons afficher la chane de caractres "TOTO & TATA"

    $ echo TOTO & TATA

    [1] 2527

    TOTO

    -bash: TATA: command not found

    $ echo TOTO \& TATA

    TOTO & TATA

    Donc, le symbole \permet la neutralisation du caractre qui le suit

    Nous pouvons neutraliser la signification spciale du caractre Espace par les symboles "" et ' '

    Le guillemet : limine la signification spciale du caractre Espace mais permet la substitution des variables

    et commandes

    L'apostrophe : limine la signification spciale du caractre Espace et empche la substitution des variables et

    commandes

    50/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Paramtres de Bash

    Paramtres de position : $ cmd par1 par2 par3 par4

    Dans un programme Bash, le contenu de ces paramtres de position est reprsent par : $1, $2, $3 jusqu'

    $9

    Le nom du fichier (cmd) est reprsent par $0

    Exemple de paramtres de position l'aide d'un programme Bash

    #!/bin/bash

    # Nom du fichier param

    # param : montrer l'utilisation des parametres Bourne shell

    # Lancer le fichier de commande : param -A -B -C

    echo "Numero PID de l'interpreteur de commande: $$"

    echo "Nom du fichier de commande: $0"

    echo "Nombre de parametres: $#"

    echo "Parametre 1: $1"

    echo "Parametre 2: $2"

    echo "Parametre 3: $3"

    echo "Parametre 4: $4"

    echo "Toute la ligne de commande: $@"

    51/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Lecture et afchage

    La commande read ralise la lecture partir de l'entre standard : $ read var1 var2 var3

    Lecture de l'entre standard et placer les donnes dans les variables var1, var2 et var3.

    La sparation des donnes d'entre en champs est ralise par Bash l'aide de la variable IFS (Internal Field

    Separator)

    Exemple : voici une-ligne de donnes (Il existe 4 champs)

    La lecture est ralise partir de l'entre standard

    Les donnes lues sont places dans trois variables (REPERTOIRE1, REPERTOIRE2 et REPERTOIRE3)

    Le programme termin son excution par l'affichage des donnes lues

    Exemple d'utilisation de read

    #!/bin/bash

    # nom du fichier: lecture

    # lecture : montrer comment lire des donnes partir de l'entre standard

    echo -e "Les repertoires de l'installation? \c"

    read REPERTOIRE1 REPERTOIRE2 REPERTOIRE3

    echo "Merci !"

    echo -e "L'entree lue : $REPERTOIRE1\n $REPERTOIRE2\n $REPERTOIRE3"

    52/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Dcalage de paramtres : shift

    La commande shift agit sur les paramtres de position du Bash

    A chaque emploi de shift

    le paramtre $1 prcdent est perdu

    $1 est supprim de $* et $@

    $# est dcrment de 1

    L'emploi de shift ncessite que le Shell script ait au moins un paramtre

    Exemple d'utilisation de shift

    #!/bin/bash

    echo "$# : arg1 = $1, arg2 = $2; total : $@"

    shift

    echo "$# : arg1 = $1, arg2 = $2; total : $@"

    shift

    echo "$# : arg1 = $1, arg2 = $2; total : $@"

    shift

    echo "$# : arg1 = $1, arg2 = $2; total : $@"

    shift

    exit 0

    53/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Commandes de test : test, [ ]

    Permet d'valuer une expression.

    Si vrai, renvoie 0 (true), sinon, renvoie 1 (false)

    S'il n'y a pas d'expression, renvoie 1

    test expression est quivalent [ expression ]

    Test sur chiers, rpertoires et chanes

    Expression vrai si :

    -e fic fic existe

    -d fic fic existe et est un rpertoire

    -f fic fic existe et est un fichier ordinaire

    -h fic fic existe et est un lien symbolique

    -s fic fic existe et est non vide

    -r fic fic existe et est autoris en lecture

    -w fic fic existe et est autoris en criture

    -x fic fic existe et est autoris en excution

    ch1 = ch2 les deux chanes sont identiques

    ch1 != ch2 les deux chanes sont diffrentes

    Test sur nombres et oprations logiques sur lesexpressions

    Expression vrai si :

    n1 eq n2 n1 = n2

    n1 -ne n2 n1 n2

    n1 -le n2 n1 n2

    n1 -ge n2 n1 n2

    n1 -lt n2 n1 < n2

    n1 -gt n2 n1 > n2

    ! exp1 exp1 est fausse

    exp1 -a exp2 exp1 et exp2 vraies

    exp1 -o exp2 exp1 ou exp2 est vraie

    54/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Branchement conditionnel : if-then-elif-else-fi

    Syntaxe

    if liste-commandes-1

    then liste-commandes-2

    elif liste-commandes-3 autant de fois que ncessaireelse liste-commandes-4 si ncessairefi

    La condition (boolenne) est en gnral le code de retour d'une commande UNIX

    Le code de retour de la commande dtermine le test if :

    Code de retour valant zro : Le test if est vrai.

    Code de retour non nul : Le test if est faux

    Exemple 1

    #!/bin/bash

    if [ -d toto ] ; then

    echo "toto est un rpertoire"

    elif [ -h toto ] ; then

    echo "toto est un lien symbolique"

    else

    echo "autre que rpertoire ou lien"

    fi

    Exemple 2

    #!/bin/bash

    if ls toto > /dev/null 2>&1

    then

    echo "le fichier toto existe"

    else

    echo "le fichier toto n'existe pas"

    fi

    55/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Branchement conditionnel : if-then-elif-else-fi : Exemple 3

    #!/bin/bash

    # Mot secret

    #

    # Ce programme demande l'utilisateur de deviner un mot.

    SECRET_WORD="SMI"

    echo "Votre nom ?"

    read NAME

    echo

    echo "Bonjour $NAME. Devinez un mot."

    echo -e "Vous avez le choix entre : SMA, SMI et SMP : \c"

    read GUESS

    if [ $GUESS=$SECRET_WORD ]

    then

    echo "Congratulations !"

    fi

    56/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Branchement conditionnel : case-esac

    Syntaxe

    case expression in

    motif ) liste-commandes-1 ;; autant de fois

    *) liste-commandes-2 ;;

    esac

    Excute la liste-commandes suivant le motif (pattern en anglais) reconnu

    Le motif reconnaitre peut s'exprimer sous forme d'expression rationnelle (ou rgulire) utilisant les

    mta-caractres : * ? [ ] -

    Exemple 1

    #!/bin/bash

    case $1 in

    [Yy][eE][sS] | [oO][uU][iI]) echo "affirmatif" ;;

    [Nn][oO] | [Nn][Oo][Nn]) echo "ngatif" ;;

    yesno) echo "dcide-toi" ;;

    *) echo "quelle rponse!" ;;

    esac

    57/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    case-esac : Exemple 2

    #!/bin/bash

    # traiter les options d'une commande ; utiliser case esac pour traiter les options

    if [ $# = 0 ]

    then

    echo "Usage : casesac t q l NomFich"

    exit 1

    fi

    for option

    do

    case "$option" in

    -t) echo "option t recu" ;;

    -q) echo "option q recu" ;;

    -l) echo "option l recu" ;;

    [!-]*) if [ -f $option ]

    then

    echo "fichier $option trouve"

    else

    echo "fichier $option introuvable"

    fi

    ;;

    *) echo "option inconnue $option recontree"

    esac

    done

    58/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Boucle for-do-done

    Syntaxe

    for variable in liste-de-mots

    do

    liste-commandes

    done

    La variable prend successivement les valeurs de la liste de mots, et pour chaque valeur, liste-commandes

    est excute

    Exemple 1

    #!/bin/bash

    for i in un deux trois quatre cinq six

    do

    echo "Semestre $i"

    done

    Exemple 2

    #!/bin/bash

    for i in ~/Desktop/*.pdf

    do

    echo $i

    done

    59/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Boucle for-do-done : Exemple 3

    #!/bin/bash

    # Checkfile. Informations sur des fichiers

    for file in $@

    do

    if [ -d $file ]

    then # Test file type

    echo "$file est un rpertoire"

    elif [ -f $file ]

    then

    echo "$file est rgulier"

    if [ -s $file ]

    then

    echo "$file n'est pas vide"

    else

    echo "$file est vide"

    fi

    else

    echo "$file non trouv"

    fi

    Exemple 3 (Suite)

    if [ -0 $file ] # check ownership

    then

    echo "Propritaire de $file"

    else

    echo "Pas propritaire de $file"

    fi

    if [ -r $file ] # check permissions

    then

    echo "Droit de lecture sur $file"

    fi

    if [ -w $file]

    then

    echo "Droit d'criture sur $file"

    fi

    if [ -x $file ]

    then

    echo "Droit d'excution sur $file"

    fi

    done

    60/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    L'instruction select-do-done

    Syntaxe

    select variable in liste-de-mots

    do

    liste-commandes

    done

    Permet l'utilisateur de slectionner une variable parmi une liste de mots. liste-commandes est excute

    L'instruction select gnre un menu partir de liste-de-mots et demande l'utilisateur de faire un

    choix

    Exemple 1

    #!/bin/bash

    echo "Quel est votre OS prfr ?"

    select var in "Linux" "Mac OS X" "Other"

    do

    echo "Vous avez slectionn $var"

    if [ "$var" = "Other" ]

    then

    break

    fi

    done

    Exemple 2

    #!/bin/bash

    PS3="Que voulez vous ? "

    select ch in "1er" "2eme" "Abandon" ; do

    case $ch in

    1) echo "Cst du $ch choix" ;;

    2) echo "Que du $ch choix" ;;

    3) echo "On abandonne ..." ; break ;;

    *) echo "Choix invalide" ;;

    esac

    done

    61/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Boucle while-do-done

    Syntaxe

    while liste-commandes-1

    do

    liste-commandes-2

    done

    La valeur teste par la commande while est l'tat de sortie de la dernire commande de

    liste-commandes-1

    Si l'tat de sortie est 0, alors le Shell excute liste-commandes-2 puis recommence la boucle

    Exemple 1

    #!/bin/bash

    echo -e "Devinez le mot secret : SMI, SMA, SMP : \c"

    read GUESS

    while [ $GUESS != "SMI" ]

    do

    echo -e "Ce n\st pas $GUESS, devinez : \c"

    read GUESS

    done

    echo "Bravo"

    Exemple 2

    #!/bin/bash

    compteur=5

    while [ $compt -ge 0 ]

    do

    echo $compt

    compt=`expr $compt - 1`

    done

    62/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Boucle until-do-done

    Syntaxe

    until liste-commandes-1

    do

    liste-commandes-2

    done

    Le Shell teste l'tat de sortie de liste-commandes-1

    Si l'tat de sortie est 1, alors, liste-commandes-2 est excute puis la boucle est recommence

    Exemple 1

    #!/bin/bash

    echo -e "Devinez le mot secret : SMI, SMA, SMP : \c"

    read GUESS

    until [ $GUESS = "SMI" ]

    do

    echo "Ce n\st pas $GUESS, devinez encore : \c"

    read GUESS

    done

    echo "Bravo."

    Exemple 2

    #!/bin/bash

    compt=5

    until [ $compt -lt 0 ]

    do

    echo $compt

    compt=`expr $compt - 1`

    done

    63/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Fonctions Bourne Shell

    Nous pouvons rendre la programmation plus structure en utilisant des fonctions

    La syntaxe est :

    NomDeFonction ( ){

    commandes

    }

    Dfinition des fonctions Bourne shell : au dbut du fichier de commande

    Prend prsance sur les commandes systmes de mme nom

    Peut avoir une valeur de retour : exit n o n est une valeur numrique (=0 : OK, 0 (et

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Exemple 2 : Fonctions Bourne Shell

    #!/bin/sh

    repertoire () {

    echo "Entrer un nom de repertoire: \c"

    read REPERTOIRE

    if [ -d "$REPERTOIRE" ]

    then

    return 0 # repertoire existe

    else

    return 101 # repertoire inexistant

    fi

    }

    gestion_erreur () {

    case $ERRNO in

    0) ;; # pas d'erreur

    101) echo "Rpertoire inexistant" ;;

    *) echo "Code d'erreur inconnu"

    exit 1 ;;

    esac

    }

    Exemple 2 (suite)

    # Programme principal

    ERRNO=123

    while [ $ERRNO -ne 0 ]

    do

    # statut de sortie de repertoire ()

    # assign ERRNO

    repertoire; ERRNO=$?

    # invoquer le gestionnaire d'erreur

    gestion_erreur

    done

    65/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Diffrence entre "$@" et "$*"

    Lorsque utilis entre guillemet, la variable $@ et la variable $* n'ont pas la mme signification

    Pour "$@" l'interprteur de commandes substitue les paramtres de position en leur entourant par des

    guillemets

    Ce n'est pas le cas pour "$*"

    Exemple : Diffrence entre "$@" et "$*"

    #!/bin/bash

    # Nom fichier : exemple_arobase.sh

    echo "Utilisation de \$*"

    for OPTION in "$*"

    do

    echo "Itration : $OPTION"

    done

    echo "Utilisation de \$@"

    for OPTION in "$@"

    do

    echo "Itration : $OPTION"

    done

    Rsultat de l'excution

    $ ./exemple_arobase.sh un deux troix quatre

    Utilisation de $*

    Itration : un deux troix quatre

    Utilisation de $@

    Itration : un

    Itration : deux

    Itration : troix

    Itration : quatre

    Le rsultat n'est pas le mme !

    Pensez utiliser "$@" dans vos programmes Bash

    66/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Dcodage des paramtres

    Il existe une commande simple pour le dcodage systmatique des paramtres de position

    Il s'agit de la commande getopts

    La syntaxe de cette commande : getopts optstring name [arg ]

    optstring reprsente les options reconnatre par getopts

    name les options reconnues par getopts sont places dans cette variable

    arg s'il existe, getopts va tenter d'extraire les options partir de cet argument

    Exemple 1 (getopts)

    #!/bin/sh

    while getopts lq OPT

    do

    case "$OPT" in

    l) echo "OPTION $OPT reue" ;;

    q) echo "OPTION $OPT reue" ;;

    ?) echo "Usage: install [-lq]" ; exit 1 ;;

    esac

    echo "Valeur de \$OPTIND: $OPTIND"

    done

    Rsultat de l'excution

    $ install_lq -l

    OPTION l reue

    Valeur de $OPTIND: 2

    $ install_lq -l -q

    OPTION l reue

    Valeur de $OPTIND: 2

    OPTION q reue

    Valeur de $OPTIND: 3

    $ install_lq -x

    ./install_lq : option incorrecte -- x

    Usage: install [-lq]

    67/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Exemple 2 (getopts)

    #!/bin/sh

    while getopts l:q OPT

    do

    case "$OPT" in

    l) OPTION="$OPT"

    LOGARG="$OPTARG" ; echo "OPTION $OPT reue; son argument est $LOGARG" ;;

    q) OPTION="$OPT" ; echo "OPTION $OPT reue" ;;

    ?) echo "Option invalide dtecte"

    echo "Usage: install [-l logfile -q] [nom_repertoire]"

    exit 1 ;;

    esac

    echo "Valeur de \$OPTIND: $OPTIND"

    done

    # Chercher le paramtre nom_repertoire

    shift `expr $OPTIND - 1`

    if [ "$1" ]

    then

    REPERTOIRE="$1"

    echo "Rpertoire d'installation: $REPERTOIRE"

    fi

    68/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I

  • ..

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    .

    Systmes d'exploitation IProgrammation Shell

    Les scripts Shell

    Dbogage de Script Shell

    Pour simplifier la recherche des erreurs dans un programme Bourne Shell :

    Utiliser la commande set pour activer les modes de dbogage

    Les options disponibles sont :

    -n : Lire les commandes mais ne pas les excuter (Vrifie les erreurs de syntaxe sans excuter le

    script)

    -v : Affiche les lignes lues du programme lors de son excution

    -x : Afficher les commandes et les substitutions lors de leur excution

    Exemple

    #!/bin/sh

    # settest : montrer l'utilisation des options de set pour le dbogage

    # Utiliser l'option v (affiche les commandes et leur argument)

    set -x

    pwd

    ls -l

    echo `who`

    69/90 Pr. Hicham Laanaya [email protected] Systmes d'exploitation I