Systme dexploitation Linux
Pr. Youssef GHANOU
Youssef GHANOU
Introduction
Youssef GHANOU
Historique
Projet du Systme MULTICS (MULTiplexed Information and
Computing Service) vers la fin des annes 60 entre les
laboratoires de BELL et General Electric
Ken THOMSON, chercheur BELL, a dcid dcrire une
version allge de MULTICS en assembleur sur une machine
PDP7
UNIX a t port sur dautres machines PDP1120 PDP1145
PDP1170
Rcrire UNIX dans un langage de haut niveau pour faciliter le portagesur
dautres architectures:Ralisation du Langage B qui a t remplac par la suite
par le langage C
Youssef GHANOU
Historique
Youssef GHANOU
Historique
Youssef GHANOU
Youssef GHANOU
Youssef GHANOU
Architecture gnerale dUnix
Le noyau Unix
Les Shell
Les programmes utilitaires
Shell
Interprteur de
commande
Matriel
Noyau UNIX
(kernel)
Youssef GHANOU
Linux
Proprits
multi-tches
multi-utilisateurs
Libre (et gratuit) !!
Travailler sous Linux implique une connexion au systme
Login:
Identification de lutilisateur: login + mot-de-passeScurit ( login,
mot de passe ), Seuls les utilisateurs ayant un login et un passwd
peuvent se connecter au systme
droits accords par le super-utilisateur (root)
Portabilit
Disponible pour plusieurs plateformes (Station de travail, PC,
Macintosh)
Youssef GHANOU
Linux
Proprits
Modularit
Noyau
Utilitaires
Systme de fichier
Arborescent
Rparti
Rorganisation souple
Traitement uniforme des priphriques
Un priphrique est trait comme un fichier
Youssef GHANOU
10
Linux
Proprits
Outils de communication intgrs
Talk, write, mail
Systme de commandes
Trs riche
Puissant
Plusieurs interprteurs de commandes
Exemples : sh, ksh, csh,
Inter chargeables sans redmarrer la machine
Youssef GHANOU
11
Initiation au shell
Le Shell = interprteur de commandes
interface utilisateur de base (interlocuteur avec le syst.)
interprtation ligne ligne
plusieurs shells: sh, csh, tcsh, bash, ksh, zsh, ...
langage de programmation
shell par dfaut : bash
Youssef GHANOU
12
Initiation au shell - commandes Format des commandes:
commande [-option(s)] [argument(s)]
Respecter la casse
et les espaces!!
Youssef GHANOU
13
Initiation au shell - mta caractres Caractres spciaux:
! ^ * ? [] \ ;
L'astrisque ou toile: *
interprt comme toute suite de caractres alphanumriques
utiliser avec prcaution (commande rm par ex...)
Le point dinterrogation: ?
remplace 1 seul caractre alphanumrique
Youssef GHANOU
14
La gestion des fichiers et des
rpertoires
Youssef GHANOU
15
La gestion des fichiers et des
rpertoires
Stocke les donnes:
Structure arborescente
TOUT est fichier
3 types de fichiers:
fichiers ordinaires
rpertoires
fichiers spciaux (priph., )
Youssef GHANOU
16
La gestion des fichiers et des rpertoires
- larborescence -
Youssef GHANOU
17
Le systme de fichiers - larborescence rpertoire racine
le rpertoire de login: ~
le rpertoire courant: .
le rpertoire suprieur: ..
connatre le rp. courant: pwd
lister le contenu: ls
bin
(voir man ls)
tmp
Staigaire
.cshrc
chemin daccs au fichier tp1.tex:
-/home/Stagiaire/cours/tp1.tex
home
cours
docs
tp1.tex
-ou bien: ~/cours/tp1.ex
Youssef GHANOU
18
La gestion des fichiers et des
rpertoires
Identificateur (nom)
Suite de caractres (jusqu 255 caractres)
Sensible la casse
Utiliser le caractre dchappement \ pour les
caractres spciaux
Exemple prcder le caractre espace par \
Nom\ fichier
Youssef GHANOU
19
La gestion des fichiers et des
rpertoires
Caractres "joker"
Permettent dappliquer une commande un
ensemble de fichiers dont le nom vrifie certaines
contraintes (ex : le nom commence par la lettre
p, lextension est .doc, )
* : remplace nimporte quelle suite de caractre
(y compris la chane vide)
? : remplace un et un seul caractre
*+ : dfinit un intervalle
Youssef GHANOU
20
La gestion des fichiers et des
rpertoires
ls
Affiche le contenu du rpertoire courant ou de celui
pass en paramtre
Options
l : affiche les informations compltes des fichiers
et sous rpertoires
a : affiche les fichiers cachs
R : affichage rcursif
i : affiche le descripteur des fichiers (inumro)
d : n'affiche pas le contenu des rpertoires
Youssef GHANOU
21
La gestion des fichiers et des
rpertoires
pwd
Affiche le chemin du rpertoire courant
cd chemin
Se dplace vers le rpertoire identifi par 'chemin'
Exemples
$ cd /home/dubois/doc
$ cd ../dubois/doc
Youssef GHANOU
22
La gestion des fichiers et des
rpertoires
mkdir (md) nouveau_rep
Cre un nouveau_rep dans
le rpertoire courant
nouveau_rep est le nom du rpertoire
Exemple
$ mkdir stages
Dans le chemin indiqu par la premire partie de
nouveau_rep
Exemple
$ md /home/dupont/stages
$ mkdir ../dupont/stages
Youssef GHANOU
23
La gestion des fichiers et des
rpertoires
rmdir repertoire
Dtruit un rpertoire vide
Exemple
$ rmdir /home/dupont/temp
Youssef GHANOU
24
La gestion des fichiers et des
rpertoires
pwd retourne:
/home/stagaire/cours
se dplacer: cd
[/home/ Stagaire /cours]$ cd ..
[/home/ Stagaire]$
/
tmp
[/home/ Stagaire]$ cd /tmp Test
[/tmp]$
chemin relatif
chemin absolu
.cshrc
home
Stagaire
cours
docs
crer un rpertoire: mkdir
[/tmp]$ mkdir Test
tp1.tex
supprimer un rpertoire: rmdir
rpertoire courant
[/tmp]$ rmdir Test
Youssef GHANOU
25
La gestion des fichiers et des
rpertoires
rm fichier
Dtruit un fichier ou un rpertoire non vide
Options
r : la commande dtruit de manire rcursive toute la
sous arborescence du rpertoire
i : demande la confirmation avant de supprimer le
fichier
Exemple
$ rm r doc
rm i /home/dupont/linux.pdf
Youssef GHANOU
26
La gestion des fichiers et des
rpertoires
cat fichier [fichier,...]
Concatne et affiche sur la sortie standard le(s) fichier(s)
en paramtre
Exemple
$ cat fichier1
cat fichier [fichier,...]
Concatne et affiche sur la sortie standard le(s) fichier(s)
en paramtre
Exemple
$ cat fichier1
$ cat fichier1 fichier2$ cat fichier1 fichier2
Youssef GHANOU
27
La gestion des fichiers et des
rpertoires
more fichier
Affiche le contenu du fichier page par page
Utilise pour les fichiers longs (contenant
plusieurs pages)
Q : quitte la commande
Return : saute de ligne
Espace : saute de page
Exemple
$ more lettre
Youssef GHANOU
28
La gestion des fichiers et des
rpertoires
head *c nchar n nline] fichier
Affiche le dbut du fichier
Par dfaut les dix premires lignes
c nchar : affiche les nchar premiers caractres du fichiers
n nline : affiche les nline premires lignes du fichier
Exemple
$ head lettre
$head c 280 lettre
$ head n 5 lettre
Youssef GHANOU
29
La gestion des fichiers et des
rpertoires
tail */+c nchar /+n nline] fichier
Affiche la fin du fichier
Par dfaut les dix dernires lignes
/+c nchar : affiche les derniers caractres du fichier
+ partir du nchar me caractre jusqu la fin du fichier
Les nchar derniers caractres partir de la fin
/+n nline : affiche les dernires lignes du fichier
+ partir de la nline me jusqu la fin du fichier
Les nline dernires lignes partir de la fin
Exemple
$ tail lettre
$tail n 6 lettre affiche les 6 dernires lignes
$ tail +n 6 lettre affiche de la ligne 6 jusqu la fin du fichier
Youssef GHANOU
30
La gestion des fichiers et des
rpertoires
wc *lwc] fichier
Compte le nombre de
l : lignes
w : mots
c : caractres
du fichier
Par dfaut les trois
Exemple
$ wc lettre
Youssef GHANOU
31
La gestion des fichiers et des
rpertoires
Manipulation des fichiers
copier
:
dplacer/renommer :
effacer :
afficher le contenu :
trier le contenu :
cp fic1 fic2
mv fic1 fic2
rm fic
cat fic
sort fic
Youssef GHANOU
32
La gestion des fichiers et des
rpertoires
ln source lien
Cre un lien physique sur le fichier source
Pas possible pour les rpertoires ou fichiers d'autres SGF
s : le lien est symbolique
Exemple
$ ln lettre lien_lettre
$ ln lettre s lien_symbolique
Youssef GHANOU
33
La gestion des fichiers et des
rpertoires
Commande tar
Permet darchiver un d archiver ensemble de fichiers dans un seul
fichier (dextension .tar)
Facilite lorganisation (moins dencombrement dans le SGF)
Efficace pour envoyer par mail plusieurs fichiers en attachement
Restituer lensemble des fichiers partir du fichier archive
(lopration inverse)
Possibilit de compression et de dcompression de larchive en
appelant la commande "gzip"
Youssef GHANOU
34
La gestion des fichiers et des
rpertoires
Commande tar
Syntaxe
$ tar [options] [fichiers]
Youssef GHANOU
35
La gestion des fichiers et des
rpertoires
Commande tar
Exemples
Crer une archive
$ tar cvf archive_doc.tar /home/ali/doc
Crer une archive et compression
$ tar cvzf archive_doc.tar.gz /home/ali/doc
Lister le contenu dune archive
$ tar tvf archive_doc.tar
Extraire le contenu dune archive
$ tar xvf archive_doc.tar /home/ali/cours
$ tar xvzf archive_doc.tar.gz (extraction dans le rpertoire courant)
Youssef GHANOU
36
La gestion des fichiers et des
rpertoires
rpl chaine 1 chaine 2 < fic1 > fic2
remplace toutes les occurences de chaine1 par chaine2 dans
fic1 et met dans fic2
ex.:
rpl " IT " "Italie" < films.cine > films.tele
Youssef GHANOU
37
La gestion des fichiers et des
rpertoires
rpl chaine 1 chaine 2 < fic1 > fic2
remplace toutes les occurences de chaine1 par chaine2 dans
fic1 et met dans fic2
ex.:
rpl " IT " "Italie" < films.cine > films.tele
Youssef GHANOU
38
Les inodes.
Un fichier contient plusieurs lments : nom, contenu, longueur,
emplacement sur disque, etc.
Ces informations sont contenues dans des inodes.
Linode comporte 3 dates : la date de dernire modification du fichier, la date
de dernire
Affichage des dates :
ls l : date de dernire modification
ls lu : date de dernire modification de linode
ls lc : date de dernier accs du fichier
Les inodes sont les vrais fichiers. La hirarchie des rpertoire ne fait que
donner de faux noms aux fichiers. Le nom de linode est le seul vrai nom
Youssef GHANOU
39
La gestions des Droits
Youssef GHANOU
40
La gestion des droits
Dterminent les types doprations quun utilisateur ou une
classe dutilisateurs peuvent effectues.
Chaque fichier peut avoir ses propres droits daccs
Systme de protection trs puissant
Droits d'accs : Trois groupes d'autorisation,
l'utilisateur propritaire, les personnes
appartenant au groupe propritaire et les
autres.
Youssef GHANOU
41
La gestion des droits
Accs aux fichiers rglement
(sauf: tous les droits pour root)
3 types dutilisateurs:
propritaire (user)
personnes du mm groupe (group)
les autres (others)
3 types de permissions
lecture (r)
criture (w)
excution (x)
afficher le contenu afficher le contenu
modifier
crer/supp fichiers
excuter
traverser
fichier
rpertoire
Youssef GHANOU
42
La gestion des droits
Affichage des caractristiques: ls -l
groupe
-rw-r--r-- 1 lewandowski staff 58K 16 Jul 09:19
nb liens
propritaire
type
taille
date
group
tp1.tex
nom
-rw-r--r-others
user
Youssef GHANOU
43
La gestion des droits
Exemple :
d rwx rwx - - - 139 pagnotte
profess
352 Nov 25 1999 tp
tp est un rpertoire (d)
Son propritaire est pagnotte, du groupe profess
les protections rwx rwx - - - sont interprter selon les indications cidessus
Remarque
Le type du fichier : 'd' pour rpertoire, ' pour
un fichier ordinaire, 'b' ou 'c' pour des fichiers
spciaux (priphriques).
Youssef GHANOU
44
La gestion des droits
Changer les permissions: chmod
chmod <classe op perm, >|nnn <fic>
classe:
u : user
g : group
o : others
a : all
op:
= : affectation
- : suppr.
+ : ajout
perm:
r : lecture
w : criture
x : excution
chaque perm = 1 valeur:
r
rien
df. des permissions (par addition)
pour chaque classe
Exemples:
chmod u=rwx,g=rx,o=r tp1.tex
chmod a+x script.sh
chmod 755 script.sh
Youssef GHANOU
45
La gestion des droits
chmod mode fichier
Mode = utilisateurs/permission
Exemple
$chmod u+x fich1
$chmod g-w fich1
$chmod +r fich1
Mode = chiffres
Exemple User Group Other
$ chmod 754 fich1
Youssef GHANOU
46
La commande umask : Modifie le masque des droits de
cration de fichier. Lorsqu'un programme cre un fichier, il
spcifie les droits d'accs. Parmi ceux, certains sont accords,
d'autres refuss, en fonction du masque. Sans argument,
donne la valeur actuelle du masque.
-Syntaxe : $ umask [code]
Youssef GHANOU
47
Exemple
Youssef GHANOU
48
Gestion des Droits
chown nouveau_util fichier: Change le propriaitaire du fichier
Exemple
$ chown dubois fich1
chgrp nouveau_grp fichier : Change le groupe du fichier
Exemple
$ chgrp telecom fich1
Youssef GHANOU
49
Permissions : le super-utilisateur
Afin de permettre l'administration du systme, un
utilisateur spcial, nomm super utilisateur (ou root),
est toujours considr par le systme comme
propritaire de tous les fichiers
La personne qui gre le systme est normalement la
seule connatre son mot de passe. Lui seul peut
ajouter de nouveaux utilisateurs au systme.
Youssef GHANOU
50
who
Affiche les informations sur les utilisateurs
connects
who am i
Affiche les informations de l'utilisateur courant
whoami
Affiche le login de l'utilisateur courant
id
Affiche l'UID et le GID de l'utilisateur courant
Youssef GHANOU
51
Les mcanismes de redirection et
de tube
Youssef GHANOU
52
Les entres et les sorties
Il y a trois sortes d'entres sorties ou flux de donnes :
le premier est l'entre standard, c'est dire ce que vous saisissez au
clavier,
le deuxime est la sortie standard, c'est dire l'cran, plus prcisment
le shell,
et le troisime est la sortie standard des messages d'erreurs conscutifs
une commande, qui est gnralement l'cran.
Chacun de ces flux de donnes est identifi par un numro
descripteur, 0 pour l'entre standard, 1 pour la sortie standard
et 2 pour la sortie standard des messages d'erreur.
Youssef GHANOU
53
Les fichiers standard et la redirections
d E/S
Redirection de la sortie standard:
Remarque:
Pour viter dcraser le contenu dun fichier suite une
redirection de la sortie, on peut utiliser la redirection
avec ajout. Dans ce cas le rsultat de la commande sera
insr la fin du fichier.
Syntaxe: $ Commande >> fichier.
Exemple: $ date >> connect
Youssef GHANOU
54
Les fichiers standard et la redirections
d E/S
Redirection de lEntre standard:
Un fichier peut servir comme entre standard une
commande :
Le fichier source contient les arguments de la commande.
Syntaxe : $ Commande < fichier_source
Exemple :
$ wc -l < connect
Permet de compter le nombre de lignes dans le fichier connect.
Youssef GHANOU
55
Les fichiers standard et la redirections
d E/S
Redirection de la sortie erreur standard :
Chaque programme est dot dun canal de sortie derreur
spar dont le descripteur de fichier gal 2.
Exemple: $ cc programme.c 2>erreurs.
Les erreurs de compilation du fichier programme.c seront
rediriges vers le fichier erreurs.
On peut utiliser galement le fichier /dev/null pour la
redirection de la sortie erreur.
Youssef GHANOU
56
Les mcanismes de redirection et de
tube
Redirection des E/S
> : la sortie standard est redirige vers un fichier (ecrasement
de son contenu s'il existe dj)
< : les entres de la commande proviennent d'un fichier
>> : la sortie standard est insre la fin d'un fichier
2> : la sortie d'erreur est redirige vers un fichier
2>> : la sortie d'erreur est insre la fin d'un fichier
Youssef GHANOU
57
Les tubes de communication
Dfinition:
Lier les entres et les sorties de plusieurs commandes dans
une mme ligne de commande.
Syntaxe: $ Commande1 | Commande2
Le rsultat de la commande1 sera considr comme
argument pour la commande2.
|: indique un tube.
Youssef GHANOU
58
Les tubes de communication
Exemple:
$ who | wc - l
$who : liste de personnes connects au systme.
$wc -l nom_fichier :Compte le nombre de lignes de
nom_fichier.
Youssef GHANOU
59
Les tubes de communication
La commande tee :
tee [-a] filename l'affichage de la sortie
standard est en mme temps dirig sur
filename. L'option -a signifie >>
Syntaxe:
$ commande1 | tee fichier1 | commande2
Redirige le rsultat intermdiaire de commande1 vers
fichier1. Ce mme rsultat sera trait par la commande
commande2.
Youssef GHANOU
60
Les tubes de communication
La commande tee:
Exemple:
$ ls
| grep pome | tee fichier1 |
wc -l.
1: Liste des fichiers dans le rpertoire courant
2: Recherche des noms de fichiers qui contiennent la chane de
caractres pome.
3: Met le rsultat de la commande prcdente dans fichier1
4: compte le nombre de lignes ramens par grep.
Youssef GHANOU
61
Les Filtres
Youssef GHANOU
62
Les Filtres
Les commandes ayant la proprit la fois de
lire sur leur entre standard et d'crire sur leur
sortie standard sont appeles des filtres. Les
commandes cat, wc, sort, grep, cut, tail, head,
tr, . sont des filtres
Youssef GHANOU
63
La commande grep
Permet de rechercher un certain motif dans un fichier.
Le motif est dcrit par une expression rgulire.
grep [option] motif fichier Affiche les lignes de fichier qui
contiennent le motif motif.
-l: naffiche que le nom des fichiers.
Exemple:
grep define stdio.h: recherche le mot "define" dans le fichier stdio.h.
grep hello *: recherche le mot "hello" dans tous les fichiers du rpertoire.
Youssef GHANOU
64
La commande sort
sort [options] [+n1 -n2] filename1 [-o filename2]
trie, selon l'ordre lexicographique du code, les lignes
de filename1, affiche le rsultat ou le redirige sur
filename2.
Youssef GHANOU
65
Options de la commande sort
-b on ignore les espaces de tte
-d seuls les chiffres, lettres et espaces sont significatifs
dans les comparaisons,
-f majuscules et minuscules sont confondues,
-i les caractres dont le code ASCII est extrieur
l'intervalle [32,126] sont ignors dans les comparaisons,
-n les dbuts de lignes numriques sont tris
numriquement,
-tc dfinit comme c le sparateur de champs au lieu de
TAB
Youssef GHANOU
66
La commande cut
Cette commande extrait des colonnes (option -c) ou
des champs (option -f ) des lignes dun fichier ou de
lentre standard. Dans le cas de loption -f, il est
possible de lui spcifier le dlimiteur chercher en
utilisant loption -d. Le dlimiteur par dfaut est la
tabulation
Youssef GHANOU
67
Exemple
Youssef GHANOU
68
La commande tr
tr string1 string2 l'entre standard est copie sur la
sortie standard, mais un caractre ayant une
occurence dans string1 est remplac par le caractre
de mme rang dans string2. Avec l'option -d, les
caractres en entre, prsents dans string1, sont
supprims en sortie.
Youssef GHANOU
69
Les outils
Youssef GHANOU
70
La commande find
Permet de chercher dans un rpertoire et ses sousrpertoires des fichiers prsentant certaines
caractristiques.
Syntaxe:
find chemin expression
Principales options:
-name fich: recherche le fichier fich.
-print: crit le nom du fichier.
-type: d: rpertoire, f: fichier symbolique.
-exec: permet lexcution dune commande sur le fichier reprsent par
{}.
Youssef GHANOU
71
Exemple avec find
Rechercher tous les fichiers nomms hello.txt partir
du rpertoire racine.
find / -name hello.txt -print.
Afficher tous les fichiers .h partir du rpertoire
courant.
find . -name *.h -print
Affiche lcran le contenu de tous les fichiers .c.
find . -name *.c -exec cat {} \;
Youssef GHANOU
72
La comparaison de fichiers
La commande diff donne les modifications
apporter au premier fichier spcifi pour qu'il
ait le mme contenu que le second.
Par exemple :
diff pass.tmp /etc/passwd affichera les
modifications apporter au fichier pass.tmp
pour qu'il ait le mme contenu que le fichier
/etc/passwd.
Youssef GHANOU
73
La comparaison de fichiers
touch fichier : Modifie la date de dernire modification
du fichier, celleci devient gale la date laquelle la
commande a t excute. Si le fichier n'existe pas, il sera
cr (et de taille nulle) sauf si l'option c est utilise.
Youssef GHANOU
74
La comparaison de fichiers
La commande cmp
cmp nom_fichier1 nom_fichier2: donne le n
de l'octet et de la ligne o se produit la
premire diffrence entre nom_fichier1 et
nom_fichier.
Youssef GHANOU
75
Expressions rgulires
Youssef GHANOU
76
Expressions rgulires
Motif ou pattern
Formulation des critres didentification de chane de
caractres
Le motif peut tre
Simple : une suite de caractres
Exemple : "shell"
Exprim par des caractres spciaux appels
mtacaractres :
^ $ | * ...
Analogie avec les astrisques *,? du dos
*.exe : dsigne tous les fichiers ayant lextension .exe
Combinaison des deux
Youssef GHANOU
77
Expressions rgulires
Objectifs
Identifier la (les) chane(s) de caractres
rpondant un certain nombre de critres
Excuter des commandes sommaires Une
commande peut remplacer plusieurs commandes
Youssef GHANOU
78
Expressions rgulires
Principales Fonctionnalits
Vrification de lexistence dune squence de
caractres dans une ligne
Remplacement dune squence par une chane de
caractre
Suppression dune squence de caractres
Extraction dune squence de caractres
Youssef GHANOU
79
Principaux mtacaractres
Youssef GHANOU
80
Principaux mtacaractres
Youssef GHANOU
81
Expressions rgulires
Mtacaractres
Ces caractres ont une signification
particulire et par consquent ne peuvent
tre utiliss directement pour une recherche
les concernant. Ils doivent donc tre prcds
par le caractre dchappement \.
Exemple
script\.sh
Youssef GHANOU
82
Expressions rgulires
Mta-caractres
. : Remplace nimporte quel caractre
*+ : Regroupe lensemble ou lintervalle de valeurs que
peut prendre un caractre
Exemples
*ACGT+ : lun des quatre caractres
[a-z+ : nimporte quelle lettre minuscule
[a-zA-Z+ : nimporte quelle lettre
[0-9+ : nimporte quel chiffre
* : Exprime la rptition dun caractre ou dun motif
Exemples
A* : chane vide ou contenant plusieurs A (A, AA, AAA, )
[a-z]* : squence de caractres minuscules
[1-9][0-9]* : entier nature
Youssef GHANOU
83
Expressions rgulires
Mta-caractres
^
Dbut de ligne
Exemples
^[A-Z] : La ligne commence par une lettre majuscule
^Bonjour : la ligne commence par Bonjour
Ngation : entre []
Exemples
[^a-z+ : nest pas un caractre minuscule
$
Fin de ligne
Exemples
[0-9]$ : la ligne se termine par un chiffre
(valide)$ : la ligne se termine par le mot valide
\.$ : la ligne se termine par .
Youssef GHANOU
84
Expressions rgulires
Mta-caractres
Caractres spciaux usuels
Youssef GHANOU
85
Expressions rgulires
Mta-caractres
Motifs prdfinis
Youssef GHANOU
86
Lditeurs de texte vi
Youssef GHANOU
87
Introduction
LINUX permet de distinguer les "visualisateurs " de
fichiers (afficheur de contenu pour la consultation), des
diteurs de fichiers en texte brut (pour la modification
sans mise en page), des formateurs de texte qui
permettent de mettre en forme un texte, des filtres et des
traitements de texte qui sont plus sophistiqus.
Il existe de nombreux diteurs de texte: ed
joe
vi (visual)
vim (vi improve)
pico
emacs (editor macros)
Youssef GHANOU
88
L'diteur "vi" est le premier diteur "plein cran"
d'UNIX. "vi" est rapide mais difficile. L'diteur "vi"
fonctionne dans plusieurs "modes". La version
amliore pour LINUX " vim" facilite son
apprentissage.
Youssef GHANOU
89
Pour ouvrir un fichier existant ou le crer:
vi premier.txt
Pour passer en mode insertion:
Saisir "i" Active le mode insertion
Saisir "a" Active le mode insertion mais un caractre
aprs le curseur
Pour revenir au mode "commande":
ECHAP
Youssef GHANOU
90
Pour quitter "vi" sans enregistrer:
Saisir ":q! "
Pour quitter "vi" en enregistrant:
Saisir "ZZ"
ECHAP + ":wq!"
Pour afficher l'aide en ligne:
:help
Youssef GHANOU
91
Sauvegarde d'un fichier / Sortie de vi
:w Sauvegarde le fichier
:e! Ignore les changements et recharge le
fichier
:q! Force vi se terminer
:w fichier Sauvegarde le fichier sous le nom
"fichier"
Youssef GHANOU
92
Voir dautres commandes au TP
Youssef GHANOU
93
Dplacements dans vi
[CTRL]f Descend d'un cran
[CTRL]b Remonte d'un cran
[CTRL]d Descent d'1/2 cran
[CTRL]u Remonte d'1/2 cran
:xxx
Va la ligne xxx
Youssef GHANOU
94
Ractualisation de l'cran
[CTRL]l Ractualise l'cran
Positionnement du curseur
H En haut de l'cran
M Au milieu de l'cran
Youssef GHANOU
95
L
h
j
k
l
O
$
w
e
b
En bas de l'cran
Dcale d'un caractre gauche
Descend d'une ligne
Monte d'une ligne
Dcale d'un caractre droite
Au dbut de la ligne
la fin de la ligne
Au dbut du mot suivant
la fin du mot suivant
Recule d'un mot
Youssef GHANOU
96
Insertion d'un texte
I Insre au dbut de la ligne
A Insre la fin de la ligne
[ESC] Termine le mode insertion
Youssef GHANOU
97
Insertion et remplacement d'un texte
r* Remplace le caractre la position du curseur
par *
R Remplace tous les caractres jusqu' la fin de
la ligne ([ESC] pour terminer)
cw Remplace uniquement le mot la position
du curseur ([ESC] pour terminer)
cnw Remplace n mots ([ESC] pour terminer)
C Change le reste de la ligne ([ESC] pour
terminer)
Youssef GHANOU
98
Suppression d'un texte
x Supprime un caractre
dw Supprime un mot
dnw Supprime n mots
dd Supprime une ligne
ndd Supprime n lignes
Copier/Coller
Y Copie une ligne
nY Copie n lignes
P Colle les lignes avant le curseur
p Colle les lignes aprs le curseur
Youssef GHANOU
99
Copier/Coller du texte dans un autre fichier
ma Marque la position "a" dans le fichier
mb Marque la position "b" dans le fichier
:'a,'b fichier Copie le texte de la position "a"
la position "b" dans le fichier "fichier"
Insertion du texte d'un autre fichier
:r fichier Insre tout le contenu du fichier
"fichier"
Youssef GHANOU
100
Rechercher/Remplacer du texte
/chaine Recherche le texte "chaine" vers le bas
?chaine Recherche le texte "chaine" vers le haut
n
Rpte la dernire recherche
N
Inverse la recherche prcdente
:g/expr1/s//expr2/g Recherche dans tous le fichier
l'expression 1 et la remplace par l'expression 2
:x,y s/expr1/expr2/g Recherche de la ligne x la ligne y
l'expression 1 et la remplace par l'expression 2
Youssef GHANOU
101
Annuler/Rpter les modifications
u Annule la dernire modification
U Annule toutes les modifications effectues
sur la ligne courante
. Rpte les dernires modifications
Youssef GHANOU
102
gestion des processus
Youssef GHANOU
103
gestion des processus : contrle de la cration,
de la terminaison, de la synchronisation, du
partage de temps (ordonnancement), de la
communication entre processus,
Les processus: Un processus est un programme
qui s'excute, ainsi que ses donnes, sa pile, son
compteur ordinal, son pointeur de pile et les
autres contenus de registres ncessaires son
excution.
Youssef GHANOU
104
Le noyau maintient une table, appele table
des processus , pour grer l'ensemble des
processus (ici P1, ..., P5, ...).
Cette table, interne au noyau, contient la liste
de tous les processus avec des informations
concernant chaque processus. C'est un
tableau de structure proc (<sys/proc.h>).
Youssef GHANOU
105
Le nombre des emplacements dans cette table des
processus est limit pour chaque systme et pour
chaque utilisateur.
Youssef GHANOU
106
Le noyau alloue pour chaque processus une structure
appele zone u (<sys/user.h>), qui contient des
donnes prives du processus, uniquement
manipulables par le noyau.
Seule la zone u du processus courant est
manipulable par le noyau, les autres sont inaccessibles.
L'adresse de la zone u d'un processus est place
dans son mot d'tat.
Le noyau dispose donc d'un tableau de structures (
proc.h ) dans la table des processus et d'un ensemble
de structures ( user.h ), une par processus, pour
piloter les processus.
Youssef GHANOU
107
Le contexte d'un processus est l'ensemble des donnes
qui permettent de reprendre l'excution d'un
processus qui a t interrompu:
son tat (lu, prt, bloqu, ...)
son mot d'tat : en particulier
la valeur des registres actifs
le compteur ordinal
les valeurs des variables globales statiques ou dynamiques
son entre dans la table des processus
sa zone u
les piles user et system
les zones de code (texte) et de donnes
Youssef GHANOU
108
Prt
Etats dun processus
- Le processus est prt pour lexcution. Il dtient toutes les ressources,
sauf le CPU.
- Plusieurs processus peuvent tre ltat prt.
Actif
- Dtient la ressource CPU.
- Le processus volue.
- Nombre de processus actifs infrieur ou gal au nombre processeurs.
Bloqu
- Le processus est bloqu sur une demande de ressource : E/S, mmoire
centrale, etc.
Youssef GHANOU
109
Etats dun processus
Youssef GHANOU
110
L'excution d'un processus se fait dans son
contexte.
Youssef GHANOU
111
Parmi les informations propres chaque
processus, qui sont contenues dans les structures
systme ( proc.h et user.h ) , on trouve :
un numro d'identification unique appel PID (Process
Identifier), ainsi que celui de son pre appel PPID
le numro d'identification de l'utilisateur qui a lanc
ce processus, appel UID (User IDentifier), et le
numro du groupe auquel appartient cet utilisateur,
appel GID (Group IDentifier) ;
le rpertoire courant ;
les fichiers ouverts par ce processus ;
le masque de cration de fichier, appel umask ;
Youssef GHANOU
112
la taille maximale des fichiers que ce processus
peut crer, appele ulimit ;
la priorit ;
les temps d'excution ;
le terminal de contrle, c'estdire le terminal
partir duquel la commande a t lance.
Youssef GHANOU
113
Certaines des caractristiques de l'environnement
peuvent tre consultes par
diverses commandes. Nous connaissons dj :
pwd affiche le chemin du rpertoire courant
tty affiche le terminal de contrle
umask affiche le masque de cration de fichier
id consulte l'UID et le GID.
Exemple:
$ id
uid=106(c1) gid=104(cours)
$
Youssef GHANOU
114
Cration de processus
Pour chaque commande lance (sauf les
commandes internes), le shell cre
automatiquement un nouveau processus.
Il y a donc 2 processus. Le premier, appel
processus pre, excute le programme shell, et
le deuxime, appel processus fils, excute la
commande.
Le fils hrite de tout l'environnement du pre,
sauf bien sr du PID, du PPID et des temps
d'excution.
Youssef GHANOU
115
Pour visualiser les processus que vous avez lanc,
tapez la commande ps :
La commande ps
Affiche les informations des processus actifs
Options
l : affiche les informations compltes des processus
x : affiche tous les processus actifs (d'autres
utilisateurs)
u : affiche les processus d'un utilisateur donn
Exemple
$ ps l
$ ps u dupont
Youssef GHANOU
116
Exemple:
$ ps
PID TTY TIME
527 ttyp 4 1:70
536 ttyp 4 0:30
559 ttyp 4 0:00
$
COMMAND
ksh
cmd1
ps
Youssef GHANOU
117
PID identifie le processus,
TTY est le numro du terminal associ,
TIME est le temps cumul d'excution du
processus,
COMMAND est le nom du fichier
correspondant au programme excut par le
processus.
Youssef GHANOU
118
Il existe bien d'autres commandes pour grer
les processus, comme par exemple la
commande top .
top : cette commande affiche les processus
qui consomment le plus de ressources
systmes. Dans les premires lignes, elle
affiche des informations globales sur le
systme (charge, mmoire, nombre de
processus, ...).
Youssef GHANOU
119
Lorsqu'un processus se termine, il retourne
toujours une valeur significative ou statut.
Par convention, lorsqu'un processus se
termine correctement, il retourne la valeur 0,
sinon il retourne une valeur diffrente de 0
(gnralement 1). Ce choix permet de
ramener des codes significatifs pour
diffrencier les erreurs.
Youssef GHANOU
120
Le statut d'une commande shell est plac dans
la pseudo variable spciale, nomme ? . On
peut consulter sa valeur en tapant la
commande :
$ echo $?
Youssef GHANOU
121
Le shell
Youssef GHANOU
122
Le shell (littralement coquille autour du noyau d'UNIX) est
l'interprteur de commandes d'UNIX. Tout la fois :
- il excute en mode interactif les commandes mises par
l'utilisateur,
- il propose un langage de programmation interprt
permettant de gnrer de nouvelles commandes ou procdures
catalogues ("scripts shell"), C tant le langage le plus adapt pour
construire les nouvelles commandes que le shell ne peut traduire.
Le shell ne fait pas partie du noyau d'UNIX et n'est pas rsident en
mmoire principale. Ainsi, on peut disposer facilement de plusieurs
interprteurs de commandes : Bourne-shell, C-shell, Korn-shell, ...
Youssef GHANOU
123
Bourne shell
Bourne shell la syntaxe des commandes
est proche de celle des premiers UNIX (
/bin/sh ).
Il existe plusieurs interprteurs de
commandes. Historiquement, le premier a t
crit par S. R. Bourne. Il est donc souvent
nomm Bourne Shell.
Youssef GHANOU
124
Les variables
leur nom : une suite de caractres lettres, chiffres
exemple:
a=paul
chemin=/users/eleves/m-durand99
leur valeur : $a ou ${a} dsigne la valeur de la variable a et ${a}c dsigne la valeur
de a suivie de c.
exemple:
a=paul
b=chou
echo $a $b
On utilise trois caractres gnriques :
* toute sous-chane, mme vide,
? tout caractre,
[...] tous les caractres d'un intervalle.
Toute fin de ligne commenant par # est un commentaire
Youssef GHANOU
125
mtacaractres : < * ? | & , \ ont un sens
spcial.
ex:
a="bijou * caillou "
b=chou ; c=caillou ; r="$a $b";echo $r
Prcds de \, les mtacaractres perdent leur
signification particulire
Youssef GHANOU
126
ex.:
echo \* ; echo \\
echo abc\*\*\*d
les dlimiteurs de chanes :
dans une chane dlimite par des " , les caractres $,
\, ', ` sont des caractres spciaux.
dans une telle chane, un caractre doit tre prcd
de \
dans une chane dlimite par des ' , tous les
caractres perdent leur aspect spcial
Youssef GHANOU
127
Proprits des variables
Identificateur
Nom compos de caractres
Certains caractres sont interdits ($,#,...)
Types
Numrique
Chane de caractres
Accs au contenu
Prcder l'identificateur par le caractre $
Youssef GHANOU
128
Variables d'environnement
SHELL : le shell utilis
USER : nom de l'utilisateur
UID : identificateur de l'utilisateur
PATH : chemin des rpertoires contenant les
fichiers excutables
HOME : chemin du rpertoire d'accueil
PWD : chemin du rpertoire courant
HOSTNAME : nom de la machine
Youssef GHANOU
129
Lecture
Lecture (read)
read permet de lire une ou plusieurs variables partir
de lentre Standard
Syntaxe
read var1 *var2, +
Si plusieurs variables la fois, le contenu saisi sera
rparti sur les variables, dans lordre, avec espace
comme sparateur.
Exemples
read a
read n a
Youssef GHANOU
130
Affectation
Affectation : =
Syntaxe
Ident_variable = <expression>
Exemples
n=10
Nom=Mohamed
Youssef GHANOU
131
Les structures de contrle
Les structures de contrle permettent de
transformer une simple procdure en un
programme qui pourra comparer, tester ...
Youssef GHANOU
132
La structure for
Cette structure de contrle permet dexcuter
un ensemble de mmes commandes avec un
ensemble dlments.
for nom [ in liste ... ]
do
commandes
done
Youssef GHANOU
133
nom est le nom dune variable, qui prendra
successivement la valeur de chaque mot de la
liste exhaustive fournie aprs in. Lexcution
se termine lorsquil ny a plus dlment dans
la liste.
Youssef GHANOU
134
La structure if
Cette construction peut tre utilise comme
instruction de branchement gnrale. Il sagit
dun aiguillage.
if commandes1
Then commandes2
else commandes3
fi
Youssef GHANOU
135
La commande1 est value. Si elle est vraie
(code de retour nul), commande2 est value
son tour (et commande3 ne le sera pas) et
si elle est fausse (code de retour non nul),
commande3 est value (commande2 ne
ltant pas). La partie else de cette instruction
est optionnelle.
Youssef GHANOU
136
La structure case
Cette structure de contrle permet de
slectionner des actions suivant la valeur de
certains mots. La structure case ne peut que
comparer des chanes de caractres.
case chane in
motif1) commande1 ;;
motif2) commande2 ;;
...
motifn) commanden ;;
esac
Youssef GHANOU
137
Les diffrents motifi sont des expressions
reconnues par le mcanisme dexpansion des
noms de fichiers. De plus, le caractre "|",
lorsquil est utilis dans un motif, permet
lunion des deux expressions entre lesquelles il
est plac.
Linterprteur recherche le plus petit entier i
infrieur n tel que chane rponde au motifi. Il
excute alors la commandei (et elle seule). Il est
courant dutiliser * comme dernier motif (cas par
dfaut) dun aiguillage.
Youssef GHANOU
138
La structure de contrle while (itration non
borne) est certainement la structure que lon
retrouve le plus dans tous les langages de
programmation
while commandes1
do commandes2
done
Youssef GHANOU
139
Dans le cas du while, tant que le statut de
commandes1 est vrai, commandes2 est
excute. commandes1 peut tre forme dun
ensemble de commandes enchanes par des
pipes (|).
Youssef GHANOU
140
until commandes1
do commandes2
Done
La structure de contrle until nest rien
dautre que le test inverse du while. On
pourrait traduire le while par "tant que" et le
until par "jusqu ce que".
Youssef GHANOU
141
Commande expr
Commande expr : Permet dexcuter les
oprations arithmtiques de base
syntaxe
`expr var1 op var2`
op : +,,*,/,%
Exemple
n=$(expr $a + $b)
Youssef GHANOU
142
e1 + e2 retourne le rsultat de l'addition
e1 - e2 retourne le rsultat de la soustraction
e1 * e2 retourne le rsultat de la
multiplication
e1 / e2 retourne le rsultat de la division
e1 % e2 retourne le rsultat du modulo
Youssef GHANOU
143
e1 | e2 si e1 est gale 0 retourne e2 sinon retourne
e1
e1 & e2 si ni e1 ni e2 ne sont gales 0 retourne e1
e1 < e2 retourne 1 si e1 est plus petit que e2 sinon 0
e1 <= e2 retourne 1 si e1 est plus petit ou gal e2
sinon 0
e1 = e2 retourne 1 si e1 est gal e2 sinon 0
e1 != e2 retourne 1 si e1 est diffrent de e2 sinon 0
e1 > e2 retourne 1 si e1 est sprieur e2 sinon 0
e1 >= e2 retourne 1 si e1 est suprieur ou gale e2
sinon 0
Youssef GHANOU
144
Exemple
a=3
b=$(expr $a + 5)
La variable "b" va rcuprer le rsultat du
calcul effectu entre parenthses, c'est--dire
"8". La variable "a" est inchange.
Youssef GHANOU
145
Imbrication de if/else
Syntaxe :
if condition1
then
liste_commandes1
elif condition2
then
liste_commandes2
else
liste_commandes3
fi
Youssef GHANOU
146
test expression ou [ expression ]
test value expression et retourne le rsultat
de cette valuation. test appel sans
argument retourne faux.
Vous devez utiliser une des deux syntaxes,
mais pas les deux en mme temps ! Il ne faut
pas non plus oublier de mettre les caractres
sparateurs (blanc, tabulation ...) entre les
caractres [ et ].
Youssef GHANOU
147
Test sur des fichiers et rpertoires
test -w fichier:vrai si fichier existe et est autoris en
criture.
test -r fichier vrai si fichier existe et est autoris en
lecture.
test -x fichier vrai si fichier existe et est xcutable.
test -d fichier vrai si fichier existe et est un rpertoire
test -f fichier vrai si fichier existe et n'est pas un
rpertoire.
test -s fichier vrai si fichier existe et a une taille non
nulle.
Youssef GHANOU
148
Test sur des chanes
test -z s1: vrai si la chane s1 est vide (a une
longueur de 0 caractre).
test -n s1 : vrai si la chane s1 est non vide.
test s1 = s2 :vrai si les chanes s1 et s2 sont
identiques.
test s1 != s2 :vrai si les chanes s1 et s2 sont
diffrentes.
test s1 : vrai si la chane s1 n'est pas la chane
nulle.
Youssef GHANOU
149
Test sur des nombres
test n1 -eq n2 : vrai si l'entier n1 est gal l'entier n2.
test n1 -ne n2: vrai si l'entier n1 est diffrent de
l'entier n2.
test n1 -gt n2 : vrai si l'entier n1 est suprieur
l'entier n2.
test n1 -lt n2: vrai si l'entier n1 est infrieur l'entier
n2.
test n1 -ge n2: vrai si l'entier n1 est suprieur ou gal
l'entier n2.
test n1 -le n2 :vrai si l'entier n1 est infrieur ou gal
l'entier n2.
Youssef GHANOU
150
On peut combiner toutes ces primitives avec
les oprateurs :
! ngation
-a ET logique
-o OU logique
( expression ) pour regrouper logiquement
plusieurs tests.
Youssef GHANOU
151
exec
exec ralise des redirections d'E/S
exec 1 > std.out
# redirige la sortie
standard vers le fichier std.out
exec < fic
# redirige l'entre standard
sur le fichier fic.......
exec < /dev/tty
# rtablit l'entre
standard
Youssef GHANOU
152
variables prdfinies gres automatiquement
par le shell :
$# nombre de paramtres d'une commande,
ceux-ci tant dsigns par $1 $9 ($0 le nom de
la commande elle-mme).
$* la liste des paramtres $1 $2 ...
$$ le numro du processus en cours (trs utile
dans la suite)
$! le n du dernier processus lanc en arrire
plan
Youssef GHANOU
153