01 Intro Shell

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 61

LINFO1252 - Systèmes Informatiques


Leçon 1 : Introduction

Pr. Etienne Rivière



[email protected]

Système informatique ?

• Combinaison de matériel
• Processeu
• Mémoir
• Périphériques d’entrée/sorti
• Périphériques de stockag

• … et d’un Système d’Exploitation (SE


• Lien fondamental entre les applications et le matériel
• Fournit au programmeur et à l’utilisateur des
mécanismes et outils pour tirer partie du matériel
simplement et ef cacement

Systèmes Informatiques — E. Rivière


e

fi
e

Objectifs de ce cours

• Utiliser et comprendre les systèmes informatique


• Et particulièrement UNIX & GNU/Linu

✓ En tant que programmeur : utilisation des


services fournis par le S
• Interface programmatique (API) et outils système

✓ Design et mise en œuvre des S


• Illustrer les compromis entre abstraction et
performance

Systèmes Informatiques — E. Rivière


E

Thèmes abordés

• Structure des ordinateurs & architectur


• Services fournis par un S
• Processus et threads,
• synchronisation et communication,
• gestion de la mémoire,
• gestion des chier

• Mise en œuvre d’un SE : sujets choisi


• Structure et organisation des SE
• mise en œuvre de la synchronisation
• mise en œuvre des systèmes de chiers
• ordonnancement (scheduling) des processus

Systèmes Informatiques — E. Rivière


fi
s

fi

Organisation du cours

Systèmes Informatiques — E. Rivière


6

Ressources en ligne
indispensables
• Inscription sur Moodle (code LINFO1252
• Informations sur les séances de chaque semaine

• Inscription au groupe Team


• Code “Cours-LINFO1252-2021-22

• Exercices du cours sur Inginiou


• https://inginious.info.ucl.ac.be/
• Code LINFO1252

Systèmes Informatiques — E. Rivière


s

Matériel du cours
• Syllabus en lign
• https://sites.uclouvain.be/SystInfo
• Commun avec LEPL150
1. Théori
• Matière du cour
• Couvert dans les cours magistrau
2. Outil
• Apprentissage des outils systèm
• Approfondissemen
• Contributions d’étudiants (en partie
3. Exercice
• Mis à jour chaque semaine avec les sujets d’exercice
• Liens vers exercices Inginious

Systèmes Informatiques — E. Rivière


s

Communication

• Interlocuteur principal :
votre tuteur et votre assistan
• Forums sur Moodle pour les questions
intéressant aussi les autres étudiant
• Canaux Team
• Email pour les cas particulier
• ou pour une demande de rendez-vou

• SVP pas d’appel ou de message instantané sur


Teams sans rendez-vous préalable !

Systèmes Informatiques — E. Rivière


s


s

Equipe LINFO1252
• Prof Etienne Rivièr
• 4 assistant

Tom Barbette Maxime Piraux Charles-Henry Tom Rousseaux


Bertrand Van Ouytsel

• et 5 tuteurs

Emeline Christoph Jonathan de Salle Colin Evrard Julien Herman Sophie Otlet

Systèmes Informatiques — E. Rivière


s

10

Organisation

• Cours magistraux le jeudi 10h45 en SUD1


• Une séance d’exercices par semain
• Aide à l’avancement dans les exercices Inginiou
• Travaux dirigés en class
• Soutien sur la réalisation des projet

• La séance d’exercice est obligatoir


• Mercredi 8h30-10h30 ou vendredi 10h45-12h4
• Salles SUD2, 4, 5, 7,14, 15, 17 — consultez AD
• Le nombre de salle sera probablement réduit une fois le
nombre d’étudiants inscrits conn

• Channels Teams pour les questions d’intérêt général

Systèmes Informatiques — E. Rivière


e

11

Séance d’exercices : qui et quand


Séance Étudiants

Bac ing. civil (FSA1BA) : étudiants MATH-INFO


Mercredi
8h30
Masters SINF et passerelles

Bac SINF (tous)

Vendredi
Bac ing. civil (FSA1BA) : étudiants XXX-INFO où XXX ≠ MATH
10h45

Étudiants ne rentrant pas dans les catégories ci-dessus (e.g., DATE)

Systèmes Informatiques — E. Rivière


Maxime Piraux Charles-Henry 12
Bertrand Van Ouytsel

Classes
• Chaque classe sous la responsabilité d’un
assistant + une ou un tutrice/tuteur (ou deux
• Mercredi :

Tom Rousseaux Jonathan de Salle Sophie Otlet

• Vendredi :

Tom Barbette Emeline Christoph Colin Evrard Julien Herman

Systèmes Informatiques — E. Rivière


13

Matériel

• Vous utiliserez votre propre lapto


• Contactez moi après le cours si vous n’en avez pas
à votre dispositio

• Il est nécessaire d’installer une distribution


Linux, par exemple Ubunt
• Recommandé : dual-boot en nati
• Faites une sauvegarde de vos données au préalabl
• Possible
(gratuit
: machine virtuelle avec Virtual Box

• Aide de l’équipe et KAP Linux pour l’installation


(voir à la n du cours)

Systèmes Informatiques — E. Rivière


)

fi
n

14

Évaluation
Session de janvier
- Participation aux séances et exercices annoncés comme obligatoires (10%
- Evaluation continue et mini-projets (30%
- Examen (60%
Session de septembre
- La note de participation compte et ne peut pas être refaite (10%
- Réalisation d'exercices et de mini-projet(s) de façon individuelle (30%
- Examen (60%)
Des activités formatives sont susceptibles d'être considérés comme certi catives et
prendront alors une partie ou tout du poids de l'examen dans la note si les
circonstances le demandent
Le professeur titulaire peut demander un examen oral complémentaire à l'examen,
incluant mais non limité au, cas de problèmes techniques ou de suspicion
d'irrégularités.

Systèmes Informatiques — E. Rivière


)

fi
)

15

Cours d’aujourd’hui

• Deux partie

1. Une vue “haut niveau” de ce qu’est et de comment


fonctionne un système informatiqu
• Objectif : comprendre le rôle et la place du système
d’exploitatio
• Nous verrons en détail la mise en œuvre des mécanismes
mentionnés au cours du quadrimestr

2. Introduction à l’utilisation du shell (ligne de


commande)

Systèmes Informatiques — E. Rivière


n

16

Partie 1 : Le système informatique


et le rôle du système d’exploitation

Systèmes Informatiques — E. Rivière


17

Syllabus

• Cette partie correspond à la partie


“Introduction” de la Théori

• https://sites.uclouvain.be/SystInfo/notes/
Theorie/intro.html

• Illustrations supplémentaires en cours : à


reproduire dans vos notes !

Systèmes Informatiques — E. Rivière


18

Système informatique :
fondamentaux
• Composant
• Un (des) processeur(s) — CPU en anglai
• Mémoire principal
• Dispositifs d’entrée/sortie (y.c. de stockage

• Fonctionnement d’un processeu


• Exécution d’instructions câblées en matérie
• Lire / écrire en mémoire vers / depuis des registre
• Opérations (calculs, comparaisons) sur ces registre

• Un processeur est dé ni par son jeu d’instruction


• x86_64 (PC, anciens Mac) ;
ARM A64 (Raspberry PI, iPhone, nouveaux Mac M1)

Systèmes Informatiques — E. Rivière


s

fi

r

19

Architecture de von Neumann

• Mémoire principale utilisée pour


stocker les instructions ET les données

By Kapooht - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=25789639

Systèmes Informatiques — E. Rivière


20

Représentation des données

• Information manipulée sous forme binaire (1 et 0) — bit


• 4 bits : nibble, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F) en hexadécima
• 8 bits : octet ; 32 bits : mot ; 64 bits : long mot

• Instructions stockées sous forme binair


• Premiers bits codent identi ant de l’instruction à exécute
• Suivi des arguments ou opérandes

• Processus “Fetch/Decode/Execute
• Compteur de programme : registre incrémenté pour savoir quelle
instruction exécuter à la suite de l’instruction courant
• Des instructions de contrôle peuvent positionner le compteur de
programme selon le résultat d’un test : permet while, if, etc.

Systèmes Informatiques — E. Rivière


fi

21

Fonctionnement d’un système


informatique
• Opérations d’entrée/sortie se déroulent de manière
concurrente (en même temps) que l’exécution d’instructions
par le processeu
• Contrôleurs de périphériques spéci ques à chaque type de
périphérique (clavier, souris, écran, etc.
• Chaque contrôleur possède une mémoire dédiée (un buffer
• Le processeur doit déplacer des donnés depuis/vers la
mémoire principale depuis/vers ces buffers dédié
• Opérations d’entrée/sortie entre le contrôleur et le
périphérique

Systèmes Informatiques — E. Rivière


r

fi
)

22

Fonctionnement d’un système


informatique
• Par défaut, le processeur suit un ‘ l’ continu d’instruction
• Comment réagir à des stimuli externes
• Frappe du clavier, mouvement de la souris, paquet résea
➡ par exemple, récupération de l’identi ant de la touche depuis la
mémoire du contrôleur du clavie

• Le contrôleur de périphérique annonce au processeur la


n d’une opération d’entrée/sortie en générant une
interruption
• Signal électrique à destination du processeur

Systèmes Informatiques — E. Rivière


fi
r

fi
fi
?

23

Traitement d’une interruption

• Le processeur interrompt le l d’exécution d’instructions courant et


transfert le contrôle du processeur à une routine de traitemen
• L’étape (compteur de programme) à laquelle le l d’exécution est
interrompue est sauvegardée, ainsi que l’état (les registres) du processeu

• La routine de traitement détermine la source de l’interruption


• Polling : interroge tous les contrôleurs un à un, o
• Vectored : plusieurs lignes d’interruption différentes (poss. partagées

• … puis positionne le compteur de programme à la première


instruction du segment de code associé à cette source d’interruptio
• À la n du traitement, on restaure l’état du processeur et on reprend
le processus interrompu en restaurant le compteur de programme

Systèmes Informatiques — E. Rivière


fi
fi
fi
u

24

Opérations d’entrée/sortie
traitement de l’interruption : récupération de l’identi ant de
la touche depuis le buffer du contrôleur de périphérique

restauration du programme interrompu

credit: Adam Silberschatz

Systèmes Informatiques — E. Rivière


fi
25

Accès direct à la mémoire

• Une interruption pour chaque appui d’une touche de clavier


• toutes les ~150-200 millisecondes : OK ! 😎

• Une interruption pour chaque octet lu depuis un disque dur


• 125 Mo (méga-octets = 106 octets) par second
• 125 * 106 = 125 millions d’interruptions par second
• Temps moyen entre deux interruptions = 8 ns
• Avec un processeur à 3 GHz, 24 ‘tics’ d’horloge entre deux
interruptions — insuf sant pour traiter chaque interruption ! 😱

✓ Accès direct à la mémoire (DMA) : permet le transfert direct


entre le contrôleur de périphérique et la mémoire principal
• Une interruption générée pour signaler la n du transfert d’un bloc

Systèmes Informatiques — E. Rivière


fi
fi

26

Système informatique complet

credit: Adam Silberschatz

Systèmes Informatiques — E. Rivière


27

Le rôle du système
d’exploitation
• Programmer directement au dessus du matériel,
gérer les interruptions, les divers gestionnaires de
périphériques, etc. ? 😱
• Système d’exploitation = intermédiaire entre matériel
et application

• 3 rôles principau
✓ Rendre l’utilisation et le développement d’applications
plus simple et plus universel (portable d’une machine à
une autre
✓ Permettre une utilisation plus ef cace des ressource
✓ Assurer l’intégrité des données et des programmes
entre eux (e.g., un programme crash mais pas le système)

Systèmes Informatiques — E. Rivière


)

fi
s

28

Virtualisation

• Le système d’exploitation assure ces rôles en


virtualisant les ressources matérielle
• Malgré leur hétérogénéit
• Sur des systèmes équipés de ressources
différentes (nature et volume

• Représentations abstraites des ressource


• Utilisation à travers d’AP
• Universelles (même entre différents SE)

Systèmes Informatiques — E. Rivière


é

29

Exemple de virtualisation (1)

• Virtualisation du processeur : processus


• Illusion pour le programmeur d’avoir un processeur
dédié pour son applicatio
• exécution d’une suite d’instructions sans interruptio

• Plusieurs processus co-existent au même moment et


au sein d’un même systèm
• Le SE partage la ressource processeur entre les
processus en utilisant le partage de temps
• Mécanismes support pour, par exemple, mettre en
suspens un processus qui attendrait une entrée clavier
puis le “réveiller” par la suite

Systèmes Informatiques — E. Rivière


n

30

Exemple de virtualisation (2)

• Virtualisation de la mémoir
• Plusieurs processus en mémoire : tous utilisent la mémoire
physique présente sur la machin
• Comment s’assurer que les processus ne puissent pas lire/
écrire dans l’espace mémoire des autres processus (propriété
d’isolation)

• Mémoire virtuelle : fournit l’illusion que chaque


processus dispose de son espace mémoire propre, de
grande taille et de structure x
• Par défaut, pas de visibilité de la mémoire des autres processu
• Le système d’exploitation gère la correspondance entre des
adresses virtuelles utilisées par chaque programme et des
adresses physiques en mémoire principale

Systèmes Informatiques — E. Rivière


?

fi
e

31

La mise en œuvre d’un SE :


compromis abstraction/coût
• Des abstractions de plus haut niveau facilitent la vie
du programmeur et de l’utilisateu
• Exemple de la mémoire virtuelle ;
• Pourtant, le principe de mémoire virtuelle semblait
irréaliste encore longtemps après son invention ( n 1950s

• Rapport coût / béné c


☹ Sur le modèle de processeur (naïf) que nous avons utilisé,
chaque opération d’accès mémoire devrait être transformé
en plusieurs instructions pour mettre en œuvre la
translation adresse virtuelle-adresse physique
😀 L’adoption de la mémoire virtuelle à coût raisonnable a été
possible grace à l’ajout de fonctionnalités aux processeurs,
permettant cette translation au niveau matériel

Systèmes Informatiques — E. Rivière


fi
e

fi
)


32

Séparation entre mécanisme


et politique
• Principe important de mise en œuvre des S
• Exemple : la virtualisation du processeur via les processu
1. Un mécanisme permet le partage de temp
• changement de contexte : sauvegarde de l’état du processeur
(compteur de programme, registres) et restauration ultérieur
2. Une politique arbitre entre les processus pouvant s’exécuter
et le(s) processeur(s) disponible
• politique d’ordonnancement (scheduling
➡ On peut dé nir des politiques d’ordonnancement différentes
selon les contextes, mais sur la base du même mécanisme

Systèmes Informatiques — E. Rivière


fi
s

33

Interactions entre les


applications et le SE
• Fonctionnalités du SE disponibles via une AP
• Les fonctions du SE nécessitent un accès
global au système, par exempl
• Accès à toute la mémoir
• Con guration des gestionnaires de périphérique
• Con guration des interruption

• Pour mettre en œuvre le rôle d’isolation, les


processus clients (programmes utilisateurs) ne
doivent pas avoir accès à tout cela !

Systèmes Informatiques — E. Rivière


fi
fi
e

34

Modes d’exécution

• mode utilisateur : programme utilisant les abstractions


fournies par le SE ; certaines instructions sont interdite
• accès mémoire en dehors d’une zone autorisée — le fameux
“segmentation fault”
• de manière générale, toutes les instructions permettant de
changer la con guration matérielle du système, comme la
con guration ou la désactivation des interruption

• mode protégé : utilisé par le noyau du SE, toutes les


instructions sont autorisée
• L’utilisation de fonctionnalités du SE par un processus
utilisateur nécessite de passer d’un mode à l’autr
• Utilisation d’un appel système

Systèmes Informatiques — E. Rivière


fi
fi
!

35

Appel système == interruption

• Un appel système permet à un processus utilisateur


d’invoquer une fonctionnalité du S
• Génération d’une interruption logicielle (trap
• à l’aide d’une instruction processeur spéci qu

• Le processeur interrompt le processus, passe en mode


protégé, et branche vers le point d’entrée unique du noyau

credit: Adam Silberschatz

Systèmes Informatiques — E. Rivière


E

fi
e

36

En résumé …

• Un système d’exploitation peut


être décrit comme un système de
traitement d’interruption
• Interruptions matérielle
➡ Gestion des entrées/sortie
• Interruptions du processeur
(instructions illégales en mode
utilisateur
➡ Isolation des erreur
• Interruptions logicielles
➡ Service d’appels systèmes

credit: Stephen Charles Thompson, CC BY-SA 3.0

Systèmes Informatiques — E. Rivière


)

37

UNIX

• Famille de systèmes d’exploitatio


• De nombreuses déclinaisons
• Principes communs : KISS, séparation mécanisme/
politique, abstractions proposée

• Dans ce cours, nous nous focaliserons sur le


système GNU/Linu
• Linux : le noya
• GNU : la collection d’utilitaires et de librairies associé

• Les autres systèmes d’exploitation suivent


largement les principes introduits par UNIX

Systèmes Informatiques — E. Rivière


u

38

credit: Wikimedia, CC BY-SA 3.0


Systèmes Informatiques — E. Rivière
39

Partie 2 : Utilisation de la ligne


de commande

Systèmes Informatiques — E. Rivière


40

Syllabus

• Cette partie correspond à la partie


“Utilisation d’un système Unix” de la Théori

• https://sites.uclouvain.be/SystInfo/notes/
Theorie/shell/shell.html

• Pour aller plus loin : Section “Shell” de la


section “Outils” (https://sites.uclouvain.be/
SystInfo/notes/Outils/)

Systèmes Informatiques — E. Rivière


e

41

Utilitaires UNIX

• Origine d’UNIX : Bell Labs, 197


• Mini-ordinateurs : plusieurs utilisateurs via terminau
• Manipulation et traitement de documents text

• “Philosophie” UNIX : KIS


• “Keep It Simple, Stupid
• Programme simples, petits, parfaitement adaptés à une
tâche ou fonction uniqu
• La force de ce principe est dans la facilité de
composition de commandes pour réaliser des
opérations plus complexes

Systèmes Informatiques — E. Rivière


42

Quelques utilitaires standard


Utilitaire Fonction

lire/af cher le contenu d’un chier


cat
ex : cat fichier.txt

af cher une chaîne de caractères passée en argument,


echo
ex. : echo “Bonjour Monde”

af che le début resp. la n d’un chier


head / tail
ex. : tail errors.log

compte le nombre de caractères / de lignes d’un chier.


wc
ex. : wc -l students.dat

sort trie un chier. ex. : sort -n -r scores.txt

extrait les lignes uniques ou dupliquées d’un chier trié fourni


uniq
en argument. ex. : uniq -d students.dat

Systèmes Informatiques — E. Rivière


fi
fi
fi
fi
fi
fi
fi

fi
fi


43

La documentation

• Chaque utilitaire dispose d’une page de


manuel spéci ant
• sa fonctio
• les paramètres attendus en entré
• les options permettant de modi er son
comportemen

• Accessible en utilisant l’utilitaire man


• … documentation accessible avec man man

Systèmes Informatiques — E. Rivière


n

fi

fi
e

44

Exemple de documentation (man uniq)


uniq -d students.dat
commande paramètre(s)
option(s)

UNI
Section: User Commands (1 -s, --skip-chars=N
Updated: April 201 avoid comparing the rst N character
  -u, --unique
NAM only print unique line
uniq - report or omit repeated lines   -z, --zero-terminated
SYNOPSI
syntaxe end lines with 0 byte, not newlin
uniq [OPTION]... [INPUT [OUTPUT]]   -w, --check-chars=N
DESCRIPTIO compare no more than N characters in line
Filter adjacent matching lines from INPUT (or standard input), writing to --help
OUTPUT (or standard output) display this help and exi
With no options, matching lines are merged to the rst occurrence --version
Mandatory arguments to long options are mandatory for short options too output version information and exi
-c, --count A eld is a run of blanks (usually spaces and/or TABs), then
pre x lines by the number of occurrence non-blank characters. Fields are skipped before chars
-d, --repeated Note: 'uniq' does not detect repeated lines unless they are
only print duplicate line
option adjacent. You may want to sort the input rst, or use `sort -u'
-D, --all-repeated[=delimit-method without `uniq'. Also, comparisons honor the rules speci ed by
print all duplicate lines delimit-method={none(default),prepend,separate} `LC_COLLATE'.  
Delimiting is done with blank line
-f, --skip- elds=N
avoid comparing the rst N eld description
-i, --ignore-case
ignore differences in case when comparing

Systèmes Informatiques — E. Rivière


fi
fi
Q

fi
S

fi
fi
s

fi
)

fi
fi
.

fi
.

45

Sections de manuel
• Section 1: Utilitaires disponibles pour tous les utilisateur
• Section 2: Appels systèmes en
• Section 3: Fonctions de la librairi
• Section 4: Fichiers spéciau
• Section 5: Formats de chiers et conventions pour certains types de chier
• Section 6: Jeu
• Section 7: Utilitaires de manipulation de chiers texte
• Section 8: Commandes et procédure de gestion du systèm

• 8 sections (raisons historiques/ arbitraires


• ambiguïtés possibles
• printf l’utilitaire ou
printf la fonction de la librairie standard C
• Spéci er la section explicitement :
man 1 printf vs man 3 printf

Systèmes Informatiques — E. Rivière


fi
x

fi
x


fi
s


fi
?

46

Shell / interpréteur de
commande
• Interaction avec le système d’exploitatio
• Différents shells possibles : bcsh, bash, zsh, etc
• bash est le plus répand
• Exécution d’utilitaires/programmes et de
commandes interne
• e.g. cd permet de changer le répertoire couran
• Complémentaire avec une interface graphique

• Permet de combiner les opération


• Principe KISS !

Systèmes Informatiques — E. Rivière


s

47

Redirections
STDOUT
STDIN commande
STDERR

• 3 ux standards (1 entrée, 2 sorties


• Redirections permettent de combiner des commandes
en utilisant des chiers intermédiaires

< le redirige le contenu de le vers STDIN

redirige STDOUT vers file (si le chier n’existe pas, il est


> le
créé, si il existe déjà son contenu est écrasé)
redirige STDOUT vers file (si le chier n’existe pas, il est
>> le
créé, si il existe déjà le contenu est ajouté à la suite du chier)

2>&1 redirige STDERR vers STDOUT

Systèmes Informatiques — E. Rivière


fi
fi
fl
fi
fi
fi
fi
fi
)

fi
48

Pipes

• Redirection directe de STDOUT d’une


commande vers STDIN d’une autre
command
• Sans utiliser de chier intermédiaire

• Avec le symbole | (barre horizontale


• cmd1 | cmd2

Systèmes Informatiques — E. Rivière


e

fi
!

49

Exemples de redirections

$ echo "Un petit texte" | wc -


15
$ echo "bbbb ccc" >> file.tx
$ echo "aaaaa bbbbb" >> file.tx
$ echo "bbbb ccc" >> file.tx
$ cat file.tx
bbbb ccc
aaaaa bbbbb
bbbb ccc
$ cat file.txt | sort | uni
aaaaa bbbbb
bbbb ccc

Systèmes Informatiques — E. Rivière


t

50

Scripts

• Système UNIX peut exécute


• Programmes compilés en langage machin
• Langages interprétés (bash, perl, python, etc.)

#!/bin/bash
echo "Hello, world"

Par convention, les deux premiers octets du


chier #! indiquent qu’il s’agit d’un programme
interprété; l’interpréteur à utiliser suit

#!/usr/bin/python

#!/usr/bin/env python

Systèmes Informatiques — E. Rivière


fi
r

51

Variables
#!/bin/bash
PROG="LINFO"
COURS=125
# concaténatio # : commentaire
echo $PROG$COURS

accès à la valeur de la variable avec $

⚠ une variable non déclarée vaut “” (chaîne vide)

⚠ ambiguïté possible
milieu = "mi"; echo do$milieuno
utiliser des { } pour délimiter le nom de la variable
echo do${milieu}no

Systèmes Informatiques — E. Rivière


2

52

Arguments de la ligne de
commande

#!/bin/bash
# $# nombre d'arguments
# $1 $2 $3 ... arguments
echo "Vous avez passé" $# "arguments"
echo "Le premier argument est :" $1
echo "Liste des arguments :" $@

Systèmes Informatiques — E. Rivière


53

Conditionnelles (if )
⚠ espace important (source de bug commune)

#!/bin/bash
# Vérifie si les deux nombres passés en arguments sont égaux
if [ $# -ne 2 ]; then
echo "Erreur, deux arguments sont nécessaires" > /dev/stder
exit
fi
if [ $1 -eq $2 ]; then
echo "Nombres égaux"
else
echo "Nombres différents"
fi
exit 0

⚠ ; ou passage à la ligne (pas les 2)


$i -eq $j est vraie lorsque les deux variables $i et $j contiennent le même nombre
$i -lt $j est vraie lorsque la valeur de la variable $i est numériquement strictement inférieure à celle de la variable $j
$i -ge $j est vraie lorsque la valeur de la variable $i est numériquement supérieure ou égale à celle de la variable $j
$s = $t est vraie lorsque la chaîne de caractères contenue dans la variable $s est égale à celle qui est contenue dans la
variable $t
-z $s est vraie lorsque la chaîne de caractères contenue dans la variable $s est vide

Systèmes Informatiques — E. Rivière


2

54

Valeur de retour, chier spéciaux


#!/bin/bash
# wordin.sh
# Vérifie si le mot passé en premier argument est présent
# dans le fichier passé comme second argument
if [ $# -ne 2 ]; then
echo "Erreur, deux arguments sont nécessaires" > /dev/stder
exit
fi
grep $1 $2 >/dev/nul
# $? contient la valeur de retour de grep
if [ $? -eq 0 ]; then
echo "Présent"
exit
else
echo "Absent"
exit
fi

• $? contient la valeur de retour du dernier programme (=0 → OK

• /dev/null : “trou noir” (à quoi sert /dev/random ?)

Systèmes Informatiques — E. Rivière


2

fi
r

55

Conditions sur les chiers


#!/bin/bash
# vérifie si le fichier fourni en entrée contient des données
if [ $# -ne 1 ]; then
echo "Erreur, un seul argument est nécessaire" > /dev/stder
exit
fi
if [ -d $1 ]; then
echo "Erreur, $1 est un répertoire, pas un fichier" > /dev/stder
exit
fi
if [ ! -f $1 ]; then
echo "Erreur, $1 n'existe pas" > /dev/stder
exit
fi
if [ -s $1 ]; then
echo "Le fichier $1 contient des données" > /dev/stdou
else
echo "Le fichier $1 ne contient pas de données" > /dev/stdou
fi

Combinaisons logiques
if [ -d $1 -o ! -f $1 ]; then
echo "Erreur, $1 n'existe pas ou est un répertoire" > /dev/stder
exit
fi

… aussi -a (AND)
Systèmes Informatiques — E. Rivière
2

fi
t

56

Boucles : for
#!/bin/bash
# exemple_for.sh
students="Julie Maxime Hakim"
for s in $students; do
l=`wc -l TP1-$s.txt | cut -d' ' -f1`
echo "Bonjour $s, ton compte rendu de TP comporte $l lignes."
done

• s prend successivement les valeurs présentes dans la


liste d’entrée $students
• `command` permet d’assigner la sortie d’une
commande à une variabl
• que fait la commande composée ci-dessus

• boucles while et until :


principe similaire, avec une condition d’arrêt booléenne

Systèmes Informatiques — E. Rivière


e


?

57

Exercices

• Cette semaine, exercices sur inginiou

• Utilisation de commandes standard


• Utilisation de la documentatio
• Deux “capture the ag” interactif
• Écriture d’un script bash selon un cahier des
charge

• À valider pour la n de S2
(dimanche 26/9 23:59) !

Systèmes Informatiques — E. Rivière


s

fl
fi
n


s

58

Conclusion

Systèmes Informatiques — E. Rivière


59

Conclusion

• Système informatiqu
• Processeur et mémoir
• Périphériques d’entrée/sortie (y. c. stockage
• Système d’exploitation (y.c. utilitaires
• Application

• Principe des interruptions matérielles et logicielles


permettant la mise en œuvre du système
d’exploitation et l’isolation d’avec et entre les
application
• Interface en ligne de commande et principes de
composition de programmes / scripts

Systèmes Informatiques — E. Rivière


s

60

À la suite …

• La semaine prochaine : “Révisions” de programmation en


langage
• Et concepts avancés peu ou non vus en LEPL150
• Pour les étudiants n’ayant pas suivi LEPL1503 ou se sentant peu
à l’aise en
• Syllabus commun détaillé à (re)lir
• Exercices optionnels sur Inginious (enregistrez vous à LEPL1503 :
https://inginious.info.ucl.ac.be/course/LEPL1503

• Séance tutorée de démarrage (vendredi ou mercredi


• Prise en main et mise en plac
• Exercices Inginiou
• Aide si nécessaire à l’installation d’une machine virtuelle ou d’un
système Linux en dual boot — faites votre sauvegarde avant !

Systèmes Informatiques — E. Rivière


C

61

Présentation Kot-à-Projet
Louvain Linux

Systèmes Informatiques — E. Rivière

Vous aimerez peut-être aussi