Académique Documents
Professionnel Documents
Culture Documents
Licence Smi
Semestre 3
Objectifs de ce cours
2
Operating systems
Régression
linéaire
Validation du module
La validation de ce module :
-La validation du module dépend :
• De la compréhension et l’assimilation du cours
• De la mise en pratique des concepts en cours
• De l’application à travers les activités en classe, les
travaux dirigés et les travaux pratiques
• Des efforts extras : recherches spontanées,
lecture d’autres références, recherches sur le
web……
4
Operating systems
Régression
linéaire
5
Operating systems
Régression
linéaire
6
Operating systems
Régression
linéaire
7
Operating systems
Régression
linéaire
Plan du cours
8
Operating systems
Régression
linéaire
9
Operating systems
Régression
linéaire
Un OS est :
Un traducteur d’une langue étrangère
-Un chef d’orchestre
-Un agent de sécurité
-…………….
11
Operating systems
Régression
linéaire
12
Operating systems
Régression
linéaire
13
Operating systems
Régression
linéaire
Définition 1 :
• Un système d’exploitation est un ensemble de programmes et de
sous-programmes qui ont pour rôle de gérer et piloter les resources
matérielles du dispositif informatique et fournir des services aux
applications et utilisateurs.
• C'est donc le traducteur entre les programmes d'application et
les ressources matérielles d’un ordinateur dans la mesure où il est chargé
d'assurer la liaison entre les ressources matérielles et les applications.
15
Operating systems
Régression
linéaire
OS
Programme A Programme 1
Programme B
Ordre 1
Ordre 4
Matériel
Programme C Programme 2
Programme D
Ordre 3
Ordre 2
16
Operating systems
Régression
linéaire
Définition 2 :
• Un système d’exploitation permet d’organiser et de répartir l’accès des
programmes aux différentes ressources disponibles ainsi que leur ordre
d’exécution
• C'est donc le chef d’orchestre entre les programmes d'application et
les ressources matérielles d’un ordinateur dans la mesure où il est chargé
d'assurer la liaison entre les ressources matérielles et les applications.
17
Operating systems
Régression
linéaire
Définition 3:
• Un système d’ exploitation interdit l’accès direct aux ressources
matérielles par les programme (sauf autorisation)
• C'est donc un agent de sécurité qui veille sur les sécurité et l’intégrité
D’un système informatique
18
Operating systems
Régression
linéaire
Activité 2
• Essayez de penser aux risques liés à l’accès direct des programmes aux
ressources matérielle
Exemple: Accès direct au disque dur ou à la caméra
19
Operating systems
Régression
linéaire
21
Operating systems
Régression
linéaire
22
Operating systems
Régression
linéaire
23
Operating systems
Introduction au système d’exploitation
Unix
24
Régression
linéaire
Historique de Linux
● L’histoire d’UNIX commence aux laboratoires Bell (Filiale d’AT&T).
● Développé a partir de 1969 par Ken Thompson et Dennis Ritchie pour
leurs besoins propres en s’inspirant du système MULTICS. Il a été écrit
“Unics” en premier lieu (UNiplexed Information and Computing
System).
Objectif : un système interactif qui met l’accent sur les utilitaires de
développement de logiciels, le partage de fichiers et les outils de
documentation
● 1973:
- besoin de rendre UNIX portable sur d’autres Ordinateurs,
- dans ce but, Denis Ritchie réécrit UNIX en langage C qui a été
crée pour l’occasion par Brian Kernighan et Dennis Ritchie.
Ceci explique les liens profonds entre le langage C et UNIX.
25
Operating systems
Régression
linéaire
Historique de Linux
26
Operating systems
Régression
linéaire
Historique de Linux
Historique de Linux
28
Operating systems
Régression
linéaire
Historique de Linux
La fin des années 80 est marquée par une croissance sans précédent
du nombre de systèmes Unix.
On trouve alors trois grandes familles: les versions basées sur System
V, celles issues de BSD et les versions Xenix sur micro.
29
Operating systems
Régression
linéaire
Historique de Linux
30
Operating systems
Régression
linéaire
Historique de Linux
⚫ Linus Torvalds, étudiant à l'université d'Helsinki, a développé son
propre noyau OS (LINUX).
⚫ La première version remonte à 1991. Puis de nombreux
développeurs ont participé à l'élaboration des premières
distributions avec comme support de communication : internet.
⚫ Linux est distribué sous la licence GPL (General Public Licence)
=> tout acquéreur peut librement utiliser et même commercialiser
le produit. Cependant, toutes les modifications doivent à leur tour
être librement et gratuitement disponibles pour la communauté.
⚫ Distributions GNU/LINUX
31
Operating systems
Régression
linéaire
33
Operating systems
Régression
linéaire
34
Operating systems
Régression
linéaire
Connexion
● Connexion :
Pour pouvoir travailler sous Unix il faut se connecter
Il faut s’identifier à l'aide d'un nom d'utilisateur et d'un mot de
passe. :
Login : <tapez ici votre nom d’utilisateur>
Password : <tapez ici votre mot de passe>
Exemple sous Ubuntu :
Déconnexion
38
Operating systems
Régression
linéaire
Le shell
40
Operating systems
40
Régression
linéaire
41
Operating systems
41
Régression
linéaire
Le shell
Les fichiers
● Un fichier dans UNIX est une séquence d'octets, le noyau n'impose
aucune structure spécifique aux fichiers
● Le rôle d'un fichier est de conserver, de traiter et transmettre de
l'information
43
Operating systems
Régression
linéaire
Les fichiers
44
Operating systems
Régression
linéaire
Les fichiers
● Activité 3:
-Quelle est l’organisation des systèmes sous Unix/Linux
-Quelle est la différence d’un chemin absolu et un chemin relatif pour
Accéder à un fichier?
45
Operating systems
Operating Systems
Licence Smi
Semestre 3
Objectifs de la séance 2
2
Operating systems
Régression
linéaire
Les fichiers
● Un fichier dans UNIX est une séquence d'octets, le noyau n'impose
aucune structure spécifique aux fichiers
● Un fichier est un ensemble d’information codée sous forme binaire,
qui a un nom est qui stocké dans un emplacement (répertoire) avec
un chemin d ’accès
● Sur le disque dur, tout est octets, c’est la réalité physique des
fichiers, Unix se charge de les organiser et de les nommer et ainsi
permttre à l’utilisateur d’utiliser les informations stockées sur le
disque dur
3
Operating systems
Régression
linéaire
Les fichiers
4
Operating systems
Régression
linéaire
5
Operating systems
Régression
linéaire
6
Operating systems
Régression
linéaire
Séparateur
de niveaux
• situer un fichier dans l’arborescence :
• son nom
• son chemin d’accès: /home/etudiant1
Les niveaux sont séparés par une la barre oblique / (slash)
8
Operating systems
Régression
linéaire
Activité 1
9
Operating systems
Régression
linéaire
un i-nœud
Liste des i-nœud : contient plusieurs entrées. Chaque fichier y possède une entrée
et contient les caractéristiques de chaque fichiers (les attributs) et les adresses des
blocs de données.
Bloc des données : contiennent les données des fichiers. Les blocs libre sont
répertoriés dans le super bloc (table d’allocation des blocs) 11
Operating systems
Régression
linéaire
Cherchez chez vous sur la structure des I-Nodes et leur rôle dans le système Linux
12
Operating systems
Régression
linéaire
Déconnexion
15
Operating systems
Régression
linéaire
Le shell
17
Operating systems
17
Régression
linéaire
18
Operating systems
18
Régression
linéaire
Le shell
20
Operating systems
Régression
linéaire
Bloc de commandes
Syntaxe :
commande1 && commande2 && ... && commandeN
Types commandes
24
Operating systems
Régression
La commande echo
linéaire
La commande echo
25
Operating systems
Régression
linéaire
La commande Echo
Exemples :
$> echo * == > affiche le contenu du répertoire courant
rep1 fic
$> echo ‘*’ == > affiche *
*
$> echo ‘bonjour l’ami’ =nombre impaire de ‘
== > le shell affiche le prompt secondaire (>)
>
$> a=6
$> echo ‘ la valeur de a est : $a ‘
la valeur de a est :$a
26
Operating systems
Régression
linéaire
La commande echo
27
Operating systems
Régression
linéaire
La commande echo
Comment afficher :
1- je m'appelle "toto "
2- je m'appelle ‘toto ‘
3- je m'appelle \toto\
28
Operating systems
Régression
linéaire
● touch :
■ permet de créer un fichier s’il n’existe pas, et s’il existe d’appliquer
une date à ce fichier (modifier sa date d’accès et de sa date de
modification)
Exemple :
touch test.log
1er cas : le fichier test.log n’existe pas == > ce dernier sera crée
2em cas : le fichier test.log existe
== > applique la date et l’heure courante au fichier test.log
comme date et heure d’accès et de dernière modification
29
Operating systems
Régression
linéaire
● mkdir :
■ permet de créer un répertoire vide
Syntaxe :
mkdir [options] [nom répertoire]
■ Options :
-p : Crée les répertoires parents (intermidéaire) s’ils n’existaient
pas
== > crée un répertoire et ces sous répertoires
exemple :mkdir –p rep1/test/image
-m : Donne des droits d'accès spécifiques 30
Syntaxe :
cd [Chemin (absolu ou relatif) vers le répertoire]
● commandes utiles :
cd . : laisse dans le répertoire courant
cd .. : monter d'un niveau dans la hiérarchie
cd ../.. : monter de 2 niveaux dans la hiérarchie
cd ~ : aller directement dans le répertoire de l'utilisateur
cd - : revenir au répertoire précédent
● Pour connaitre la position actuelle ou du répertoire courant : pwd
31
Operating systems
Régression
linéaire
32
Operating systems
Régression
linéaire
home
etudiant
TP
TP1 TP2
33
Operating systems
Régression
linéaire
34
Operating systems
Régression
linéaire
La commande ls
● Les options de ls :
■ -l : permet d'obtenir l'ensemble des informations relatives à
chaque fichier du répertoire :
Type de fichier
$ ls −l droits d’accès groupe taille(octets) nom du fichier
drwxr−xr−x 2 toto grp1 512 Mar 10 15:09 CVS
−rw−r−−r−− 1 toto grp1 744 Mar 10 14:17 Makefile
−rw−r−−r−− 1 toto grp1 8117 Mar 10 15:23 chap1.text
La commande ls
Exemple :
ls -l [a-r]?*.txt
== > lister tous les fichiers commençant par les lettres de a à r,
possédant au moins un second caractère avant la terminaison txt
37
Operating systems
Mohammed Bensalah & Younes Kabbadj
Objectifs de la séance 3
4
Operating systems
Des premiers ordinateurs au premier système d’exploitation
5
Operating systems
Des premiers ordinateurs au premier système d’exploitation
Années 1955-1965
L’exécution des programmes avait lieu comme suit:
1. Les programmes étaient créés
2. L’ensemble des programmes à exécuter étaient ensuite
transféré sur des bandes magnétiques vers une autre
machine
3. La bande magnétique était transférée vers une autre
machine plus puissante pour l’exécution
4. Les résultats de toutes les tâches étaient stockées sur une
bande magnétique
5. Les résultats sont transférées via bande magnétique et
imprimées sur une autre machine pour l’impression
8
Operating systems
Des premiers ordinateurs au premier système d’exploitation
9
Operating systems
Des premiers ordinateurs au premier système d’exploitation
Activité 1
En utilisant ce que vous avez appris des dernières diapos
pouquoi est ce que les premiers systèmes d’exploitation ont été
créés selon vous?
10
Operating systems
Rappel sur la commande echo
11
Operating systems
Rappel sur la commande echo
Operating systems 12
Rappel sur la commande echo
13
Operating systems
Régression
linéaire
14
Operating systems
Rappel sur le chemin absolu/relatif
• Pour organiser les fichiers Unix a créé pour les utilisateurs une
structure sous forme d’arbre l’arborescence des fichiers
• L’ arborescence des fichiers est indépendante de l’organisation
physique des fichiers
• Les fichiers sont en réalité stockés comme des blocs binaires dont
l’emplacement physique qui est défini dans le i-node
• Cette organisation physique est transparente pour les utilisateurs
15
Operating systems
Rappel sur le chemin absolu/relatif
16
Operating systems
Rappel sur le chemin absolu/relatif
17
Operating systems
Rappel sur la commande cd
18
Operating systems
Régression
linéaire
19
Operating systems
Régression
linéaire
Utiliser la commande cd
Syntaxe :
cd [Chemin (absolu ou relatif) vers le répertoire]
• commandes utiles :
cd . : laisse dans le répertoire courant
cd .. : monter d'un niveau dans la hiérarchie
cd ../.. : monter de 2 niveaux dans la hiérarchie
cd ~ : aller directement dans le répertoire de l'utilisateur
cd - : revenir au répertoire précédent
• Pour connaitre la position actuelle ou du répertoire courant : pwd
20
Operating systems
Régression
linéaire
Exemples de la commande cd
21
Operating systems
Le déplacement avec la commande cd
Activité 2 :
En considérant que vous connaissez l’arborescence de votre système
de fichiers.
1-Je suis dans le répertoire home et je veux me déplacer vers etc en
utilisant le chemin absolu? En utilisant le chemin relatif?
2-Je suis dans le répertoire etudiant et je veux me déplacer vers etc
en utilisant le chemin relatif.
/
etc home
etudiant
22
Operating systems
Régression
linéaire
23
Operating systems
Lister les fichiers
ls sans option :
Lister le contenu du répertoire courant :
Exemple :
ls -l [a-r]?*.txt
== > lister tous les fichiers commençant par les lettres de a à r,
possédant au moins un second caractère avant la terminaison txt
26
Operating systems
La commande ls
Les options de ls :
-r : affiche les répertoires uniquement
-R : afficher la liste des fichiers dans des sous répertoire
== > affiche le contenu du répertoire et de tous ces sous-
répertoires
-a : Afficher aussi les fichiers cachés (commençant par un point)
Afficher le listing page par page == > ls | less
-i : pour afficher le numéro de l’inode
27
Operating systems
La commande ls
28
Operating systems
Les options de la commande ls
29
Operating systems
Les options de la commande ls
30
Operating systems
La commande ls
31
Operating systems
Déplacer des fichiers : la commande mv
32
Operating systems
Déplacer des fichiers : la commande mv
33
Operating systems
Régression
linéaire
35
Operating systems
Supprimer un répertoire : la commande rmdir
36
Operating systems
Mohammed Bensalah & Younes Kabbadj
Objectifs de la séance 4
• La copie d’un fichier ou d’un répertoire signifie que la source reste intacte
• Pour la copie des fichiers, si vous spécifiez le nom de la destination, le fichier
destination aura le même contenu que le fichier source mais pas forcément
le même nom
Exemples: cp ./directory1/cmd1.sh ./directory2/cmd2.sh
cp ./directory1/cmd1.sh ./directory2
La copie du fichier du premier exemple aura le nom cmd2.sh alors que dans le
deuxième exemple elle aura le nom cmd1.sh
• Pour la copie des répertoires, le répertoire de destination contiendra une
copie du répertoire source mais pas forcément son contenu sauf si on utilise
le -R
Exemples : cp directory1 directory2
cp –R directory 1 directory2 4
Operating systems
Les liens: hard and symbolic links
• Les systèmes Linux et Unix et dans une moindre mesure les systèmes Windows
disposent d’un dispositif pour faciliter l’accès et pour permettre la récupération des
fichiers (recovery). Ce moyen s’appelle les liens.
• Les liens sont de deux sortes : les liens symboliques et les liens physiques:
1-Les liens physiques : Comme leur nom l’indique, les liens physiques ont une
signification physique (côté disque dur). Autrement c’est une copie des données
du le fichier originel.
2-Les liens symboliques permettent d’accéder aux fichiers ou un répertoire à partir
d’un nom différent. Ces liens ne sont pas des copies des données mais plutôt des
raccourcis vers les données.
• Les liens physiques sont créés uniquement pour les fichiers alors que les
logiques sont créés pour des fichiers ou des dossiers
5
Operating systems
Les liens physiques : ln -P
• La création d’un lien physique se fait à partir d’un fichier source vers un fichier
destination avec la commande ln ou ln -P
ln -P <fichiers existant > <lien créé>
Ou ln <fichiers existant > <lien créé>
exemple : ln –P file link1_file
• Le lien créé est un fichier qui a un nom et qui partage le même contenu avec le
fichier originel ainsi que le même i-node :
6
Operating systems
Les liens physiques : ln -P
• La création d’un lien symbolique se fait à partir d’un fichier ou un dossier source par
ln -s
ln -s <fichiers existant ou répertoire existant > <lien créé>
exemple : ln –s rep link1_rep
• Le lien créé est une sorte de raccourci pour accéder au fichier ou au répertoire
originel, ils ne partagent pas le même i-node et la suppression du répertoire originel
entraine la suppression des données.
8
Les liens symboliques: ln -s
9
Operating systems
Copier un fichier ou un répertoire : cp
Activité 1 :
1. Si la position courante est le home dir de l'utilisateur toto,
c’est à dir que la commande pwd affiche :
/home/toto
Comment faire pour copier le fichier /home/toto/linux/tp dans le
répertoire courant?
2. Comment faire pour copier le répertoire courant avec son
contenu dans le répertoire de chemin absolu
/home/toto/personnel
3. Quelle est la différence entre :
cp –R . /home/toto/linux/tp et cp . /home/toto/linux/tp
10
Operating systems
Les liens
Activité 2 :
1-Nous avons un répertoire dir qui contient un fichier nommé
file1 et notre emplacement courant est le même répertoire .
Comment faire pour créér un lien physique nommé copy_file1
Pour le fichier file1
2-Le fichier file1 contenait le texte ‘’ texte file1 ’’. Nous
modifions ce texte par ‘’texte file1 modifié’’. Que contient
désormais copy_file1?
11
Operating systems
Les droits d'accès à un fichier
12
Operating systems
Les droits d'accès à un fichier
14
Operating systems
Changer les droits d'accès à un fichier
• La commande chmod :
- la commande chmod permet de changer les droits d'accès d'un
fichier donné.
- Seul le propriétaire d ’un fichier peut modifier ses droits d ’ accès
• Il existe deux notations (méthodes) pour modifier les permission :
1- notation symbolique
2- notation octale
15
Operating systems
Changer les droits d'accès à un fichier
La notation symbolique :
syntaxe :
chmod [ugoa][+ - =] [rwx] nom_fichier
16
Operating systems
Changer les droits d'accès à un fichier
Exemples :
chmod go+w file == > autorisation d’écriture au groupe et aux autres
chmod a=rw file == > autorisation de lecture et d’écriture à tout le
monde
chmod go-rw file == > retirer les autorisations de lecture d’écriture au
groupe et aux autres
chmod u+x,g-w+x,o=r file == > ajouter x au propriétaire, enlever w au
groupe et ajouter x au groupe,
affecter uniquement la lecture aux autre
17
Operating systems
Changer les droits d'accès à un fichier
La notation octale :
• Les permissions du propriétaire ou du groupe ou bien des autres
sont stockées sous forme de nombre octale.
représentation par 3 bits:
r w x
Numéro du bit : 1 2 3
18
Operating systems
Changer les droits d'accès à un fichier
La notation octale :
19
Changer les droits d'accès à un fichier
La notation octale :
Pour changer les droits d’accès d’un fichier :
syntaxe :
chmod abc filename
0 ≤ a,b,c ≤ 7
a désigne les droits du propriétaire
b désigne les droits du groupe
c désigne les droits des utilisateurs
20
Operating systems
Changer les droits par défaut : umask
Activité 3 :
1-Créer un répertoire nommé Dir.
Changer les droits d’accès pour rwx------ en octal.
2-Expliquer les droits d’accès précédents.
3-Rajouter au groupe et aux autres le droit de lecture.
22
Operating systems
Redirection d’entrées/sorties sous Unix
24
Operating systems
Redirection de la sortie standard
0 1 > fichier
Entrée standard >>
=clavier par défaut
2 Sortie erreur standard
25
Operating systems
Redirection de la sortie standard
Affichage de la sortie de la commande (résultat de
la commande) à l’écran (par défaut)
Exemple :
Redirection de la sortie de la
commande vers le ficher res.txt
Si le fichier res.txt existait son contenu initial est effacé et remplacé par la sortie de
la commande
26
Operating systems
Redirection de la sortie des erreurs
Avec :
fichier_entree : fichier régulier vers lequel l’entrée standard est
rediriger. La commande va lire dans fichier_entree.
fichier_sortie : le fichier régulier vers lequel est rediriger la sortie de la
commande .
29
Operating systems
Afficher le contenu d’un fichier :cat
30
Operating systems
Afficher le contenu d’un fichier :cat
31
Operating systems
Tube (pipe)
• La sortie d’une commande peut être reliée à l’entrée d’une autre
en utilisant | , dans ce cas là la sortie de la première commande.
C’est l’équivalent de < pour deux commandes.
La redirection entre commande est appelée pipe (tube) , elle est
symbolisée par la caractère |
Syntaxe :
cmd1 | cmd2
== > permet de redirigé la sortie de cmd1 pour servir d’entrée à
cmd2
Exemple :
echo ‘’bonjour’’ | cat
echo ‘’bonjour ’’ | cat >fichier1 32
Operating systems
Statistiques de fichiers :wc
33
Operating systems
Statistiques de fichiers :wc
Exemple :
34
Operating systems
Extraire des données dans un fichier
Avec S= , ou ; ou \ ou : etc
36
Operating systems
wc, cut, cat , et tubes
Activité 4:
1-Comment afficher le nombre de caractères d’un fichier f1: wc avec l’une des options
suivantes (-w, -c, -l).
2-Rediriger la sortie de la commande cat qui lit un fichier f1 vers un fichier nommé f2.
Que contiendra le fichier f2? Utiliser l’un des trois symboles (>,<,|)
3-Un fichier contient le texte suivant
Agadir: Maroc:80000
Rabat:Maroc:10000
Comment afficher uniquement le premier champs de ce texte ?
Comment afficher le premier au deuxième champs de ce texte?
4-En utilisant les tubes et les commandes echo et cat , extraire le premier et le
deuxième mot de la phrase
“Ceci est la phrase à découper "
37
Operating systems
Operating Systems
Licence Smi
Semestre 3
3
Operating systems
Recherche des fichiers : find
Exemples :
find . -type d -name ''Unix*''
recherche dans le répertoire courant de tous les répertoires dont le nom
commence par Unix
4
Operating systems
Recherche des fichiers : find
Options principales:
-user : recherche par propriétaire
ex : find . –user scott
find . ! –user scott == > ce qui n’appartient pas à scott
Options principales:
-user : recherche par propriétaire
ex : find . –user scott
find . ! –user scott == > ce qui n’appartient pas à scott
Exemple :
recherche dans le répertoire courant de tous les fichier modifiés il y a 5 jours
find . –mtime +5
recherche dans le répertoire courant de tous les fichier modifiés il y a 5
jours et dont le nom se termine par .txt
7
Operating systems
Recherche des fichiers : find
L’Option –exec:
L’option –exec permet d’appliquer une commande au résultat de la
recherche
Syntaxe:
find rep_source -options –exec commande {} \;
9
Operating systems
Recherche des fichiers : find
Activité :
Utiliser find pour trouver:
Les fichiers modifiés il y a moins de 5 jours et dont la taille soit
supérieure à 30 K
Les fichiers se terminant par file mais modifiés il y a plus de 5
jours .
Seulement les fichiers réguliers ayant l’extension .txt ou dont le
nom contient le mot file à la fin
10
Operating systems
Entête et fin de fichier : Head et Tail
12
Operating systems
Entête et fin de fichier : Head et Tail
Activité :
Comment faire pour afficher les 5 premières lignes d’un fichier
file?
Comment utiliser tail pour afficher à partir de la dixième ligne du
fichier file?
Comment utiliser les deux pour afficher entre la 5ieme et la 7ieme
ligne?
13
Operating systems
Operating Systems
Licence Smi
Semestre 3
2
Operating systems
La commande Grep
Autres options:
-n : affiche, en plus, le numéro de ligne dans lequel figure le mot
recherché
-v : affiche les lignes ne contenant pas le mot
-i : permet d’ignorer la casse (pas de différence entre majuscules et
minuscules)
-c: affiche seulement le nombre de lignes contenant la chaîne,
-l : affiche les fichiers où figure au moins une fois le motif cherché
-F: pas d’interprétation des expressions régulières, le contenu est
cherché tel qu’il est (utile pour les caractères ^, $, ….)
--color : permet de colorier les résultats
6
Operating systems
La commande Grep
Exemples :
grep tex file1 : cherche les lignes contenant ‘tex’ dans le fichier file1
grep -i tex file1: cherche les lignes contenant ‘tex’ dans le fichier
file1 sans différence entre majuscules et minuscules
grep –R tex . : cherche les lignes des fichiers contenant ‘tex’ dans
tous les fichiers du répertoire courant ou l’un de ses sous-répertoires
grep –w tex file : cherche exactement le mot ‘tex’ dans le fichier file,
le mot doit être tout seul exemples:
tex word
this is a tex
find tex in that text
7
Operating systems
La commande Grep
Exemples :
grep –v tex ./* : affiche les lignes ne contenant pas tex dans tous
les fichiers du répertoire courant
grep -R "texte" ./: affiche les lignes contenant “texte” dans les
fichiers des répertoires ou sous-répertoires du répertoire
courant
grep –c "texte" file: affiche le nombre d’occurrences de "texte"
dans file sans afficher les lignes dans lequelles elles apparaissent
8
Operating systems
Les expressions régulières
crochet.
Les expressions régulières
11
Operating systems
Les expressions régulières
Exemples:
Grep –R –-color ^S . : Cherche les lignes qui commencent par ‘S’
majuscule dans le repertoire courant et tous ses sous-fichiers
grep –R .ext . : Cherche les lignes qui contiennent un caractère
quelconque suivi de ‘ext’ dans le repertoire courant et tous ses
sous-fichiers
grep ‘’[abcd].n ’’ unix* : Cherche les lignes contenant un caractère a
ou b ou c ou suivi de n’importe quel caractère suivi de n dans les
fichiers dont le nom commence par unix
grep –R ‘’n* ’’ . : Cherche les lignes qui contiennent le caractères n
qui se répète 0 ou plusieurs fois dans le repertoire courant et tous
ses sous-fichiers
12
Operating systems
Les expressions régulières
Exemples:
grep –R –n ‘’\<korn’’ . : Cherche et numérote les lignes qui
contiennent l’expression korn en début de mot dans le
repertoire courant et tous ses sous-fichiers
grep –R –n ‘’korn \>’’ . : Cherche et numérote les lignes qui
contiennent l’expression korn en fin de mot dans le répertoire
courant et tous ses sous-fichiers
13
Operating systems
Les expressions régulières et grep
Activité :
1- Chercher les lignes commençant par la lettre ‘a’ dans tous les
fichiers ou sous-fichiers du répertoire courant
2-Afficher juste les noms des fichiers qui contiennent la chaine
‘texte’ ou ‘texse’ dans tous les fichiers ou sous-fichiers du
répertoire courant
3-Afficher en couleurs les lignes des fichiers qui contiennent une
lettre entre ‘a’ et ‘z’ suivi du caractère ‘s’ qui se répète 1 ou
plusieurs fois
4-Afficher les lignes qui contiennent {en début de ligne suivi de
n’importe quel caractère
14
Operating systems
Le découpage d’un fichier à travers split
15
Operating systems
Le découpage d’un fichier à travers split
16
Operating systems
Mohammed Bensalah & Younes Kabbadj
Objectifs de la séance 5
2
Operating systems
Troisième génération des ordinateurs
3
Operating systems
Troisième génération des ordinateurs
5
Operating systems
Troisième génération des ordinateurs
Raisons de l’introduction de la troisième génération:
• Les fabricants se sont rendu compte qu’il y a deux
familles distinctes de machines tels que la 7094 et la
1401 pour IBM. La 7094 était utilisée pour les tâches
plutôt pour des calculs scientifiques et la 1401 par les
banques et assurances.
• Deux familles différentes = Des programmes
incompatibles
• Certaines entreprises évoluaient en besoin et se devait
de passer à des machines plus puissantes les
anciens programmes étaient incompatibles
6
Operating systems
Troisième génération des ordinateurs
Introductions du système/360 :
• IBM a créé une série de machine compatibles logiciellement
nommées système/360
• La série de machines ne différaient que par les caractéristiques
(plus ou moins performantes)
• La série se devait de satisfaire des besoins plus ou moins
importants
• La série 360 était l’une des premières à utiliser les circuits
intégrées (la révolution du silicone)
• Les descendants de ces machines existent encore actuellement :
la série Z surtout utilisées pour héberger des bases de données
géantes ou des serveurs Web
7
Operating systems
Troisième génération des ordinateurs
La série Z descendante actuelle de la 360
8
Troisième génération des ordinateurs
Introduction de l’OS/360:
• Pour cette série IBM a créé un OS qui se devait
de répondre aux besoins suivants:
– Il fallait qu’il tourne sur des machines plus ou
moins puissantes
– Il fallait qu’il marche sur des machines avec
beaucoup ou peu de périphériques
Un OS avec des millions de lignes de code a
été écrit par des milliers de programmeurs
9
Operating systems
Troisième génération des ordinateurs
Avantages de l’OS/360 , Système/360:
•Dans les anciennes machines dans les phases d’I/O (entrées
/sorties) le CPU restait inactif
•Pour les machines telles que le 7094, ce temps était court
et donc CPU était peu inactif
•Dans les machines telles que le 1401, ce temps était de
l’ordre de 80 à 90%
•L’OS /360 utilise des partitions mémoires pour chaque
programme
•Lorsqu’un programme fait des entrées sorties, un autre
programme est chargé à partir de la mémoire
•C’est le principe de la multi-programmation
Le CPU est utilisé presque à 100% du temps
10
Operating systems
Troisième génération des ordinateurs
Partitionnement de la mémoire :
11
Operating systems
Troisième génération des ordinateurs
Avantages de l’OS 360/système 360
•Dans la génération antérieure on avait besoin de
deux types de machines, une pour rassembler les
programmes et l’impression et l’autre pour
l’exécution des programmes
•Avec les 360 les programmes pouvaient être
copiés sur le disque et dès qu’une partition était
libre le programme était chargé en mémoire
•C’est le concept de spooling
Plus besoin de deux familles différentes de
machines
12
Operating systems
Troisième génération des ordinateurs
(A suivre…..)
13
Operating systems
Troisième génération des ordinateurs
Activité :
1. Expliquer en quelques phrases les raisons
transition entre la deuxième et troisième
génération.
2. Quelles sont les deux révolutions logicielles au
niveau de l’OS qui ont permis cette transition?
3. Quelles sont les révolutions au niveau du matériel
qui ont permis cette transition?
14
Operating systems
Les expressions régulières étendues et la commande egrep
15
Operating systems
Equivalences et différences entre grep et egrep
16
Operating systems
Les expressions régulières étendues et la commande egrep
17
Operating systems
Les expressions régulières étendues et la commande egrep
18
Operating systems
Les expressions régulières étendues et la commande egrep
20
Operating systems
Les expressions régulières étendues et la commande egrep
21
Operating systems
Les expressions régulières étendues et la commande egrep
22
Operating systems
Les expressions régulières étendues et la commande egrep
Activité :
Effectuer les recherches suivantes en utilisant grep (sans –E) et
egrep:
1. Rechercher les fichiers qui contiennent le mot ‘’bonjour ’’
2. Rechercher les lignes qui commencent par un ‘e’ suivi du
caractère ‘s’ qui se répètent deux fois.
3. Rechercher les lignes qui contiennent le mot ‘linux’ ou le mot
‘unix’
4. Rechercher les lignes qui contiennent le caractère ‘|’
5. Rechercher les lignes qui contiennent l’une des deux
expressions suivantes ‘linux|unix’ ou ‘unix|linux’
23
Operating systems
Mohammed Bensalah & Younes Kabbadj
Objectifs de la séance 8
2
Operating systems
De la troisième vers la
quatrième génération
Rappel sur la multi-programmation
4
Operating systems
Calvaires de la multi-programmation
Inconvénients de la multiprogrammation
• Avec les ordinateurs de troisième génération, un
programmeur devait attendre beaucoup d’heures pour
compiler leur programme et le tester puisqu’il attend
l’exécution de plusieurs programmes en parallèle
• Si il y a un problème dans le code, il devait attendre
plusieurs heures avant de le corriger et d’attendre à
nouveau
• Un ; mal placé pouvait impliquer de telles situations
5
Operating systems
Besoin de temps-réparti
6
Operating systems
Développement du CTSS et le projet Multics
8
Operating systems
Influence de Multics
9
Operating systems
Influence de Multics
10
Operating systems
Tri de fichiers
La commande sort
1 florent 36 1 arnaud 30
1 arnaud 30 1 florent 36
3 serges 78 2 arnaud 78
6 bernard 100 3 serges 78
2 arnaud 78 4 bernard 90
4 bernard 90 6 bernard 100
9 arnaud 12 9 arnaud 12
• Nous voulons utiliser la commande sort pour trier le fichier selon le premier
champs : sort file_sort (résultat à droite)
12
Operating systems
La commande sort
1 florent 36 1 arnaud 30
1 arnaud 30 2 arnaud 78
3 serges 78 9 arnaud 12
6 bernard 100 4 bernard 90
2 arnaud 78 6 bernard 100
4 bernard 90 1 florent 36
9 arnaud 12 3 serges 78
13
Operating systems
La commande sort
1 florent 36 9 arnaud 12
1 arnaud 30 1 arnaud 30
3 serges 78 1 florent 36
6 bernard 100 2 arnaud 78
2 arnaud 78 3 serges 78
4 bernard 90 4 bernard 90
9 arnaud 12 6 bernard 100
14
Operating systems
La commande sort
15
Operating systems
Shell Scripting
Que sont les scripts shell?
17
Operating systems
Utilité des scripts shell
#!/bin/bash
#commentaires ici
echo ‘’hello shell…’’
22
Operating systems
Activité :
1. Créer un script Shell qui va utiliser trois paramètres. Ces trois
paramètres doivent être affichés à l’écran ainsi que le nom du script
et le nombre de paramètres
2. Quels droits sont nécessaires pour le lancement du script par tous
les utilisateurs? Quelle commande permettra de faire cela?
3. Comment lancer le script avec trois paramètres?
4. Quels sont les résultats attendus à l’écran?
23
Operating systems
Création de variables et accès à leur valeur
• Pour créer une variable il suffit de déclarer son nom et de lui attribuer
une valeur, son nom peut être composé de majuscules, de minuscules
et de tous caractère qui n’a pas de signification spéciale. Le premier
caractère ne doit pas être un chiffre
– Exemples: x=34
– y=‘’Miséricode’’
• Une variable peut prendre différentes types de valeurs :
– Numérique
– Chaine de caractères
– Booléenne (0 ou 1)
• On peut accéder à la valeur d’une variable en précédant son nom par
$:
– Exemple : echo $x
24
Operating systems
Manipulation de variables : Affectation et utilisation
25
Operating systems
Manipulation de variables : Traitement des espaces
27
Operating systems
Manipulation de variables : Protection du nom de la variables
par {}
Les variables et les accolades :
• On utilise les accolade {} pour identifier (ou délimiter) une variable
lorsqu’il y a possibilité de confusion de l’interprèteur Shell.
Exemple 1 (l’exemple précédent) : on souhaite afficher new_file
— $> var1=new ; var2=file
— $> echo ${var1 }_${var2}
Exemple 2: On souhaite copierun fichier nommé file1 dans un dossier
nommé file2
— $> a=file
— $> cp ${a}1 ${a}2
est équivalent à $> cp file1 file2
et non pas : $> cp $a1 $a2
28
Operating systems
Manipulation de variables: Lecture des valeurs des variables
30
Operating systems
Manipulation de variables: Protection de valeurs de variables
32
Operating systems
Activité :
1-Ecrire un script qui prend comme arguments le rayon du cylindre d’un
cercle et sa hauteur et qui calcul et affiche ensuite la surface de ces côtés
et son volume. Pi doit être une constante dans le programme
2-Ecrire un programme qui copie le contenu de deux fichiers dans un
troisième fichier. Les trois fichiers sont donnés en argument. Le
programme affiche ensuite le contenu du troisième fichier.
33
Operating systems
Systèmes d’exploitation 1
Partie 2 :
Programmation shell
●Programmation shell
▪ Le shell n’est pas qu’un simple interpréteur de commande
▪ Le shell dispose d'un véritable langage de programmation avec notamment :
- la gestion des variables,
- des opérations sur variables,
- des tests et des boucles,
- des fonction
▪ Le langage shell est un langage interprété (convertis en code machine à
la volée)
● Objectif de la programmation shell :
- mettre en place des scripts shell
= programme regroupant une séquence de commande Shell
2
Script shell
Quand un script est lancé, un nouveau processus « fils » est créé qui va exécuter
chacune des commandes.
3
Script shell
● Une fois le script lancé il sera interprété par le Shell disponible sur le
système :
- Bourne Shell ( l'antique shell de Steve Bourne ) : /bin/sh
- Bash (Bourne Again Shell, le shell de Linux ) : /bin/bash
- Korn Shell : /bin/ksh
- c-Shell : lbin/csh
== > connaître le Shell utilisé :
echo $SHELL
4
Script shell
La ligne #!/bin/sh précise le type de shell à utiliser (sh pour Bourne Shell)
5
Eléments de base de la programmation shell
1- Affichage :
- La commande echo
exemple : $> echo bonjour
2- Les commentaires :
Pour commenter une ligne on doit la précéder d’un dièse ( #)
3- Les variables
6
Les variables
7
Les variables
● Déclaration et affectation :
-Par défaut les variables ne sont pas typées
- Une variable n’a pas à être déclarée explicitement.
- Une variable est déclarée dès qu'une valeur lui est affectée.
- L'affectation est effectuée avec le signe « = », sans espace avant ou après le
signe =
Syntaxe de l’affectation :
variable=valeur
Attention : une variable qui n’a jamais été affecté (inexistante) est considéré comme
une chaîne vide!
9
Manipulation des variables
10
Manipulation des variables
● Traitement des espaces !! :
Exemple :
soit la commande suivante :
$> c=bonjour les amis
== > ko
== > il faut soit verrouiller les caractères spéciaux un par un \ soit de les mettre
entre guillemets ou apostrophes.
c= bonjour\ les\ amis # Solution lourde
c="bonjour les amis " # Solution correcte
c=’ bonjour les amis ’ # Solution correcte
11
Manipulation des variables
Exemple :
$> a=bonjour echo "$a $b"
$>b=Monsieur == >affichage de : bonjour Monsieur
12
Manipulation des variables
13
Manipulation des variables
14
Manipulation des variables
16
Protection d’une variable : read only
17
Opérations arithmétiques
● Opérations arithmétiques (shell évolué : ksh, bash …)
on précède l’opération arithmétique par le mot clé let
exemple : a = 100
a = $a + 1
let a = $a + 1
Ou a=$(($a+1))
● Les opérations :
+ : l’addition :
exemple : $> let r=$a + $b == > donne le résultat de l’addition de a et b
- : soustraction :
exemple : $>let r= $a - $b == > donne le résultat de la soustraction de a et b
* : multiplication
exemple : $> let r=$a * $b == > donne le résultat de la multiplication de a et b
/ : division
exemple : $> let r=$a / $b == > donne le résultat de la division de a par b
% : le reste de la division
exemple : $>let r=$a % $b == > renvoie le reste de la division entière de a par b
18
Sous exécution et appel d’une commande Unix
19
Passage de paramètres
● Les paramètres de position
Utilisés lors d’un passage de paramètres à un script
● Le passage d’arguments :
Se fait via les variables $0 à $9
exemple :
$> ./nomscript arg1 arg2 arg3 … argn
20
Passage de paramètres
● Exemple : script1.sh
#!/bin/sh
echo "nom script= $0"
echo "nbre de parametres = $#"
echo " les paramètres : 1=$1 2=$2 3=$3"
echo "liste =$*"
$> ./script1.sh a b c
nom script = script1.sh
nbre de parametres = 3
les paramètres : 1=a 2=b 3=c
liste =a b c
21
Exercice :
Ecrire un script permettant d’avoir un fichier file3 à partir du contenu de deux
fichiers file1 et file2. Affichez ensuite le nombre total de lignes de file3. Les noms des
trois fichiers doivent être passés en paramètre.
Une solution :
#!/bin/bash
cat $1 $2 > $3
# cat $1 $2 | sort > $3 # avec le tri (sort)
nblignes=`cat $3|wc -l`
echo "Le fichier $3 contient $nblignes lignes"
Passage de paramètres
Exemple :
testSet.sh
#!/bin/sh
echo " avant set : param1=$1 param2=$2 param3=$3"
set aa bb cc
echo "apres set : param1=$1 param2=$2 param3=$3 "
Exécution :
$> ./testSet.sh a bc
avant set : param1=a param2=b param3=c
après set : param1=aa param2=bb param3=cc
23
Réorganisation des paramètres
!/bin/sh
echo " avant shift : arg1=$1 arg12=$2 arg13=$3"
Shift
echo "apres shift : arg1=$1 arg2=$2 arg3=$3"
$> ./testShift.sh a b c
avant shift : arg1=a arg2=b arg3=c
après shift : arg1=b arg2=c arg3=
24
Interruption d'un programme
● exit : met immédiatement fin au Shell dans lequel cette instruction est
exécutée
syntaxe : exit n
n est facultatif qui vaut 0 par défaut
$? : permet de récupérer le code de retour
Ps : lorsqu’un script shell se termine, il renvoie toujours au processus père un état
qui est la valeur de la variable $?
25
Les commandes "true" et "false"
Les commandes ‘true’ et ‘false’ ont pour but de renvoyer un état respectivement à
‘vrai’ ou ‘faux’
Exemple :
$> true #== > La commande renvoie la valeur "vrai"
$> echo $?
0
$> false == > # La commande renvoie la valeur "faux"
$> echo $?
1
26
Tests de conditions
● Test sur les chaînes : retourne true si le test est vrai , false si le test est faux,
le code >=2 si échec
*) test –z "variable" : zéro == >$? : retourne 0 si la variable est vide
exemple :
$>a=
$> test –z "$a" ;echo $?
0
*) test –n "variable" : non zéro == >$? : retourne 0 si la variable est non vide
exemple : $> test –n "$a" ;echo $?
1
*) test $variable = ’’chaine’’ == > $? retourne 0 si les deux chaînes sont identiques
exemple : $> a=alpha; test $a = alpha; echo $?
0
*) test $variable != chaine == > $0 retourne 0 si les deux chaînes sont différentes
27
Tests de conditions
28
Tests de conditions
● Tests sur les fichiers :
syntaxe :
test <option> <fichier>
▪ Options :
-f : fichier normal
-d : répertoire
-c : fichier en mode caractère
-b : fichier en mode bloc
-p : tube nommé
-r : autorisation en lecture
-w : autorisation en écriture
-x : autorisation en exécution
-s : fichier existe et non vide
-e : le fichier existe
-L : le fichier est un lien symbolique
29
Tests de conditions
30
Tests de conditions
espace
31
Les opérateurs logiques
● liste des opérateurs logiques :
! : non
-a : et
-o : ou
Exemple 1:
test $a -eq $b -o $a != $c
32
Les structures de contrôle
33
L'alternative simple
● Syntaxe :
cmd1 && cmd2
cmd1 || cmd2
Exemple 1 : Afficher si on a passé à un script des paramètres ou pas . 7
On affiche ensuite ces paramètres
#!/bin/sh
test $# -eq 0 && echo "$0 n'a reçu aucun paramètre"
# Test sur plusieurs paramètres
test $# -ge 1 && echo "$0 a reçu $# paramètres qui sont $*"
Exemple 2 :
test –e $1 && { echo $1 " existe "; } || { echo " n’existe pas " ; }
Ou
[ -f $1 -o -d $1 ] && echo « rep ou fichier rég »
Exemple 3 :
[ ! -f $1 -o ! -d $1 ] && echo « ni rep ni fichier rég » 34
L'alternative simple
35
Instruction if
nb :
let $var 2
$? # return 1 si var ,’est pas numérique
37
Instruction if
Exemple 2 :
#!/bin/bash
echo "Entrez un nombre"
read nb
if test $nb -eq 0
then
echo "c’est un 0 !"
elif test $nb –eq 1
then
echo "C'était 1 ! "
else
echo " le nbre n’est ni 0 ni 1"
fi
38
Instruction if
Exercice 1 :
Écrire un script qui demande le nom et le prénom et les afficher ensuite. Si le
nombre de paramètre est différent de 2 rappeler à l’utilisateur la bonne syntaxe .
Solution :
#!/bin/bash
echo " votre nom et prenom: "
if test $# -eq 2
then
echo "votre nom est : : $2 votre prénom est: $1 !"
else
echo "respecter la syntaxe : $0 nom prénom"
fi
39
Instruction if
Exercice 2 :
Ecrire un programme qui prend en paramètre un fichier et afficher ensuite s’il
s'agit d’un répertoire ou d’un fichier ordinaire ou autre
Solution :
#!/bin/bash
if test –d $1
then
echo " $1 est un répertoire"
elif test –f $1
then
echo " $1 est un fichier ordinaire"
else
echo " $1 n’est ni fichier ordinaire ni répertoire"
fi
40
Instruction if
Exercice 3 :
41
Instruction if
solution :
#!/bin/sh
if [ $# -eq 1 ]
then
if [ -f $1 ]
then
ls –s $1
else
if [ -d $1 ]; then ls –1 $1 | wc –l; fi
fi
else
echo erreur nb arguments
fi
42
Instruction if
Exercice 3 :
Ecrire un script :
- lorsqu'elle est appliquée à un répertoire écrit dans un fichier la liste
des fichiers du répertoire
- sinon renvoie un message (exemple : ce n’est pas un répertoire)
Solution :
#!/bin/sh
#description du shell
if [ -d $1 ]
then
ls -l $1 >resultat
else
echo erreur
fi
43
while do…done
● Syntaxe :
While expression
do
liste de commandes
done
44
while do…done
Exemple :
Demander à l’utilisateur à saisir un nom ((une chaîne de caractère).
x=$1
let $x 2>/dev/null
while test -z $x -o $? -eq 0
do
read -p "saisir le nom" x
let $x 2>/dev/null
done
echo nom=$x
while do…done
Exemple :
Afficher les nombres de 1 jusqu’à la valeur passée en paramètre
du script à l’aide d’une boucle while … do … done:
Solution :
i=1
while test $i -le $1
do
echo $i
let i=$i+1
done
echo $i
46
while do…done
i=0
Une solution : while test $# -ge 1
do
i=$(($i+1))
echo $1
shift
done
echo nombre de parametres : $i
47
until do…done
Syntaxe :
until expression
do
liste de commandes
done
i=0
Une solution : until test $# -lt 1
do
i=$(($i+1))
echo $1
shift
done
echo nombre de parametres : $i
48
Until … do … done
Exemple :
Afficher les nombres de 1 jusqu’à la valeur passée en paramètre
du script à l’aide d’une boucle until … do … done
#!/bin/bash
i=1
until test $i -gt $1
do
echo $i
let i=$i+1
done
49
Boucle for
● Syntaxe :
for var in liste
do
liste de commandes
done
50
Boucle for
Exemple 1 : Ecrire un script shell qui permet de lister le contenu d’un répertoire passé
en paramètre. Afficher ensuite, pour chaque élément, s’il s'agit d’un répertoire ou d’un
fichier ordinaire ou autre (fichier spécial,
socket …)
#!/bin/bash
test $# -ne 1 && { echo "il faut un arg. exemple : $0 rep"; exit 1; }
test ! -d $1 && { echo " l’arg. doit être un répertoire ! " ; exit 1; }
cd $1
for file in "`ls -1`"
do
if test -d $file
then
echo "$file est un répertoire"
elif test -f $file
then
echo "$file est un fichier ordinaire"
else
echo "$file n’est ni rép ni fichier ordinaire"
fi
done
51
Boucle for
Exemple 2: Copier tous les fichier s, du répertoire courant, dont le nom se termine par
.txt en .txt.copie dans le même répertoire.
#!/bin/bash
for v in *.txt NB :
do - R : car on s’intéresse à tout type de fichier== > on
cp –R $v ${v}.copie peut avoir des fichiers de type répertoires à copier
done
Exercice : Ecrire un script shell qui doit prend en argument un répertoire existant. Le script
calculera (comptera) et affichera le nombre de mots dans chaque fichier régulier de ce
répertoire. Ne pas utiliser les deux commandes suivantes : la commande grep (ou egrep) et la
commande wc (l’utilisation de d’autres commandes hormis ces deux dernières est autorisée).
Une solution :
test $# -ne 1 && { echo "il faut deux args : $0 rep "; exit 1; }
test ! -d $1 && { echo "le repertoire source (arg1) doit exister : $0 rep " ; exit 1; }
nb=0
cd $1
n=`find . –type f `
for var in $n
do
for x in `cat $var`
do
nb=$(($nb+1))
done
done
Boucle for
#!/bin/bash
test $# -ne 1 && { echo "il manque l’arg . : $0 rep "; exit 1; }
test ! -d $1 && { echo "le repertoire source (arg1) doit exister : $0 rep " ; exit 1; }
nb=0
cd $1
for var in *
do
if[ -f $var ]
then
for x in `cat $var`
do
nb=$(($nb+1))
done
fi
done
Boucle for
Exercice :
Pour un répertoire donné passé en argument, affiche tous les fichiers dont la seconde
lettre est un « e ».
Pour chaque fichier afficher si c'est un répertoire ou un fichier ordinaire ou autre.
Une partie d’une solution :
test $# -ne 1 && { echo "il faut un arg : $0 rep "; exit 1; }
test ! -d $1 && { echo " $1 n’est pas u répertoire : $0 rep " ; exit 1; }
cd $
res=`find . -name "?e*“`
for file in res
do
test -f $file && echo "fichier"
test -d $file && echo "rep"
test \( ! -d $file -a ! -f $file \) && echo " autre"
done
Boucle for
#!/bin/bash
sm=0
for ((i=0;i<=$1;i++))
do
let sm=$sm+$i
done
echo "somme=$sm"
56
Le branchement à choix multiple :Case
● Syntaxe :
case var in
choix1) liste de commandes ;;
choix2) liste de commandes ;;
…
*) liste de commandes à exécuter par défaut ;;
esac
57
Le branchement à choix multiple :Case
Exemple : Ecrire un script qui permet de saisir un nombre et qui évalue ensuite s'il est
pair, impair, compris entre 10 et 100 ou autre chose
#!/bin/sh
echo "Entrez un nombre"
read nb
# Evaluation du nombre
case $nb in
0) echo "$nb vaut zéro";;
1|3|5|7|9) echo "$nb est impair";;
2|4|6|8) echo "$nb est pair";;
[1-9][0-9]) echo "$nb est supérieur ou égal à 10 et inférieur à 100";;
*) echo "$nb >100"
esac
58
Les tableaux
● Initialisation du tableau :
nom_tableau[indice]=valeur
indice : commence à zéros
Exemple :
Tab[1]=’’bonjour’’
table=(a b c)
● Lecture :
echo ${Tab[1]}
● Pour compter le nombre d'éléments du tableau :
Len=${#tab[*]}
● Afficher tous les éléments :
echo ${tab[@]}
echo ${tab[*]}
● Parcourir un tableau :
Exemple :
for el in ${tab[*]}
do
echo $el;
done 59
Les tableaux
Ecrire un script qui renvoie la même résultat que ls –1r rep (sans utiliser ni ls ni sort).
#!/bin/bash
[ $# -ne 1 ] && { echo "il faut un parametre de type rép :";exit 3;}
[ ! -d $1 ] && { echo "$1 n’est pas un repertoire ";exit 3;}
i=0
# lecture du fichier ligne par ligne et
# chaque ligne est ajouté dans le tableau
cd $1
for var in *
do
tab[$i]=$var
i=$(($i+1))
done
# chaque cellule du tableau contient un élément du répertoire $1
# 1)avec la ligne suivante c'est l‘équivalent de ls
echo ${tab[*]}
# 2-avec affichage inverse du contenu du tableau(contenu du rep)
# c est l‘équivalent de ls -1r
for((i=${#tab[*]}-1;i>=0;i--))
do
echo ${tab[$i]}
done
60
Les fonctions
Syntaxe :
nomFonction()
{
liste_de_commandes
}
● L’appel de la fonction se fait de la même façon que l’appel d’une commande. Il n'y a
aucune différence syntaxique entre l'utilisation d'une fonction ou d'une commande
Syntaxe d’appel :
nomFonction
ou
var ="`nomFonction`"
61
Les fonctions
62
Les fonctions
● Passage de valeurs
Syntaxe :
nom_de_fonction()
{
comandes
}
…
nom_de_fonction param1 param2 … # appel de la fonction
63
Les fonctions
Remarque :
le contenu des variables $1, $2 etc dans le corps de la fonction et différent de celui
dans le programme principal :
- pour la fonction ces variables font références aux valeurs passées passés
depuis l'extérieur de la fonction vers la fonction
- Dans le programme principal ces variables font références aux valeurs passées
depuis l'extérieur du script vers le script
Exemple : Une fonction qui affiche, pour chacun des nombres passés en
argument, s’il est paire ou impaire
#!/bin/bash
pair_impair()
{
# let a=$1%2
a=$(($1%2))
test $a -eq 0 && echo "$1 est pair" || echo "$1 est impair"
}
# Pour chaque nombre passé au programme
for nb in $*
do
pair_impair $nb
done
65
Les fonctions
● Retour de fonction
Syntaxe :
nom_de_fonction(){
return n n de 0 à 255
}
…
nom_de_fonction
echo $? Valeur retournée par la fonction
66
Les fonctions
Exemple : Une fonction qui renvoie "vrai ou "faux" si la valeur qu'elle reçoit est
paire ou impaire
#!/bin/bash
# Fonction qui teste la parité d'une valeur
pair_impair()
{
# let a=$1%2 #en bash
a=$(($1%2)) # en bash et en sh
test $a -eq 0 && return 0 || return 1
}
# Pour chaque nombre passé au programme
for nb in $*
do
if pair_impair $nb
then
echo "$nb est pair"
else
echo "$nb est impair"
fi
done
67
Les fonctions
68
Alt gr +7
Utilisation de bc : opération arithmétiques
69
Les fonctions
Ecrire une fonction qui calcule le carré d’un nombre saisi au clavier
#!/bin/bash
carre()
{
let racine=$1*$1
echo $racine
}
echo " saisir un nombre :"
read a
test $a -eq 3 2>/dev/null
if [ $? -le 1 ]
then
rac="`carre $a`"
echo "racine carré de $a=$rac "
else
echo "désolé $a n’est pas un nombre "
fi 70
Tester une variable numérique
var=$1
[ $var -eq 0 ] 2> /dev/null var=$1
if [ $? -eq 0 -o $? -eq 1 ]
then if let $var 2>/dev/null
echo "La chaîne est numérique" then
fi echo "$var numérique"
else
echo "$var non numérique"
fi
71