Se 24-25
Se 24-25
IA ET MIP - S3
2024 - 2025
Plan
• Introduction au SE
• Présentation de Linux
• Commandes de base
• La programmation Shell
1
Système d’exploitation
Le système d'exploitation (SE, en anglais Operating System ou OS)
est un ensemble de programmes responsables de la liaison entre les
ressources matérielles d'un ordinateur et les applications de l'utilisateur
(traitement de texte, jeu vidéo, …)
Système d’exploitation :
Introduction
Un programme informatique, que ce soit un noyau ou un logiciel, est
constitué de nombreuses lignes de code, écrites dans un langage de
programmation (le langage C dans le cas du noyau Linux). Ce code
n'est généralement pas utilisable en tant que tel. Il faut passer par la
phase de compilation qui transforme le code source en programme
exécutable, souvent appelé binaire. Il suffit d'avoir le binaire pour
utiliser le programme.
2
Système d’exploitation :
Logiciel libre/Logiciel propriétaire
Les logiciels propriétaires sont donc les logiciels dont une licence,
souvent payante, ne donne qu'un droit limité d'utilisation. On n'a la
plupart du temps accès qu'aux binaires de ces logiciels. Certains
logiciels propriétaires sont gratuits, on les appelle alors des freewares.
(Windows est un OS propriétaire dont le code source est
jalouse ment gardé par Microsoft. Imaginez que c'est un peu
comme le Coca-Cola : personne ne connaît la recette de
fabrication .
Système d’exploitation :
Logiciel libre/Logiciel propriétaire
3
Présentation de Linux :
Historique
UNIX est un SE, créé en 1969 par Ken Thompson et Dennis Ritchie .
Il est :
• multi-tâches et multi-utilisateurs,
• Portable, c’est-à-dire le code est indépendant de l’architecture du
matériel de l’ordinateur,
• Disponible sur différentes plate-formes. La grande majorité des serveurs
sur Internet fonctionnent sous UNIX,
• Aujourd’hui, UNIX est très utilisé en informatique scientifique, et pour
les serveurs réseaux.
Présentation de Linux :
Historique
4
Présentation de Linux :
Historique
Project
Project GNU
LINUX
GNU/LINUX
Présentation de Linux :
Historique
5
Présentation de Linux :
Distributions de linux
Il existe une très grande variété de distributions, ayant chacune des objectifs
et une philosophie particulière.
Présentation de Linux :
Distributions de linux
Red Hat : http://www.redhat.com/ La plus populaire. Fiable, sûre, conviviale et
facile à installer, prise en charge par tous les fournisseurs de logiciel et de
matériel.
6
Présentation de Linux :
Distributions de linux
Présentation de Linux :
Systèmes de fichiers
7
Présentation de Linux :
Systèmes de fichiers
• Ext2 : c'est le système de fichiers qui a longtemps été utilisé sous Linux. Il a été
développé par un français (Rémy Card) et présente la particularité de ne pas se
fragmenter.
• Ext3 : l'ext3 est très proche de l'ext2, à une différence majeure près, la
journalisation. En effet, ext2 n'était pas journalisé, et en cas de crash disque on
risquait plus facilement une perte de données. Ce n'est plus le cas avec l'ext3.
Concrètement, un système de fichiers journalisé enregistre dans un journal (une sorte
de mémoire tampon) ce qui doit être écrit sur le disque dur. Au cas d’un crash disque
, il va vérifier le contenu du journal, si celui ci est plein, il va le transférer dans le
disque dur → donc évite la perte de données.
Présentation de Linux :
Systèmes de fichiers
◼ D'autres systèmes existent :
◼ ReiserFs : Système également
journalisé.(GNU/LINUX)
◼ JFS : Système développé et utilisé par IBM. Il est
proche de ReiserFs
◼ XFS : Créé par SGI pour son système IRIX
◼ Linux reconnaît d'autres systèmes de fichiers : FAT
et NTFS(windows)
16
8
Présentation de Linux :
Systèmes de fichiers
L’appellation "à la Linux" est un peu plus complexe que celle de Windows.
C:
Windows D:
E:
…
hda
Linux hdb
hdc
sda
…
Présentation de Linux :
Systèmes de fichiers
L’appellation "à la Linux" est un peu plus complexe que celle de Windows.
hd[a-d] n
9
Présentation de Linux :
Systèmes de fichiers
◼ La racine
un "gros dossier de base qui contient tous les autres dossiers et fichiers".
Présentation de Linux :
Systèmes de fichiers
Le système de fichiers sur Linux est une structure hiérarchique dont une
racine et des répertoires qui s'y rattachent.
Contrairement au système MS-DOS, qui contient plusieurs racine :A: ,C: ,D:
,…
Sous Linux, il y a une seule racine (root) : le slash "/" .
Par exemple, Le CD-ROM est atteint par le répertoire /cdrom.
Chaque Utilisateur possède un répertoire, dit de connexion (home directory),ou
il peut agir en toute liberté et y créer sa propre arborescence, par exemple:
/home/mehdi/
10
Présentation de Linux :
Systèmes de fichiers
/
bin
dev var
home tmp root lib
pippo mehdi
Présentation de Linux :
Systèmes de fichiers
11
Présentation de Linux :
Systèmes de fichiers
Présentation de Linux :
Notions de Shell
Le shell est un programme qui va faire le lien entre le noyau Linux et
l'utilisateur
= interpréteur de commandes interactif
Le shell est un interpréteur de commandes qui invite l’utilisateur à
saisir une commande et la fait ensuite exécuter
invite ("prompt")
12
Présentation de Linux :
Notions de Shell
P
pippo@localhost :~$
pippo : le premier élément est votre pseudonyme.
localhost : ça c'est le nom de l'ordinateur sur lequel vous êtes en train de travailler.
La ligne d'invite de commandes se lit donc ’pippo’ chez ‘localhost’
: : c'est un séparateur.
~ :c'est le dossier dans lequel vous vous trouvez actuellement., le symbole ~
signifie que vous êtes dans votre dossier personnel, ce qu'on appelle le "Home"
sous Linux. C'est l'équivalent du dossier "Mes documents" de Windows.
$ : ce dernier symbole est très important, il indique votre niveau d'autorisation sur
la machine. Il peut prendre 2 formes différentes :
Présentation de Linux :
Notions de Shell
13
Présentation de Linux :
Notions
P
de Shell
où
- « nom_commande » est le nom de la commande à exécuter;
- « options » : une ou plusieurs options. Les options
permettent de modifier le comportement de la commande.
- « arguments » : les arguments à passer à la commande.
Présentation de Linux :
Notions de Shell
Pour retrouver les commandes qu’on a déjà tapé, sans devoir les réécrire à
nouveau, on utilise les flèches haut ( ) ou ( ) de notre clavier.
Si on désire remonter à des commandes qui remontent à très longtemps,
inutile de se forcer à taper sur la flèche haut pour arriver à la commande
souhaiter.
Dans ce cas, on utilise la commande « history».
14
Présentation de Linux :
Notions
P
de Shell
Raccourcis utiles :
Ctrl+a : début de ligne
Ctrl+e : fin de ligne
Ctrl+l : efface l'écran
Ctrl+k : efface tout à droite du curseur
Ctrl+u : efface tout à gauche du curseur
Ctrl+t : inverser la position des deux caractères
Commandes de base
Commande ls
La commande ls (list) : affiche la liste des fichiers dans le répertoire courant, en
ordre alphanumérique, sauf ceux qui commencent par le caractère “.” ( sauf les
fichiers cachés)
ls [options] [noms]
noms du ficher qu’on veut lister. Si ce paramètre est absent, ls affichera les
fichiers du répertoire courant.
Exemple :
ls -l /home/pippo
Commande –options noms
15
Commandes de base
Commande ls : les principales options
➢ ls -a (all) : tous) affiche tous les ➢ls -S (“size”: taille) affiche les
fichiers (y compris les fichiers .*) fichiers les gros en premier.
31
Commandes de base
Commande cd
La commande cd (change directory) permet de changer le répertoire de travail .
(permet de naviguer dans les répertoires)
cd [répertoire]
Si répertoire n’est pas précisé, alors le nouveau répertoire sera le répertoire
de connexion ($ home)( home c’est votre dossier personnel).
Exemple :
16
Commandes de base
Commande cd
➢ cd : Permet de se placer dans le ➢cd /usr/bin : va dans le répertoire
répertoire personnel de l’utilisateur (home) bin en écrivant tout l’arboresence.
Commandes de base
Commande cd
Remarque:
La commande cd, comme toutes les commandes utilisant des répertoires, permet de
spécifier deux types de chemins:
• Les chemins Absolus: ils faut spécifier toute l’arborescence depuis la racine
. Exemple: cd /home/rep1
Les chemins absolus commencent toujours par la racine (/). Vous devez faire
ensuite la liste des dossiers dans lesquels vous voulez entrer.
17
Commandes de base
◼ Les chemins relatifs : Un chemin relatif est un chemin qui dépend
du dossier dans lequel vous vous trouvez.
Commandes de base
18
Commandes de base
Commandes de base
◼ Les chemins absolus :
Les chemins absolus fonctionnent quel que soit le dossier dans lequel on
se trouve.
19
Commandes de base
◼ Les chemins absolus :
Commandes de base
◼ Les chemins absolus et chemins relatifs :
Si on voulait utiliser le chemin relatifs, il aurait fallut qu’on écrive:
20
Commandes de base
◼ Retour au répertoire home:
Commandes de base
Commande pwd
21
Commandes de base
Commande du
La commande du (disk usage « utilisation du disque ») : affiche les informations
sur la taille qu’occupe les dossiers sur votre disque d’une façon récursive
Exemple :
pippo@localhost :~$ cd /usr/news
pippo@localhost : /usr/news$ du
➢ du -s : affiche juste l’espace total occupé par le dossier, et donc n’affiche pas
l’espace des sous-dossiers. ( pour plus de lisibilité du –sh, combiaison avec -h)
Commandes de base
Commande mkdir
La commande mkdir (make directory) : permet de créer un répertoire s’il n’existe pas.
On peut aussi utiliser l’option -p pour créer un répertoire même si son répertoire parent
n’existe pas.
mkdir [-p] nouveau_répertoire
Exemple :
Si on veut créer le répertoire /tmp/ms/ISI mais le répertoire tmp/ms/ n’existe pas, on
devrait normalement faire ceci:
pippo@localhost :~$ mkdir /tmp/ms/
pippo@localhost :~$ mkdir /tmp/ms/ISI
Si on essaie de le créer, on reçoit le message suivant:
mkdir: cannot create directory ‘/tmp/ms/ISI’: No such file or directory.
On devra faire:~$ mkdir -p /tmp/ms/ISI
22
Commandes de base
Commande rmdir
Commandes de base
Commande cp
La commande cp (copy) permet de copier le contenu d’un fichier dans un autre.
cp [-i] fichier_source repértoire_destination/[nouveau_nom]
cp [-i] [-r] rep_source1 [rep_source2...] répertoire_destination
• Si destination est un fichier
cp fichier1 fichier2 : effectue une copie de fichier1 en un nouveau fichier
appelé fichier2.
• Si destination est un répertoire.
cp fichier1 repertoire : Effectue une copie de fichier1 dans le répertoire
appelé repertoire.
cp fichier1 fichier2 fichier3… repertoire : Copie tous les fichiers vers le
répertoire de destination appelé repertoire.
• cp -i : (i : interactif) demande de confirmation à l’utilisateur dans le cas où le
fichier de destination existe déjà.
• cp -r rep_orig rep_dest : (r : récursive) copie du répertoire tout entier (copier de
manière récursive un répertoire et tout ce qu’il contient).
23
Commandes de base
Commande mv
Commandes de base
Commande rm
Exemple :
• rm fichier1 : destruction du fichier fichier1 .
• rm fichier1 fichier2 : destruction des fichiers fichier1 et fichier2.
• rm fic* : effacement de tous les fichiers qui commencent par fic .
• Option [-i] : demande de confirmation avant supression
24
Commandes de base
Commande touch
Elle est aussi utilisée pour changer l’horodatage d’un fichier ou bien un répertoire.
Commandes de base
Commande cat
Exemple :
~$ cat Fruits
banane
Cerise
Orange
25
Commandes de base
La commande more : affiche des fichiers page par page . (espace pour
descendre d'une page, entrée pour descendre d'une ligne, q pour quitter)
more [fichier...]
less [fichier...]
Commandes de base
Commandes head / tail
26
Commandes de base
Caractères spéciaux
◼ « ? » et « * » sont des caractères des substitutions.
◼ « ? » permet de remplacer une lettre unique.
◼ « * » permet de remplacer plusieurs lettres.
◼ ex : « uni* » représente tous les mots commençant par uni
Commandes de base
◼ La commande wc
54
27
Commandes de base
◼ commande cut
• Exemples d'options:
-x désigne le caractère de séparation de champs
-f indique la liste des champs (par numéro) à afficher
Exemple:
cut -d":" -f1,5 /etc/passwd
55
Commandes de base
◼ La commande sort
sort permet de trier les lignes des fichiers passés en argument de la
commande sort.
• Les options utiles:
-n : tri numérique
-r : inverse l’ordre de tri, donc tri décroissant
-tc : le caractère « c » est défini comme caractère de séparation
entre les champs d’une ligne
-k définit une clé de tri.
28
Commandes de base
◼ La commande split
Coupe un fichier en morceau : split
• La commande split permet de couper un fichier en
morceau (en plusieurs fichiers), en tapant :
split -10 mon_fichier fichier
• Vous allez créer les fichiers fichieraa, fichierab,
fichierac, ... qui contiendront tous 10 lignes.
• Le premier fichieraa contient les 10 premières lignes,
ainsi de suite
57
Commandes de base
◼ La commande cmp
58
29
Commandes de base
◼ La commande uniq
uniq affiche les lignes uniques d'un fichier trié,
ne conservant qu'un seul exemplaire de celles
dupliquées.
-u, --unique
N'afficher que les lignes uniques.
-d, --repeated
N'afficher que les lignes dupliquées.
-c, --count
Afficher également le nombre d'occurrences de chaque
ligne. 59
Commandes de base
60
30
Commandes de base
◼ Un tube (pipe) |
Un tube permet d’établir une liaison directe entre la sortie d'une
commande et l'entrée d'une autre commande.
Commande tee
fichier espion
31
Commandes de base
◼ tac
Exemple :
$ cat fichier
ligne 1
ligne 2
$ tac fichier
ligne 2
ligne 1 63
Commandes de base
◼ nl
La commande nl affiche les fichiers spécifié à la ligne de commande, et
ajoute un numéro devant chaque ligne.
Exemple :
$cat liste.txt
apples
oranges
lemons
$nl liste.txt
1 apples
2 oranges
64
3 lemons
32
Commandes de base
◼ date
date affiche ou initialise la date et l'heure du système
Exemple :
[farid@Serveur1 ~]$ date
lun. oct. 16 10:29:32 WET 2017
Commandes de base
◼ cal
cal (calendar) affiche le calendrier.
Exemple :
[farid@Serveur1 ~]$ cal
octobre 2017
lu ma me je ve sa di
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
66
33
Commandes de base
◼ bc
bc est une calculatrice basique pour les nombres entiers.
Exemple :
[farid@Serveur1 ~]$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software
Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
20 * 30
600 67
Commandes de base
Commandes find
34
Commandes de base
La commande find s'utilise de la façon suivante :
Commandes de base
• Par nom
• Par taille
les fichiers qui font plus de 10 Mo
• Par Type
-type d : pour rechercher uniquement des
répertoires (directories).
• Supprimer les fichiers trouvés
35
Commandes de base
◼ Options des sélection des fichiers et répertoires
◼ name : recherche par nom de fichier
71
Commandes de base
◼ Option de commande
72
36
Commandes de base
◼ Traitement sans confirmation avec -exec
◼ La spécification d’une commande derrière -exec est
soumise à certaines règles :
◼ L’option -exec doit être la dernière de la commande
find
◼ La commande placée derrière -exec doit être
terminée par le paramètre ;. Comme c’est un
caractère spécial, il doit être masqué par un \
73
Commandes de base
Recherche de fichiers et de répertoires (suite)
◼ Exemple:
◼ find . –user karim -exec ls -l {} \;
( affiche le format long de la commande ls
pour les fichiers trouvés)
74
37
Commandes de base
◼ Traitement après confirmation avec -ok
◼ Les mêmes explications s’appliquent également à
l’option -ok, mais celle-ci, demande une
confirmation d’exécution de la commande pour
chaque fichier trouvé. Ce n’est qu’en cas de
réponse affirmative (avec y), que la commande
placée derrière -ok sera exécutée.
◼ Exemple :
◼ Find . -name "Fichier1" -ok rm {} \;
75
Commandes de base
Critères de recherche de noms de fichiers
◼ Modèles de noms de fichier
◼ * : remplace une chaîne vide ou de longueur variable
◼ ? : remplace un caractère unique quelconque
◼ [] : représente une série ou une plage de caractère
◼ [!…] : inverse la recherche
◼ Exemples
◼ a* : les fichiers dont le nom commence par a
◼ a?? : fichiers en trois lettres, commençant par a
◼ [aA]* : fichiers dont le nom commence par un a minuscule ou
majuscule.
◼ [a-m]* : fichiers dont le nom commence par une lettre de la plage
a-m.
38
Commandes de base
Commande grep
◼ Exemple :
39
Commandes de base
79
Commandes de base
◼ Redirection de l’entrée standard
On peut rediriger l’entrée standard d’une commande afin que la
lecture se fasse à partir d’un fichier grâce au symbole« < ».
Syntaxe :
commande < fichier_entree
La commande effectue ses entrées à partir du fichier «fichier_entree »
Exemple :
$ cat < donnees_entree
La commande lit le fichier «donnees_entree » et l’affiche sur la sortie standard,
au lieu de lire les données au clavier.
80
40
Commandes de base
◼ Redirection de la sortie standard
On peut rediriger la sortie standard d’une commande afin que l’écriture se fasse
dans un fichier grâce au symbole « > » ou « >>».
Syntaxe :
commande > fichier_sortie
commande >> fichier_sortie
• Si le fichier « fichier_sortie » n’existe pas, alors il sera créé.
• Si le fichier « fichier_sortie » existe, alors:
- Si le symbole « > » est utilisé alors le fichier « fichier_sortie »
sera écrasé et remplacé par la nouvelle sortie standard de la commande.
- Si le symbole « >> » est utilisé, alors la nouvelle sortie standard
sera rajoutée à la fin du fichier « fichier_sortie ».
81
Commandes de base
Exemple:
- On trie le fichier « fiche1 » et on écrit le résultat dans le fichier
« fiche_trie » au lieu d’afficher le résultat sur l’écran.
$ sort fiche1 > fiche_trie
- On trie le fichier « fiche2 » et on écrit le résultat à la fin du fichier
« fiche_trie ».
$ sort fiche2 >> fiche_trie
Remarque:
On peut rediriger l’entrée et la sortie en même temps.
Exemple:
$ sort < fiche > fichier_trie
82
41
Commandes de base
◼ Redirection de la sortie d’erreurs standard (stderr)
Lors de l’exécution d’une commande, des messages d’erreurs
peuvent être affichés à l’écran si un problème survient en
cours d’exécution. On peut rediriger la sortie des messages
d’erreurs dans un fichier. Pour éviter d’avoir un mélange entre
la sortie standard et la sortie standard des erreurs, on utilise
la chaines « 2> » ou « 2>> ».
83
Commandes de base
Syntaxe :
commande 2> fichier_sortie
commande 2>> fichier_sortie
• Comme pour la redirection de la sortie standard,
- si le fichier sortie n’existe pas alors il sera créé.
- si le fichier sortie existe alors:
- si on utilise la chaine « 2> » alors le fichier sera écrasé et
remplacé par la nouvelle sortie standard.
- si on utilise la chaine « 2>> » , alors la sortie standard se
rajoute à la fin du fichier sortie.
84
42
Commandes de base
Exemple:
Remarque:
85
Les liens
86
43
Notion d’inode
• L’inode (Index NODE ou noeud d'index en
Français), est une structure de données qui
contient les informations fondamentales aux
fichiers, par exemple : le propriétaire du fichier, les
droits d'accès, …. Elle est créée au même moment
qu'un fichier.
Notion de lien
◼ Puisqu’un fichier est identifié par son numéro d’inode et non pas
par son nom de fichier, il est possible de donner plusieurs noms
à un même fichier grâce à la notion de lien : ceci permet
d’accéder au même fichier à différents endroits de
l’arborescence.
◼ Avantage :
• Possibilité d’accéder au même fichier depuis des endroits et des
noms différents → une seule copie sur le disque et plusieurs
façon d’y accéder.
• Si l’un des fichier est modifié, la même modification est prise en
compte par l’autre fichier.
• Simplifier l’accès à des fichiers dont le noms (chemin) est
difficile à retenir.(lien symbolique)
88
44
Notion de lien
◼ Liens physiques
ln <nom_fic> <nouveau_nom_fic>
◼ permet de donner plusieurs noms à un fichier
89
45
Script Shell : Introduction
91
92
46
Script Shell :
Passage de paramètres à un script
Script Shell :
Passage de paramètres à un script
◼ Exemple:
#!/bin/bash
# un autre script
echo "$0 : c'est le mon du script"
echo "$$ : c'est le PID du script"
echo "$* : c'est la liste des arguments passé au script"
echo "$# : c'est le nombre d'argument passé à la commande"
echo "$1 : c'est le premier argument"
echo "$? : c'est le retour de l'echo"
94
47
Script shell :
Les paramètres d’entrée d’un script
95
Script shell :
Les expressions logiques
96
48
Script shell :
Les expressions logiques
97
Script shell :
Les expressions logiques
98
49
Script shell :
Les expressions logiques
99
Script shell :
Structures conditionnelles
◼ Condition simple : if
Cette boucle sert pour les tests et branchements.
Syntaxe :
if condition
then
bloc-instruction1
else
bloc-instruction2
fi
NB
La partie « else... » est optionnelle
100
50
Script Shell :
Structures conditionnelles
◼ if
Pour tester l’existence du fichier «fichier1 » :
#!/bin/bash
if test -e fichier1
then
echo " fichier1 existe "
else
echo " fichier1 n’existe pas"
fi 101
Script Shell :
Structures conditionnelles
◼ Condition imbriquée
if condition1
then
bloc-instruction1
elif condition2
then
bloc-instruction2
else
# si toutes les conditions précédentes sont fausses
bloc-instruction3
fi
102
51
Script Shell :
Structures conditionnelles
◼ Condition imbriquée
#!/bin/bash
if [ $1 = "Bruno" ]
then
echo "Salut Bruno !"
elif [ $1 = "Michel" ]
then
echo "Bien le bonjour Michel"
elif [ $1 = "Jean" ]
then
echo "Hé Jean, ça va ?"
else
echo "Je te connais pas "
fi 103
Script Shell :
Structures conditionnelles
◼ case
Ce test permet de spécifier les commandes à exécuter pour
chacune des valeurs prises par la variable passée en argument.
Syntaxe :
case <variable> in
valeur1) commande1 ;;
valeur2) commande2 ;;
valeur3) commande3 ;;
...
*) comande ;; le « else » du case. Si aucun des tests précédents n'a été vérifié
esac
104
52
Script Shell :
Structures conditionnelles
Ex1:
#!/bin/bash
case $1 in
"Chien" | "Chat" | "Souris") echo "C'est un animal" ;;
"Moineau" | "Pigeon") echo "C'est un oiseau" ;;
*) echo "Je ne sais pas ce que c'est" ;;
esac
105
Script shell :
Structures itératives
◼ Boucle for
Cette boucle sert pour répéter les traitements un nombre de fois
connu.
Syntaxe :
for <variable> in <liste>
do
commande1
commande2
commande3
...
done 106
53
Script shell :
Les boucles
#!/bin/bash
for jour in lundi mardi mercredi jeudi vendredi samedi dimanche
do
echo $jour
done
107
Script shell :
Les boucles
La commande seq affiche une séquence de nombres allant d’un
nombre jusqu'au maximum indiqué, par exemple :
#!/bin/bash
for i in $(seq 1 15)
do
echo $i
done
108
54
Script shell :
Les boucles
◼ Boucles while
Cette boucle sert pour répéter les traitements un nombre de fois
inconnu a priori. Le test de continuité se fait au début de la boucle.
La boucle continue tant que la condition est vraie.
Syntaxe :
while <condition>
do
<commande1>
<commande2>
...
done
109
Script shell :
Les boucles
◼ Boucles while
Pour faire le test de lecture d’une valeur jusqu’à ce que l’utilisateur
entre la valeur « 1 » :
#!/bin/bash
i=0
while [ $i -ne "1" ]
do
read i
done
110
55
Script Shell : Calculs
◼ - pour la soustraction
◼ \* pour la multiplication
◼ / pour la division.
111
Script shell :
Calculs
◼ Par exemple, la commande expr 1 + 2 renvoie « 3 ».
◼ Pour afficher une table de multiplication :
#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9
do
expr $i \* $1
done
◼ Pour compter jusqu’à 20 :
#!/bin/bash
i=0
while [ $i -ne 20 ]
do
i=`expr $i + 1`
echo $i
112
done
56
Script shell :
Calculs
◼ On peut également écrire expr <expression>
sous la forme $((<expression>))
#!/bin/bash
i=0
while [ $i -ne 20 ]
do
#i=`expr $i + 1`
i=$(($i + 1))
echo $i
done
113
Script Shell :
Exercices
◼ Exercice 1
Ecrire un script bash qui permet de lire
un entier et de tester:
•s’il est négatif
•s’il est positif
•s’il est nul.
◼ Solution
#!/bin/bash
echo "Entrez un nombre entier : " elif [ $nombre -gt 0 ]
read nombre then
if [ $nombre -lt 0 ] echo "$nombre est positif"
then else
echo "$nombre est negatif" echo "$nombre est egal à zero "
fi
114
57
Script Shell :
Exercices
◼ Exercice 2:
Trouver le maximum de trois
nombres a, b et c.
◼ Solution :
#! /bin/bash elif [ $b -gt $c ]
a=$1;b=$2;c=$3 then echo "3maximum=$b"
if [ $a -gt $b ] else
then echo "4maximum=$c"
if [ $a -gt $c ] fi
then
echo "1maximum=$a"
else
echo "2maximum=$c"
fi
115
Script Shell :
Exercices supplémentaires
◼ Exercice 1
Ecrire un algorithme qui demande deux
nombres à l’utilisateur et l’informe ensuite
si le produit est négatif ou positif (on inclut
le traitement du cas où le produit peut être
nul). Attention toutefois, on ne doit pas
calculer le produit !
◼ Solution
then
#/bin/bash
echo "Le produit est nul "
echo "Donner un nombre a "
elif [[ $a –gt 0 && $b -gt 0 ]] || [[ $a -lt 0
read a
&& $b -lt 0 ]]
echo "donner un nombre b "
then
read b
echo " Le produit est positif "
If [[ $a -eq 0 || $b -eq 0 ]]
else
echo " Le produit est négatif "
fi
116
58
Script Shell :
Exercices supplémentaires
Exercice 2
Créer un script nommé "table" permettant
d'afficher des tables de multiplication.
"table 5 10" aura pour résultat l'affichage:
0 x 5 = 0
1 x 5 = 5
2 x 5 = 10
3 x 5 = 15
4 x 5 = 20
5 x 5 = 25
6 x 5 = 30
7 x 5 = 35
8 x 5 = 40
9 x 5 = 45
10 x 5 = 50
117
Script Shell :
Exercices supplémentaires
Solution
#! /bin/bash
for V in $(seq 0 $2)
do
echo $V" x "$1" = "$(($V * $1))
done
118
59