SlideShare a Scribd company logo
1 of 201
1
Filière (DUT) : Génie Informatique-S2
Année Universitaire : 2018– 2019
Diaporamas du cours :
Systèmed’Exploitation(Linux)
Préparé par : Idriss CHANA
Enseignant chercheur au Département Génie Informatique, EST-UMI Meknès
Email : i.chana@umi.ac.ma
Au Profit des Etudiants de La Deuxième Année de la filière GI inscrits en
semestre S2
Système d’exploitation « Linux »
2
Professeur : Chana Idriss
E-mail: idrisschana@gmail.com
Informations Générales
3
Introduire les notions de base des systèmes d'exploitation.
Différence entre un Système Open Source (Libre) et un système
propriétaire
Se familiariser avec le système Open Source de type linux (Ubuntu)
Maitriser la manipulation en mode commande des systèmes Linux
Manipulation des commandes de gestion des fichiers Linux
La programmation sous les système Linux
Objectifs du Module
4
Le contenu
0- Introduction à l’informatique
1- Introduction au Système d’exploitation (OS)
- Pourquoi un OS ?
- Qu'est ce que un OS?
2- Système d’exploitation open source
3. Système de fichiers et Gestion de fichiers et répertoires
- Manipulation des fichiers et répertoires - les liens –recherche des fichiers(find ,-exec) -
- Compression et archivage
4. Gestion des droits d’accès aux fichiers et répertoires (chmod) et l’éditeur vi
5. Extraire , trie et filtres et d’autre opération sur les fichiers :
‘’wc, grep, cat, sort,uniq,cut,sed,split comm,diff ’’
6. Mécanismes de redirection et les Tubes(’ <’ , ‘<<‘, ‘>,’>>, ’|’’ pipe et double pipe ‘||’).
7- Gestion de processus
8. Automatisation des taches,
- date, at , crontab
9- le Shell et les Scriptes ( programmation sous linux)
- Commandes d’entée et sortie ( echo , read)
- Variables
- alternatifs contrôle(if) commande (test), boucles (for …, while ….,until) et expression
- Paramètres de scriptes ( $0, $#,$? ) ,($1, $2 ….$n)
5
6
Technicien Spécialisé et Système
D’exploitation Linux
7
Évaluation
• Cours & TD 50%
- Participation pendant des séances de TD et de cours
- DS théorique
• TP 50%
8
INTRODUCTION :
• On peut dire qu’un System d’exploitation : est Une
interface qui sert d’intermédiaire entre l’utilisateur
et l’ordinateur
Système d’exploitation
9
Composantes internes d’un ordinateur
INTRODUCTION :
10
Composantes Externes/ Périphériques
d’un ordinateur
INTRODUCTION :
11
Un SE joue également le rôle de la Coordination et du
contrôle de l’ensemble des composantes (matériels) de
l’ordinateur et les périphériques qui lui sont rattachés
Ordinateurs et Logiciels
Un S.E est aussi Une interface qui sert d’intermédiaire
entre les logiciels et l’ordinateur
MicrosoftWord
Open Office
Dev Cpp
Etc ….
Paint
Internet
Explorer
Application de paie
INTRODUCTION :
12
INTRODUCTION :
13
Le SE assure un rôle de partage des ressources ( RAM
, Micro-process)
2mins
temps
100% Ressource
Route
A
Route
B
Route
A
Route
A
_
INTRODUCTION :
14
INTRODUCTION :
15
millisecondes temps
100% microprocesseur
Log. A Log. B Log. C Log. D
_
INTRODUCTION :
16
• Le SE assure un rôle de partage de temps du calcul de
microprocesseur et l’utilisation de l’espace mémoire de la
RAM
millisecondes
temps
% microprocesseur
Log. A
Log. B
Log. C Log. D
100%_
Log. B
Log. C
Log. D
Log. A
Log. A
70% _
50% _
Le S.E Assure un partage optimale du microprocesseur et
de la RAM.
INTRODUCTION :
17
Le S.E assure également la Gestion Efficace des conflits
Matériels et logiciels et des erreurs :
 Occupation excessive (trop) de microprocesseurarrêt du programme et signale
 Deux application concurrentes RAM  Allocation de la mémoire pour chacune
 Matériel mal branché  signale à l’utilisateur
 Manipulation non autorisé par l’utilisateur signale à l’utilisateur
INTRODUCTION :
Touts ces conflits pourraient générer un arrêts totale de la
machine, mais le S.E assure la continuité de fonctionnement
de l’ordinateur en arrêtant juste le programme en erreur
18
INTRODUCTION :
Récapitulatif ?
Un Système d’Exploitation est:
Intermédiaire entre l’utilisateur/Ordinateur
 Intermédiaire entre logiciels(applications) /Ordinateur
Contrôle et coordonne tout le matériels
Partage optimale du microprocesseur et RAM
Gestion des conflits Matériels et logiciels)
19
Définition d’un système d’exploitation:
Un système d’exploitation est un ensemble de programmes qui coordonnent le
fonctionnement des différents composants matériels et logiciels d’un système
informatique.
INTRODUCTION
Rappel Système D’exploitation
On peut donc tirer la définition Suivante
20
Apparition des S.E
INTRODUCTION
Avant les années 80
1955-1970 : Premiers systèmes : traitement par lots (batch)
1970-1980 : Unix et ces versions , Par Dennis Ritchie et Ken Thompson au
Laboratoires Bell ATT de New Jersey.
Après les années 80
Microsoft Appele Groupe de volontaire
21
1er S.E : MS-DOS : fonctionne en
mode commandes
INTRODUCTION
22
INTRODUCTION
23
INTRODUCTION
24
INTRODUCTION
25
INTRODUCTION
26
INTRODUCTION
27
INTRODUCTION
28
INTRODUCTION
29
Il y a aussi les S.E MAC OS ( MACINTOSH)
INTRODUCTION
30
INTRODUCTION
Il y a aussi les S.E Libre (Open source )
31
Récemment
INTRODUCTION
32
~~20%
~~80%
INTRODUCTION
33
INTRODUCTION
Un programme informatique:
Que ce soit un noyau ou un logiciel, il 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.
Quand on achète un logiciel (Microsoft Office par exemple) ou un système
d'exploitation on a un CD qui contient le binaire, mais pas les sources. Il est donc
impossible de savoir comment le programme est conçu. Par conséquent, on ne
peut pas modifier le programme. On peut seulement l'utiliser et éventuellement le
copier à l'identique.
34
Système Open sources
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 jalousement
gardé par Microsoft. Imaginez que c'est un peu comme le Coca-Cola :
personne ne connaît la recette de fabrication .
On ne peut donc pas le modifier ou regarder comment il fonctionne à
l'intérieur.)
35
L’accès libre au code source accélère le progrès en matière d'informatique car
l'innovation dépend de la diffusion du code source.
les quatre libertés fondamentales pour dire qu’un Système est open source:
• Liberté d'exécution : tout le monde a le droit de lancer le programme, quel
que soit le but ;
• Liberté de modification : tout le monde a le droit d'étudier le programme et
de le modifier, ce qui implique un accès au code source ;
• Liberté de redistribution : tout le monde a le droit de rediffuser le
programme ;
• Liberté d‘amélioration : tout le monde a le droit de redistribuer une version
modifiée du programme ;
Logiciel Libre / Logiciel Propriétaire
Système Open sources
36
Avantages et inconvénients des logiciels libres
La qualité : Le fait que tout le monde peut y travailler (révision , correction …) ,
il n y aura plus de bug , ni Verus
La réactivité: correction des Bug très rapidement car il y a de nombreuse
personne qui travaillent dessus.
Le coût : cout faible( généralement gratuit) car il est fait par des passionnés
L’autonomie : MAJ de votre logiciel vous-même, sans attendre l’avis ou
l’accord de la boit qui vous a vendu le programme
Système Open sources
Avantages (1/2)
37
38
La libre-concurrence : Grace au logiciel libre, il ne reste plus place au
monopole ! Cela favorise donc la concurrence entre entreprise, permet le
développement de nombreuses PME. Plus besoin de prendre le logiciel X
parce que c’est le seul disponible (prix élevé) puisque des alternatives
libres existent
La maintenance: la continuité et la maintenance d’un logiciel
propriétaire dépends de la volonté de l’entreprise et de sa stratégie
L’entre-aide : Vous trouvez toujours quelqu’un à vous aider pour
débloquer vos problème car c’est la vocation des volontaires.
Avantages et inconvénients des logiciels libres
Système Open sources
Avantages (2/2)
Avantages et inconvénients des logiciels libres
Système Open sources
inconvénients :
• Trop de choix : L'utilisateur peut avoir à choisir entre plusieurs logiciels, ce
qui ne simplifie pas forcément l'apprentissage ou la communication entre les
différents utilisateurs de logiciels libres .
• Difficultés d’intégration : Il est très difficile en ce qui concerne les
logiciels libres de les intégrer dans une solution logicielle, à moins que la
solution entière ait été développée en libre par une équipe
• Incompatibilités : Les logiciels libres sont rarement compatibles avec les
logiciels propriétaires. Vous avez déjà essayé d’ouvrir un fichier .doc créé avec
Microsoft Office dans Open Office ?
• Manque de documentation : C’est bien connu, la plupart des codeurs
préfèrent coder qu’écrire de la documentation
• Modèles économiques compliqués : Enfin, les modèles économiques
permettant le développement du logiciel libre sont complexes… très
complexes… Il est beaucoup plus difficile de gagner de l’argent et de vivre de
la production de logiciels libres par rapport aux logiciels propriétaires.
39
Historique
UNIX est un système d'exploitation, créé en 1969 par Ken Thompson et Dennis
Ritchie. Sa conception a été particulièrement soignée, et apportait plusieurs
innovations, notamment le choix d'utiliser plusieurs outils simples et spécialisés. Il
est l'un des systèmes d'exploitation les plus populaires au monde, en raison du
grand nombre d'architectures qu'il supporte .
Project GNU:
Est un projet lancé par Richard Stallman, un chercheur du MIT.
Le but est de dévellopper un OS complet, libre et qui se base sur Unix afin de
contrer le développement croissant des logiciels propriétaires( le prix Unix devenait
de plus en plus payant).
Cependant, en 1991, le projet GNU n'avait toujours pas de noyau et tournait sur
des Unix propriétaires.(Stallman avait créer les programmes de base:(programme
de copie de fichier, suppression de fichier, éditeur de texte).
Système Open sources Linux
40
Historique (suite)
En 1991, Linus Torvalds, un étudiant de l’université de Helsinki, développe
un noyau en s'inspirant des principes du système d'exploitation UNIX.
Le OS prend le nom de Linux ( en référence à son créateur).
Project GNU
Le projet GNU (programmes libres) et Linux (noyau d'OS) ont
fusionné pour créer GNU/Linux.
Project
LINUX
GNU/LINUX
Système Open sources Linux
41
Les distributions de Linux
Il existe une très grande variété de distributions, ayant chacune des objectifs
et une philosophie particulière.
Les éléments différenciant principalement les distributions sont :
 la convivialité (facilité de mise en œuvre).
 l'intégration (taille du parc de logiciels validés distribués).
La notoriété (communauté informative pour résoudre les problèmes),
l'environnement de bureau (Gnome, KDE, ...).
Le point commun est le noyau ( kernel) et un certain nombre de commandes.
Système Open sources Linux
42
Les distributions Commerciales
Il 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.
Suse (Novell): http://www.suse.com/ L'alternative principale. Facile à installer,
conviviale et stable. Obtiens le support des fournisseurs de logiciel et de
matériel.
Mandriva (anciennement Mandrake): http://mandrivalinux.com/ Conviviale,
facile à installer, plus innovante, mais moins stable. Cible principalement les
utilisateurs individuels. Peu pris en charge par les fournisseurs de logiciel et de
Système Open sources
43
Les distributions Commerciales
Fedora Core: http://fedora.redhat.com/ Stable, sûre, conviviale, facile à
installer. Sortie fréquente de nouvelles versions complètes.
Debian: http://debian.org/ Très stable et sûre, mais plus difficile à configurer et
à installer. Conviviale pour les développeurs mais pas encore pour les
utilisateurs. Version stables pas assez fréquentes (tous les 2 ou 3 ans). La
meilleure pour les serveurs, mais pas pour les débutants.
Ubuntu Linux: http://ubuntulinux.org/ La distribution communautaire qui
progresse le plus. Basé sur Debian mais avec une version stable tout les 6
mois. Conviviale pour les utilisateurs. Bonne pour les débutants.
Mandriva Community: http://mandrivalinux.com/ Facile à installer, sûre,
conviviale, sortie fréquente de versions complètes, mais moins stable (pas
assez de tests et de prise en compte des retours des utilisateurs et testeurs)..
Système Open sources
44
FONCTIONEMENT DE BASE LINUX
45
• Le système de fichiers d'un système d'exploitation est un ensemble de
principes et de règles selon lesquels les fichiers sont organisés et
manipulés. Chaque système d'exploitation possède son système de fichier
privilégié, même s'il peut en utiliser d'autres
Systèmes de fichiers
PARTITIONEMENT DISQUE DURE
Gestion de fichiers et répertoires
46
Systèmes de fichiers
Systèmes de fichiers: c’est une « subdivision du disque » dur
selon un certain format.
Gestion de fichiers et répertoires
47
Systèmes de fichiers Linux
• 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. Ainsi, sous Linux et depuis longtemps, il n'y a pas besoin de faire de
défragmentation.
• 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.
A noter que l'ext2 et l'ext3 sont parfaitement compatibles entre eux, dans un sens
comme dans l'autre.
Gestion de fichiers et répertoires
48
PARTITIONEMENT DISQUE DURE
Appellation des disques Dures
L’appellation "à la Linux" est un peu plus complexe que celle de Windows.
Windows
Linux
C:
D:
E:
…
hda
hdb
hdc
sda
…
Gestion de fichiers et répertoires
49
Appellation des disques Dures
L’appellation "à la Linux" est un peu plus complexe que celle de Windows.
La première lettre indique si le disque est de type IDE ou SCSI (un
typede connexion différent à la carte mère). Si c'est une IDE, la lettre est
un h, si c'est un SCSI (ou un S-ATA), la lettre est un s.
d :cette lettre ne change pas ( drive).
[a-d] :indique les differents disques durs ,c’est a,b,c ou d.
hda: 1er disque dur/ hdb: 2ème disque dur/hdc le 3ème ….
# :est un numéro qui permet de numéroter les partition.
exemple: hda1 : 1er partition de disque dur hda
hdb10: 10ème partition de disque dur hdb
hd[a-d] #
PARTITIONEMENT DISQUE DURE
Gestion de fichiers et répertoires
50
Organisation des dossiers
•La racine
un "gros dossier de base qui contient tous les autres dossiers et fichiers".
Sous Windows, il y a en fait plusieurs racines. "C:" est la racine de votre disque dur
Sous Linux, il n'y a qu'une et une seule racine : "/".
Architecture des dossiers
Sous Windows, un dossier peut être représenté comme ceci :
"C:Program FilesWinzip".
Sous Linux : Il n'y a pas de "C:", la racine (le début) s'appelant juste "/".
Gestion de fichiers et répertoires
51
ARBORESCENCES DES FICHIERS
Le système de fichiers sur Linux est similaire à ce que l'on retrouve dans
Windows, i.e. 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/khalil/
Gestion de fichiers et répertoires
52
ARBORESCENCES DES FICHIERS
/ ( root)
bin
dev
home root lib
var
tmp
pippo khalil
Plusieurs répertoire sont rattaché à la racine.
Gestion de fichiers et répertoires
53
ARBORESCENCES DES FICHIERS
/ : Répertoire Racine: contient les répertoires principaux.
/bin : (Commande de base du système) (contient des éxecutables essentiels au
système, employés par tous les utilisateurs ( par exemple, les commandes
ls,rm,cp,chmod,mount,… ).
 /etc :(contient les commandes et les fichiers nécessaires à l’administrateur du
sytème (fichiers passwd,group,inittab,ld.so.conf,lilo.conf…)/ fichiers de configuration de
l’ordinateur.
/ boot: (Images, fichiers de configuration du noyau ….) ( contient les fichires
permettant à Linux de démarrer).
/dev : (contient les points d’entrée des périphériques)
 /lib: (contient des bibliothèques partagées essentielles au système lors du
démarrage)/bibliotèques de base du systèmes ( partagées)
54
ARBORESCENCES DES FICHIERS
 /mnt : (contient les points de montage des partitions temporaires(cd-
rom,disquette…): /mnt/usbdisk/, /mnt/windows/…
/opt: (contient des pakages d’applications supplémentaires)/ ( outils spécifiques
installés par l’administrateur.
/root: (répertoire de l’administrateur root)
/tmp: (contient les fichiers temporaires)
/usr: (Hiérarchie secondaire)/ programmes utilisateurs ordinaires, non essentiels au
systèmes: /usr/lib, /usr/bin…
/sbin: (contient les binaires système essentiels (par exemple la commande
adduser)/programmes d’administration du système./ commandes réservées à
l’administarteur.
/home: (dossiers de travail des utilisateurs. Ex:/home/pippo)/ Répertoire utilisateur
/var: (données variables( dynamiques)
55
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
invite ("prompt")
le shell est prêt à recevoir des
commandes rentrées au clavier
Le shell est un interpréteur de commandes qui invite l’utilisateur à
saisir une commande et la fait ensuite exécuter
56
L’INVITE DE COMMANDES
P
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 :
$ : signifie que vous êtes en train d'utiliser un compte utilisateur "normal",
# : signifie que vous êtes en mode super-utilisateur,
pippo@localhost :~$
57
L’INVITE DE COMMANDES
pippo@localhost :~$ ls
Desktop Examples Images
Invite de commande suivie de
la commande que j’ai tapée ls
Réponse de l’ordinateur à
cette commande
Cela signifie que le répertoire actuel est constitué de 3 dossiers :
Desktop , Examples et Images.
En général, le système colore les éléments pour que l'on puisse
distinguer facilement les dossiers des fichiers.
Si vous n'avez aucune réponse, c'est que vous êtes dans un dossier qui
ne contient aucun fichier ou dossier.
58
LES PARAMETRES
P
Les paramètres sont des options que l'on écrit à la suite de la commande.
pippo@localhost :~$ Commande Paramètre
pippo@localhost :~$ ls -a
Exemples de paramètres:
59
HISTORIQUE DES COMMANDES
P
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 ».
60
Raccourcis Utiles
P
: Effacer le contenu de la console .
:Message EOF( fin de fichier) à la console( possède la même fonction
que la commande « exit ».
:Ramène le curseur au début de la commande.
:Supprime tout ce qui est à gauche du curseur.
:Supprime tout ce qui est à droite du curseur.
:Supprime le dernier mots situé à gauche du curseur.
61
ARRET ET REDEMARRAGE DU SYSTEME
halt : permet d’arrêter le système. Reboot : permet de redémarrer le
système.
L’arrêt du système est une
opération qui est du ressort de
l’administrateur.
On peut la realiser uniquement
sur le compte root.
Il est égalment possible que votre
gestionnaire de bureau vous donne
le moyen d’arrêter l’ordinateur par
l’intermediare de l’interface
graphique.
62
COMMANDES DE BASES : Répértoires
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)
« pour cacher un fichier sous linux, on le précède d’un « . »)
ls [options] [noms]
Exemple :
ls -l /home/pippo
Commande –options noms
Commande ls
noms du ficher qu’on veut lister. Si ce paramètre
est absent, ls affichera les fichiers du répertoire
courant.
63
COMMANDES DE BASES : Répertoires
 ls a («all»: tous) Affiche tous les
fichiers (y compris les fichiers .*)
 ls l (long) Affichage en format long
(type, date, taille, propriétaire,
permissions)
 ls t (temps) Affiche les fichiers les
plus récents en premier.
 ls d (directory) Affiche du nom du
répertoire et non de son contenu.
Commande ls
Les principales options:
ls S (“size”: taille) Affiche les fichiers les
gros en premier.
 ls r («reverse»: inversé) Affiche en
ordre inverse.
 ls ltr (les options peuvent être
combinées) Format long, les fichiers les
plus récents à la fin.
64
COMMANDES DE BASES : Répertoires
La commande cd( change directory) permet de changer le répertoire de travail .
( permet de naviguer dans les répertoires)
cd [réperoire]
Exemple :
Si on veut se positionner dans le répertoire /etc, on fera ceci:
pippo@localhost :~$ cd /etc
pippo@localhost : /etc$
Commande cd
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).
65
COMMANDES DE BASES : Répértoires
 cd : Permet de se placer dans le
répertoire personnel de l’utilisateur
(home)
 cd.. : Ramène dans le répertoire
parent.( remonter d’un répertoire dans
l’arborescence)
 cd rep : va dans le répertoire rep
à partir du répertoire où vous êtes.
Commande cd
cd /usr/bin: A va dans le répertoire
bin en écrivant tout l’arboresence.
 cd : une bonne astuce pour
revenir dans le répertoire d’où vous
veniez précédemment.
66
COMMANDES DE BASES : Répértoires
Remarque:
La commande cd, comme toutes les commandes utilisant des répertoires, permet de
spécifier deux types de chemins:
• Les chemins Relatifs: dépendent du dossier auquel vous vous trouvez, et
utilisent notamment le répertoire '..' (répertoire père). Exemple:cd ../.
• Les chemins Absolus: ils faut spécifier toute l’arborescence depuis la
racine . Exemple: cd /home/rep1
Les chemins absolus commençent toujours par la racine (/). Vous devez faire
ensuite la liste des dossiers dans lequels vous voulez entrer.
Commande cd
67
Opérations de base sur les répertoires
• Les chemins relatifs :Un chemin relatif est un chemin qui dépend du
dossier dans lequel vous vous trouvez.
Supposant que je suis dans la racine / et je
veux me déplacer au répertoire « games »
68
Opérations de base sur les répertoires
69
Opérations de base sur les répertoires
70
• Les chemins absolus :
les chemins absolus fonctionnent quel que soit le dossier dans lequel on
se trouve.
Un chemin absolu est facile à reconnaître : il commence toujours par la
racine (/). Vous devez faire ensuite la liste des dossiers dans lesquels
vous voulez entrer.
Par exemple, supposons que je suis dans /home/chana et que je
souhaite aller dans /usr/games. Avec un chemin absolu :
cd /usr/games
Opérations de base sur les répertoires
71
Opérations de base sur les répertoires
• Les chemins absolus :
72
• Les chemins absolus et chemins Relatifs:
Ici, comme c'est un chemin relatif, on part du dossier dans lequel on se
trouve (/home/mateo21) et on indique à la machine le chemin à suivre à
partir de là pour aller dans le dossier qu'on veut.
Opérations de base sur les répertoires
73
• Retour au Repertoire home:
Si vous voulez retourner dans votre répertoire home personnel, plusieurs
solutions s'offrent à vous :
il suffit d'écrire le chemin absolu en entier.
Opérations de base sur les répertoires
74
COMMANDES DE BASES : Répertoires
La commande pwd (print working directory): Affiche le répertoire courant
("répertoire de travail »)
pwd
Exemple :
pippo@localhost :~$ pwd
/usr/lib/news/bin
pippo@localhost :~$cd .. pwd
/usr/lib/news
La commande pwd): peut etre utilisée lorsqu’on désire obtenir un chemin absolu sur le
répertoire courant.
Cette commande est également utilisée par les scripts pour déterminer le répertoire à
partir duquel ils sont exécutés.
Commande pwd
La commande pwd n’accepte pas d’option.
75
COMMANDES DE BASES : Répertoires
La commande du (disk usage « utilisation du disque ») : Affiche les informations
sur la taille qu’occupe les dossiers sur votre disque.
Exemple :
pippo@localhost :~$ cd /usr/news
pippo@localhost : /usr/news$ du
Commande du
 du -h :Affiche la taille en Ko, Mo, Go,To.(pour human-readeable) )
 du –a : (du –ah) Affiche la taille des dossiers et des fichiers et des sous-dossier 
toute l’arborescence.
 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, on la combine à –h)
76
COMMANDES DE BASES : Répertoires
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’éxiste pas.
Si l’un des répertoires intermedaires n’existe pas, la commande mkdir retourne un
code d’erreur (exit status) sans créer le status ( sauf si l’option –p est spécifiée)
mkdir [-p] nouveau_répertoire
Exemple :
Si on veut créer le répertoire /tmp/ESTM/GI mais le répertoire /tmp/ESTM/GI
n’existe pas, on devrait normalement faire ceci:
pippo@localhost :~$ mkdir /tmp/ESTM/
pippo@localhost :~$ mkdir /tmp/ESTM/GI
Si on essaie de le créer, on reçoit le message suivant:
mkdir: cannot create directory ‘/tmp/ESTM/GI ’: No such file or directory.
On devra faire:~$ mkdir -p /tmp/ESTM/GI
Commande mkdir
77
COMMANDES DE BASES : Répertoires
La commande rmdir (remove directory) permet de supprimer le répertoire spécifié
sur la ligne de commande (répertoire). Si il existe des fichiers ou des sous
répertoires, la commande retournera un code d’erreur (exit status). (Pour supprimer
un répertoire, il faut qu’il soit vide)
rmdir [-p] répertoire
-p : permet de détruire tous les sous –répertoires vides.
répertoire : représente le nom du répertoire à détruire. C’est un
argument obligatoire.
Exemple:
~$ rmdir /tmp/ESTM/GI
~$ cd /tmp
~$ rmdir –p /tmp/ESTM/GI
rmdir: ESTM/GI : Whole path removed
~$ cd ESTM
ESTM : does not exist
~$
Commande rmdir
Nota: voir aussi la commande:
rm –r: pour supprimer des
répertoires contenants des
fichiers.
78
COMMANDES DE BASES : Gestions de Fichiers
La commande cp ( copy) permet de copier le contenu d’un fichier dans un autre.
cp [-i] [-p] fichier1 fichier2
cp [-i] [-p] [-r] source1 [source2...] répertoire
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 ces 3 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.
Si cp -p fichier1 fichier2 : (p : preserve) Copier le fichier1 en préservant tous les
attributs du fichier initial.
Commande cp
79
COMMANDES DE BASES : Gestions de Fichiers
La commande mv( move) : déplace ou renomme les fichiers.
mv [-i] source1 [source2...] destination
mv déplace les fichiers fichiers 1,fichiers 2, etc dans destination.
 Si destination est un fichier -> alors mv a pour action de renommer fichier1 en
destination.
mv fichier1 fichier2
 Si destination est un répertoire -> alors mv déplace fichier1 dans ce répertoire.
mv fichier1 repertoire.
 mv -i : (i:interactif) Demande de confirmation avant l’écrasement du fichier.
Commande mv
80
COMMANDES DE BASES : Gestions de Fichiers
La commande rm (remove) : Efface les fichiers ou les répertoires .
rm [-i] source1 [source2...]
rm : supprime les fichiers ou répertoires spécifiés sur la ligne de commande.
Exemple
 rm fichier1 : destruction du fichier fichier1
 rm fichier1 fichier2 : destruction des fichiers fichier1 et fichier2.
 rm fic* :Suppression de tous les fichiers qui commencent par fic .
Option [-i] : demande de confirmation avant écrasement
Commande rm
81
COMMANDES DE CONSULTATIONS : Fichiers
La commande cat (concatenate « concaténer »: joindre des ficiers
séquentiellement) : Affiche des fichiers et /ou concatène les fichiers spécifiés sur
la ligne de commande.
cat [fichier...]
Quand elle est appelée sans options sans nom de fichier, la commande cat répète
sur la sortie standard ce qui est saisi sur l’entrée standard.
Exemples:
~$ cat fichier1 fichier2 : Concaténation des deux fichiers fichier1 et fichier2
~$ cat Fruits : Affichage de contenu de fichier Fruits
banane
Cerise
Orange
Commande cat
82
COMMANDES DE CONSULTATIONS : Fichiers
La commande more : Affiche des fichiers page par page .
more [fichier...]
La commande less : Sa fonction est similaire à la commande more « Affiche des
fichiers page par page », mais elle permet en plus :
1- de revenir en arrière avec une page de moins en tapant « b »
2- de se déplacer vers le haut ou vers le bas avec les flèches de directions
less [fichier...]
Commandes more / less
83
Commandes de consultation de fichiers
• cat nom_fichier : afficher le contenu d'un fichier texte à l'écran
(sans pouvoir arrêter le défilement)
• more nom_fichier : afficher le contenu d'un fichier texte à l'écran
en arrêtant le défilement à chaque page (espace pour descendre
d'une page, entrée pour descendre d'une ligne, q pour quitter)
• less nom_fichier : pareil que more, mais dispose d'un peu plus
d'options (entre autre peut revenir en arrière : b pour revenir d'une
page, y pour revenir d'une ligne, il est aussi possible de se déplacer
vers le haut ou vers le bas avec les flèches de direction)
84
COMMANDES DE CONSULTATIONS :
La commande head : Affiche les n premières lignes d’un fichier, alors que tail
affiche les dernières lignes d’un fichier et sort trie le fichier par ordre
Si n n’est pas précisé, il prend par défaut la valeur 10.
head [-n] [fichier...]
tail [-n] [fichier...]
Commandes head / tail et sort
 -n :Nombre de lignes à afficher depuis le début de fichier .( -n suivi
du nombre de lignes, par exemple –n 3 ou -3)
85
Commandes de consultation de fichiers
• head nom_fichier : afficher uniquement le début du fichier.
-n suivi d'un nombre: permet d'afficher le nombre de lignes que vous
voulez.
Par exemple, si vous ne voulez que les 3 premières lignes, tapez :
head –3 nom fichier ou head –n 3 nom fichier
• tail nom_fichier : afficher uniquement la fin du fichier
• tail nom_fichier : afficher uniquement la fin du fichier
86
COMMANDES DE CONSULTATIONS : Fichiers 2
La commande touch : est utilisée pour changer les dates d’accès et de
modifications d’un fichier ( d’où le « on touche »le fichier pour faire croire à
l’ordinateur qu’on vient de le modifier alors qu’on n’a rien changé.
Commande touch
87
Système de fichiers
Chaque contenu de fichier se voit attribuer un numéro d'identification appelé inode.
Sous les systèmes LINUX tout élément est représenté sous forme de fichier.
(Un périphérique, un écran, une imprimante, un répertoire…. TOUT EST FICHIER)
Un répertoire est un fichier qui contient la liste des fichiers sensés être stockés dans
ce répertoire.
L'ensemble des fichiers est architecturé autour d'une unique arborescence dont la
base, appelée racine, est notée «/».
La liste des noms de fichiers est stockée dans un endroit différent de leur contenu.
88
COMMANDES Gestions de Fichiers
Inodes
A tout fichier est associé une structure de données ( sur le disque)
appellée Inode ( Information node).
Dans chaque inode se trouvent différentes informations:
Type de fichier ( fichier standard, lien symbolique, répertoire…)
Les droits d’accès ( utilisateurs, groupes, …)
Le proprietaire (UID)
Le groupe proprietaire ( GID)
Taille du fichiers en octets
Dates
Pour connaître le numéro d'inode d'un fichier, vous devez taper la
commande suivante :
ls –i nom_du fichier
• ls –li :permet d’afficher, pour chaque fichier, le numéro d’inode.
• ls –ali :permet de voir en plus des fichiers ( et les fichiers
cachés)
89
COMMANDES Gestions de Fichiers
Inodes
Un fichier est repéré de manière unique par:
 le système de fichier auquel il est attaché
Son inode
90
COMMANDES DE GESTIONS DE FICHIERS
Liens Physiques/ Liens Symboliques/
Liens Physiques ( hard link) Liens Symboliques ( soft link)
•Création d’un nouveau nom pour le
même inode.
•Impossible de faire un lien physique vers
un répertoire
•Impossible de faire un lien physique vers
un autre volume (partition)
• c’est des fichiers spécial contenant le
chemin d’accès à un autre fichier (
correspond aux « raccourcis » de
Windows).
• Création d’un nouvel inode de type lien
symbolique.( -> possède son propre inode)
•Le bloc de données contient une chaine de
caractères représentant le chemin (relatif
ou absolu) vers un fichier.
Un lien est un couple ( nom_de_fichier, numéro d’inode).
On peut créer 2 type de liens:
91
COMMANDES DE GESTIONS DE FICHIERS
La commande ln : permet de créer des entrées multiples dans l’arborescence d’un
système de fichiers pour un même fichier. ( permet de créer des liens entre fichiers).
Sans option, elle permet de créer des liens physiques.
ln Nom-fichier Nom_du_lien_hard
Avec l’option –s elle permet de créer des liens symboliques
ln -s Nom-fichier Nom_du_lien_soft
.
Commandes ln
Rappel:
Pour supprimer un lien
rm Nom_du_lien
92
Exemple : (différence entre liens physique et liens symboliques
1. Création d’un Répertoire TEST
2. .Une fois dans le dossier tests, créer un fichier « fichier » vide de 0bytes
3. Créer un lien physique « lien_pyh», qui partagera le même inode (le même contenu) que « fichier»
4. Créer un lien symbolique « lien_sym », en pointant vers le nom du « fichier »( et non vers l’inode).
1ère colonne de la commande ls indique : numéro inode.
3 ème colonne: le nombre de liens dures( nombre de fichiers partageant le même
inode)
6 éme colonne: dimension du fichier ( on remarque que le lien symbolique est un
fichier sur le disque occupant 7 bytes.
93
COMMANDES DE GESTIONS DE FICHIERS
Exemple : (différence entre liens physique et liens symboliques
Le fichier d’origine et le lien ont le même type de fichier « fichier régulier »
indiqué par le tiret en tête des permissions, alors que le liens symbolique a
un type différent (l: « lien »).
Le fichier d’origine et le lien physique ont le même horodatage( alors que le
lien symbolique affiche l’heure et la date de sa création.
Enfin on remarque, à la fin de la ligne du lien symbolique, une flèche en
direction du chemin du fichier vers le lien dur.
94
COMMANDES DE GESTIONS DE FICHIERS
Liens Physiques/ Liens Symboliques/
Schéma qui permet de comprendre les liens symboliques et les liens
physiques.
95
COMMANDES DE GESTIONS DE FICHIERS
Liens Physiques/ Liens Symboliques/
Liens physiques:
 Bien qu’ils économisent toujours de la place, les liens physiques sont
indiscernables des fichiers d’origine.
Si vous supprimer le fichier d’origine, cela n’affecte pas le contenu du lien
physique.
Le contenu est supprimé quand il n’y a plus aucun fichier ( lien physique) qui y
fait référence.
Liens Symboliques
 La suppression du fichier, ne supprime pas le fichier référencé par le lien !
96
Commandes de gestion de fichiers
• ln fichier_existant lien : créer un lien dur entre
les deux fichiers (ln pour link)
• ln -ds répertoire_existant lien : créer un lien
symbolique entre les deux répertoires (d pour
directory)
• ln -s fichier_existant lien : créer un lien
symbolique entre deux fichiers (s pour
symbolic)
97
COMMANDES DE RECHERCHE: Fichiers 3
La commande find : Permet de rechercher des fichiers dans l’arborescence à
partir du point spécifié.( recherche des fichiers dans une hiérarchie de répertoires. )
Commandes find
98
Commandes de recherche
find recherche les fichiers actuellement présents
La commande find s'utilise de la façon suivante :
find "où" "quoi" "que faire avec«
(seul le paramètre "quoi" est obligatoire)
• Où : c'est le nom du dossier dans lequel la commande va faire la
recherche. Tous les sous-dossiers seront analysés.
• Quoi : c'est le fichier à rechercher. On peut rechercher un fichier
par son nom, mais aussi en fonction de sa date de dernière création,
de sa taille, etc.
• Que faire avec : il est possible d'effectuer des actions
automatiquement sur chacun des fichiers trouvés .
Par défaut, la commande find affiche les résultats trouvés et ne fait
rien d'autre avec.
99
Commandes de recherche
• Par nom
• Par taille
les fichiers qui font plus de 10 Mo
-type d : pour rechercher uniquement des
répertoires (directories).
• Supprimer les fichiers trouvés
• Par Type
100
Recherche de fichiers et de
répertoires
• Options des sélection des fichiers et répertoires
▫ name : recherche par nom de fichier
▫ type : recherche par type de fichier
▫ user : recherche par propriétaire
▫ group : recherche par l’appartenance à un groupe
▫ size : recherche par taille de fichier
▫ atime : recherche par date de dernier accès
▫ mtime : recherche par date de dernière modification
▫ ctime : recherche par date de création
▫ perm : recherche par autorisations d’accès
▫ links : recherche par nombre de références (links) aux fichiers
101
Recherche de fichiers et de répertoires
• Option de commande
▫ Les options de commande seront traitées pour chaque fichier
trouvé. En dehors de l’option –print qui montre le chemin
d’accès au fichier, on peut mettre en place l’option -exec
▫ Les commandes dont il est fait état derrière –exec seront
exécutées sans aucune demande de confirmation
▫ L’option –ok demande à l’utilisateur si la commande doit
effectivement être exécutée.
102
Recherche de fichiers et de répertoires
• 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 
103
Recherche de fichiers et de répertoires
suivi de –exec
• Pour accéder à un des fichiers trouvés, dans le
cadre de la commande placée derrière –exec,
utilisez le raccourci {}
 Exemple
• find . –user student –exec ls –l {}; ( affiche le
format long de la commande ls pour les fichiers trouvés)
• find . –type f –atime +13 –exec rm {} ; (supprime
les fichiers auxquels vous n’avez plus accédé depuis 13
jours)
104
Recherche de fichiers et de répertoires
• 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 . –ok rm {} ;
105
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 A majuscule.
▫ [a-m]* : fichiers dont le nom commence par une lettre de la plage a-m.
▫ *[1-5] : fichiers dont le nom se termine par un chiffre de la plage 1 à 5.
106
Archiver et compresser
107
Compression avec gzip et bzip2
• La compression d'un fichier se fait de manière suivante:
gzip fichier
• gzip renomme le fichier compressé en « fichier.gz ».
• La compression d'un fichier avec bzip2 utilise la même
syntaxe : bzip2 fichier
• bzip2 renomme le fichier compressé en « fichier.bz2 ».
• La décompression d'un fichier se fait à l'aide de la commande
suivante :
• gunzip fichier.gz
ou
• bunzip2 fichier.bz2
108
tar : assembler des fichiers dans une archive
• tar : permet d'assembler des fichiers dans un seul fichier avant de les
compresser.
1. Pour réunir les fichiers dans un seul gros fichier appelé archive.
 On utilise pour cela le programme tar.
2. Compresser le gros fichier ainsi obtenu à l'aide de gzip ou de bzip2.
• La syntaxe de tar est très simple :
tar options archive [fichiers]
 cvf pour créer une archive ;
 tvf pour lister le contenu d'une archive ; (comme ls pour les
répertoire)
 xvf pour restaurer le contenu d'une archive
Pour archiver le contenu du répertoire courant dans le fichier :
archive.tar tar cvf archive.tar * :
109
tar : assembler des fichiers dans
une archive
• La commande tar ne compresse pas automatiquement
les fichiers. Vous pouvez compresser les fichiers tar
avec :
▫ tar -czvf foo.tar
 Les fichiers tar compressés se voient attribuer
l'extension .tgz et sont compressés avec gzip.
• Pour décompresser un fichier tar, entrez :
▫ tar -xzvf foo.tar.gz
110
Gestion de Droits des
fichiers et répertoires
111
Exemple d'affichage de droits
Affichage des caractéristiques: ls -l
Type : ‘d’ pour les repertoire
‘-’ pour les fichiers
112
Permissions d'accès aux fichiers
• Les droits d'accès sont scindés en trois catégories
d'utilisateurs:
 les droits du propriétaire (user)
 les droits des membres du groupe (group)
 les droits de tous les autres (other)
Pour chaque catégorie, on peut attribuer les droits
suivants:
▫ la lecture ("read", r);
▫ l'écriture ("write", w);
▫ l'exécution ("execute", x).
• Si à la place d'un des caractères nous ne voyons qu'un
tiret "-", c'est que le droit n'est pas autorisé.
113
Permissions d'accès aux fichiers
114
Le changement des droits
• chmod : changer les droits d'accès d'un fichier (il faut
être root ou propriétaire du fichier)
• On utilise les signes (+ et -):
+ pour ajouter un droit,
- pour en enlever un,
Suivi des lettres r, w, x (lecture, écriture, exécution):
Exemple :
chmod -w nom_fichier : enlever les droits d'accès en
écriture sur le fichier pour tout le monde
115
Pour appliquer les changements seulement à certains
"niveaux d'appartenance", il faut utiliser :
-u pour user (propriétaire du fichier),
- g pour group
- o pour other (tous les autres)
-Exemple :
chmod ug +wx nom_fichier : ajouter, pour le
propriétaire et les membres du groupe, les droits en
écriture et en exécution sur le fichier
Le changement des droits (suite)
116
Modification des droits d’accès
• Vous pouvez utiliser des +, - ou = pour ajouter,
supprimer ou fixer des droits à l'une ou l'autre des
catégories u, g, o ou a tous (a) en précisant le type de
droit d'accès, r, w ou x.
▫ chmod g+w fic1
▫ chmod o-x rep
▫ chmod u+rx,g-w fic2
▫ chmod u=rwx,g=rx fic
▫ chmod a+r fic
117
Modification des droits d’accès
* Si le changement de droits s'applique à un répertoire,
vous pouvez changer tous les droits des fichiers et
répertoires inclus dans ce répertoire via l'option -R.
Exemple:
* Si nous souhaitons définir d'un seul mouvement toutes
les permissions d'un fichier :
chmod u=rwx,g=rw,o=r linux-test
118
Le changement des droits
Il existe une autre façon d'indiquer les permissions :
• On utilise un nombre de 3 chiffres en octale ie compris
entre 0 et 7 :
▫ le 1er pour le-la propriétaire
▫ le 2e pour les membres du groupes, et
▫ le 3e pour tous les autres). Les chiffes veulent dire :
119
Le changement des droits
120
Modification des droits d’accès
chmod nombre_en_base_8 fichier1 [fichier2 …]
• chmod utilise le codage binaire, fondé sur
l'association de valeurs numériques aux différentes
permissions :
▫ lecture : 4,
▫ écriture : 2,
▫ exécution : 1,
▫ pas de permission : 0.
121
Modification des droits d’accès
• Chaque triplet se code par l'addition de 4, 2, 1, ou
0.
▫ Pour un rwx il faudra ajouter 4+2+1=7,
▫ pour r-x il faudra 4+0+1=5 etc.
• La commande chmod permettant de positionner
rwxr-x--- sur fic1 par la commande suivante :
chmod 750 fic1
122
• Les droits Max des fichier et répertoire
▫ Répertoire 777 (rwxrwxrwx)
▫ Fichier normal 666 (rw-rw-rw-)
• Les droits effectifs : Max - umask
▫ pour les droits des Répertoire = 777 -umask
▫ pour les droits des Fichiers = 666 -umask
• La valeur de umask est fixer par la commande
umask nombre_en_base_8
La commande umask
•Exemple 2
▫Si on souhaite un accès en lecture
er écriture pour le propriétaire et en
lecture seule pour le groupe et le
reste de monde,
▫ umask 022
Exemple 1 : avec umask 006
▫Les droits effectifs sont:
pour les Répertoire = 777-006=771
pour les Fichiers =666 -006=660
123
Calcule des droits à partir de Umask
124
Umask Droits Fichiers Droits Repertoires
000 666 (rw-rw-rw-) 777 (rwxrwxrwx)
002 664 (rw-rw-r--) 775 (rwxrwxr-x)
022 644 (rw-r--r--) 755 (rwxr-xr-x)
027 640 (rw-r-----) 750 (rwxr-x---)
077 600 (rw-------) 700 (rwx------)
277 400 (r--------) 500 (r-x------)
135 642(-rw-r---w-) 642(rw-r---w-)
Le dernier cas ne respecte pas la règle de calcule,
car Linux interdit de créer un fichier en exécution par défaut
TD2: Exercices sur les droit d’accés :
Soient les fichiers fich1 , fich2, fich3 et le répertoire REP1 qui contient deux autre
fichiers f_rep1 et f_rep2
1- en utilisant (r,w,x) et { -, +,= } :
1.a- Attribuer les droits en lecture/ écriture pour le propriétaire et en lecture seule
pour le groupe et le reste de monde sur les fichiers fich1 et fich2
1.b- Attribuer les droits d’exécution sur fich3 pour le groupe seul
1. c- Attribuer les droits en lecture/ execution pour le propriétaire et en écriture
seule pour le groupe sur REP1 et ses fichiers
2 – Refaire les questions ( 1.a , 1.b et 1.c ) en utilisant les chiffres en base octale
3- à quoi sert la commande umask
4- donner la commande qui fixe la valeur de umask à 202
5- Que serait les droits des fichier et répertoire créés après l’execution de la commande
de la question 4 , faite le calcul
125
L'éditeur vi
• Lançons Vi :
[root@mistra /root]# vi
• vi comprend deux modes : un mode "commande" et un mode "insertion",
après le lancement de vi nous sommes en mode commande : appuyez sur la
touche "Echap" puis sur "a". Vous voyez en bas de l'écran apparaître la
ligne "-- INSERT --". Nous pouvons commencer notre texte :
• Nous sortons du mode texte en appuyant à nouveau sur la touche "Echap".
La mention "-- INSERT --" disparaît, nous sommes en mode commande
• Tapez maintenant " :w linux-test"
• Si vous souhaitez quitter sans enregistrez les dernières modifications,
passer en mode commande et taper " : q!".
• Si vous souhaitez quitter sans enregistrez les dernières modifications,
passer en mode commande et taper " :w q!".
126
L'éditeur vi
D'autres commandes vi.
A permet d'ajouter du texte à la fin de la ligne.
i permet d'ajouter du texte avant le curseur.
o permet d'ajouter une ligne en dessous du curseur.
O permet d'ajouter une ligne au dessus du curseur.
le retour chariot permet d'aller à la ligne suivante.
dd permet de supprimer la ligne courante.
x permet de supprimer le caractère avant le curseur.
u permet d'annuler la dernière commande effectuée
127
Extraire, trier et filtrer des
données
128
grep : filtrer des données
rechercher dans un fichier texte le mot voulu et
affiche la ligne où il se trouve
• Syntaxe : grep [option] modèle_de_critères [fichier1 …]
• Les options du grep les plus utiles sont :
▫ i : pour ne pas tenir compte des majuscules/minuscules,
▫ v : toutes les lignes ne contenant pas le critère,
▫ n : pour avoir les numéros de ligne,
▫ m NUM: permet de s’arrêter après NUM solutions
trouvées.
▫ E : pour les expressions régulières plus compliquées,
▫ c : la commande ne retourne que le nombre de lignes
trouvées
▫ r : rechercher dans tous les fichiers et sous-dossier
129
grep : filtrer des données
• Le modèle de critères peut contenir les caractères
spéciaux suivants :
▫ […] : Plage de caractères permis à cet emplacement
▫ [^…] : Plage de caractères interdits à cet emplacement
▫ . : Un caractère quelconque (y compris un espace)
▫ * : Signe de répétition. Agit sur le caractère placé
devant le *
▫ $ : Matérialise une fin de ligne
▫ | : ou
▫ ^ : début de ligne
▫ {…} : Caractère de répétition, entre les accolades
 {nombre} nombre exacte
 {nombre,} nombre minimum
 {nombre1,nombre2} de nombre1 à nombre2
130
Commandes de recherche
• grep mot nom_fichier : rechercher dans un fichier texte le mot voulu et
affiche la ligne où il se trouve
• grep -l mot nom_fichier : rechercher dans un ou plusieurs fichiers texte
le mot voulu et affiche le nom des fichiers qui contiennent le mot (utile
pour une recherche sur plusieurs fichiers)
• grep -c mot nom_fichier : donne le nombre de fois où le mot voulu a été
rencontrée dans le fichier.
• grep -v mot nom_fichier : renvoie dans la sortie standard le contenue de
‘‘nom_fichier’’ excepté des ligne où se trouve la chaine de caractère
‘’mot’’
• grep -n mot nom_fichier : renvoie dans la sortie standard les numéro
des ligne où se trouve la chaine de caractère ‘’mot’’ dans le fichiers
‘‘nom_fichier’’
• grep -m 20 mot nom_fichier permet de s’arrêter après 20 solutions
trouvées.
• grep –i text fichiers : rechercher sans distinguer entre le majuscule et le
minuscule
131
▫ liste des lignes commençant par LE Dans le fichier fichier1 : ( ^: debut de ligne)
grep "^LE" fichier1
▫ liste des lignes se terminat par ing Dans le fichier fichier1 : ( $: fin de ligne)
grep " ing$" fichier1
▫ recherche de STOP ou stop avec le numéro de la ligne :
grep -n -i stop fichier1
▫ liste des lignes contenant "image" ou "son" dans tous les fichiers du répertoire
courant :
grep -E "(image|son)" *
▫ Liste des lignes contenant "alias" ou "Alias" :
grep -E [^Aa] lias fichier1
Commandes de recherche (suite)
132
La commande sort : Trie les lignes du fichier par ordre alphabétique.
sort [fichier...]
Mais les options suivantes modifient les critères:
 sort –r Fichier : (« reverse »:inverse) trie les lignes du fichier en
ordre inverse.
sort –n Fichier : Effectue un trie numérique.
On peut combiner les deux options -nr
Commande de trie des lignes Sort
133
sort : trier les lignes
• sort nom_fichier : Tri par ordre alphabétique des lignes
d'un fichier texte.
• -o : écrire le résultat dans un fichier
• -r : trier en ordre inverse
• -n : trier des nombres
• -t :définit le caractère séparateur
• -u :n'affiche qu'une seule ligne quand plusieurs lignes sont
identiques
• -k :indique la position de la clé de tri (numéro à partir de 1)
Exemple:
sort -n -t":" -k 3 /etc/passwd
134
Exemple : différence entre sort –n et sort
135
3) Le trie de fichier uu2 par sort -n
Idriss@Idriss-PC ~ $ sort -n uu2
0
5
8
9
12
8888
1) Le contenu de fichier uu2
Idriss@Idriss-PC ~ $ cat uu2
5
8888
8
9
0
12
2) Le trie de fichier uu2 par sort
Idriss@Idriss-PC ~$ sort uu2
0
12
5
8
8888
9
wc : compter le nombre de lignes
• Affiche le nombre de lignes, de mots et d’octets
d’un fichier
• -l : compter le nombre de lignes
• -w : compter le nombre de mots
• -c : compter le nombre d'octets
• -m : compter le nombre de caractères
136
uniq : supprimer les doublons
• Supprimer les lignes en double dans un
fichier.(nous devons travailler sur un fichier trié )
• -c : compter le nombre d'occurrences
• -d : afficher uniquement les lignes présentes en
double
137
cut : couper une partie du fichier
• Couper selon le nombre de caractères
Soit le fichier noms.txt contenant
1. Pour conserver uniquement les caractères 2 à 5 de
2. Pour conserver du 1er au 3ème caractère :
3. pour conserver du 3ème au dernier caractère :
138
cut : couper une partie du fichier
• Couper selon un délimiteur
Ces colonnes contiennent, dans l'ordre :
Le prénom
La note
Un commentaire
nous souhaitons extraire de ce fichier la liste des prénoms.
Soit le fichier notes.csv suivant :
-d : indique quel est le délimiteur dans le
fichier
-f : indique le numéro du ou des champs à
couper
Pour avoir les champs n°1 et n°3 (le prénom et commentaire) :
139
La commande split
- split –n ( n entier positif)
- split –b n ( n entier positif)
La commande split permet de découper un fichier en plusieurs morceaux.
 Option –n : découpe le fichier en plusieurs fichiers de n ligne
• Syntaxe: split -n fichier
• Exemple: decouper le fichier grand_ficher en des petit fichiers xaa,
xab, xac ….., 10 ligne chacun…
split -10 grand_fichier
 Option –b n : découpe le fichier en plusieurs fichiers de n ko
Syntaxe: split –b 1024 grand_ficher
Exemple: découper le fichier grand_ficher en des petit fichiers
xaa, xab, xac ….., de 1024ko chacun
split –b 1024 grand_ficher
140
La commande comm
La commande comm permet d'extraire les lignes communes et les
lignes uniques de 2 fichiers préalablement triés.
􀂄 Syntaxe: comm [-123] fichier1 fichier2
􀂄 Exemple:
$ comm -12 carnet1 carnet2
marcel:13:0466342233:Marseille
 Les ligne commune entre le fichier 1 et le fichier 2
-13 les lignes uniques
141
La commande diff
Cette commande permet de rechercher des différences entre 2 fichiers.
Syntaxe: diff -options fichier1 fichier2
- Exemples d'options:
-b ne pas tenir compte des différences concernant des espaces blancs
-B ne pas tenir compte des différences concernant des lignes blanches
􀂄 Exemple:
$ diff carnet1 carnet2
< maurice:29:0298334432:Crozon
< robert:75:0144234452:Paris
---
> myriam:30:0434214452:Nimes
> olivier:29:0298333242:Brest
142
sed est éditeur ligne non interactif, il lit les lignes d’un fichier une à une (ou
provenant de l’entrée standard) leur appliquer un certain nombre de
commandes d’édition et renvoie les lignes résultantes sur la sortie standard.
Il ne modifie pas le fichier traité, il écrit tout sur la sortie standard.
Syntax : sed -e ‘’programme sed’’ fichier-a-traiter
ou
sed -f fichier-programme fichier-a-traiter
L’option -e n’est pas nécessaire quand on a une seule fonction d’édition.
sed est une commande très riche (pour plus de détails man sed)
La commande de sed
143
La fonction de substitution : s
• s permet de changer la 1re ou toutes les occurrences d’une chaîne par une
autre.
• Syntaxe :
• sed "s/toto/TOTO/" fichier va changer la 1re occurrence de la chaîne
toto par
TOTO
• sed "s/toto/TOTO/3" fichier va changer la 3 me occurence de la chaîne
toto par TOTO
• sed "s/toto/TOTO/g" fichier va changer toutes les occurences de la
chaîne toto par TOTO
• sed "s/toto/TOTO/p" fichier en cas de remplacement imprime les lignes
concernées
• sed "s/toto/TOTO/w resultat" fichier en cas de substitution , la ligne
en entrée est inscrite dans un fichier résultat
La commande de sed
144
• La fonction de substitution peut être utilisée avec une expression
régulière.
sed -e "s/[Ff]raise/FRAISE/g" fichier
substitue toutes les chaînes Fraise ou fraise par FRAISE
La commande de sed
145
La fonction de suppression : d
• La fonction de suppression d supprime les lignes comprises dans un
intervalle donné.
• Syntaxe : sed "20,30d" fichier : Cette commande va supprimer les lignes
20 à 30 du fichier fichier. On peut utiliser les expressions régulières :
▫ sed "/toto/d" fichier : supprime les lignes contenant la chaîne toto
▫ sed "/toto/!d" fichier : supprime toutes les lignes ne contenant pas la
chaîne toto
• En fait les lignes du fichier d’entrée ne sont pas supprimées, elles le sont au
niveau de la sortie standard.
La commande de sed
146
Les Alias
 les alias ( commande alias)
Syntaxe : $ alias nom_alias=‘commande’
Exemples :
1- alias liste=" ls –lrt"
2- alias beep="echo $'a‘” (sígnale sonore)
Pour supprimer l’alias : unalias
Syntaxe : $ unalias nom_alis
 le type de fichiers ( commande file )
Syntaxe : file nom_fichier
147
Mécanismes de redirection et de
Tube(’ <’ , ‘<<‘, ‘>,’>>, ’|’’ pipe
et double pipe ‘||’).
148
> et >> : rediriger le résultat dans un fichier
• > : rediriger le résultat de la commande dans le fichier de votre
choix
« > » (appelé chevron) redirige la sortie de la commande dans un
fichier appelé "eleves.txt" qui vient d'être créé
• Le double chevron >> sert lui aussi à rediriger le résultat dans un
fichier, mais cette fois à la fin de ce fichier.
Attention : si le fichier existait déjà il sera écrasé sans
demande de confirmation !
149
2>, 2>> et 2>&1 : rediriger les erreurs
• les commandes produisent 2 flux de données différents :
La sortie standard : pour tous les messages (sauf les erreurs).
La sortie d'erreurs : pour toutes les erreurs.
150
• Il est aussi possible d'utiliser 2>> pour ajouter les erreurs à la fin du
fichier
2>&1 : redirige les erreurs au même endroit et de la même façon que
la sortie standard.
il n'est pas possible d'écrire : 2>>&1
Exemple :
cut –d , -f 1 fichiers_inexistant.csv>>eleves 2>&1
2>, 2>> et 2>&1 : rediriger les erreurs
151
< et << : lire depuis un fichier ou le clavier
La console vous propose alors de taper du texte.
écrire des nombres, un par ligne (en appuyant sur la
touche Entrée à chaque fois
Lorsque vous avez fini, tapez FIN pour arrêter la saisie.
Le mot FIN est-il obligatoire ?
vous pouvez utiliser le mot que vous
voulez. Par exemple :
152
Un tube (pipe) | : chaîner les commandes
• Un tube permet d’établir une liaison directe entre la sortie d'une
commande et l'entrée d'une autre commande.
On peut écrire cette liste triée dans un fichier :
153
Un tube (pipe) | : chaîner les commandes (2)
Exemple : intérêt des |
cd source
tar cvf archive.tar *
cd destination
tar xvf source/archive.tar
rm source/archive.tar
Malheureusement, cette technique nécessite beaucoup de place disque, puisque
l'archive temporaire est stockée directement sur disque. De plus, elle est assez lente,
car toutes les données à copier sont recopiées sur le disque dur, et relues ensuite,
pour finalement être détruites..
La solution est de réaliser un tube entre les deux processus tar invoqués.
Dans ce cas, le transfert se fait simplement via la mémoire vive :
cd source
tar cvf * | (cd destination ; tar xvf -)
Cette commande est un peu plus compliquée,
car la commande d'extraction des fichiers nécessite un changement de répertoire.
Il faut donc utiliser une commande multiple du shell.
Ces commandes sont constituées de plusieurs autres commandes séparées par des points virgules.
La première commande effectuée ici est le changement de répertoire, et la deuxième est
l'extraction par tar de l'archive qui lui est transférée par le flux d'entrée standard (représenté ici
par '-'). Ces deux commandes sont mises entre parenthèses, car l'opérateur '|' du tube est
prioritaire sur l'opérateur ';' de concaténation des commandes du shell.
, la commande qui utilise le tube consomme deux fois moins d'espace disque et est deux fois plus
rapide que la commande qui n'en utilise pas.
154
Double tube ( double pipe) || :
C’est le OU
Syntaxe:
Commande 1 || commande 2
Si commande 1 est erroné on passe à commande
2
Exemple
ls fichier1 || rm fichier2
Si fichier1 n’existe pas on supprime fichier2
155
La commande tee
• La commande tee permet de rediriger la sortie standard d’une
commande vers un fichier et vers la sortie standard.
Exemple : ls /bin | grep " etci" | tee fich.log | wc –l
* met dans le fichier fich.log les noms des fichiers dont le nom
contient la chaîne "etci" dans le répertoire /bin
* Ensuite compte le nombre de fichiers dont le nom contient la chaîne
"etci" dans le même répertoire
156
Automatisation et
planification de tâches
157
date : régler l'heure
Personnaliser l'affichage de la date
Modifier la date
Attention, il faudra être root pour modifier la date
158
Automatisation de tâches
• Effectuer de tâches à des temps différés:
De manière répétitive (commande crontab)
Ponctuellement (commande at)
Ces tâches peuvent êtres de toute nature (sauvegarde, opérations sur
les données ...) et sont souvent décrites dans des scripts shell.
159
La commande at
•La commande at exécute une commande à un moment donnée.
• Exemple:
La création du répertoire « docs » dans votre répertoire à 15h30
$ at 1530 //le moment d’exécution
at> mkdir /home/<moncompte>/docs // la commande à executer
at> <Ctrl^D> // pour finir
•Pour exécuter la commande demain à 14h17
•Pour exécuter la commande le 18 novembre 2015 à 10h30
$ at 10:30 11/18/15
160
Exécuter une commande après un certain délai
• pour exécuter la commande dans 5 minutes :
ce qui signifie "Dans maintenant (now) + 5 minutes".
Les mots-clés utilisables sont les suivants :
• minutes
• hours (heures)
• days (jours)
• weeks (semaines)
• months (mois)
• years (années)
exécutera les commandes
dans 2 semaines
161
atq et atrm : lister et supprimer les jobs
en attente
􀂄 atq
Visualisation de ses tâches en attente ou de toutes les
tâches en attente pour l'administrateur.
􀂄 atrm num
Destruction d'une tâche en attente (num est le numéro de la tâche à
supprimer obtenu grâce à la commande atq).
162
Ecriture d'une crontab 1/2
 L'utilisateur doit écrire une "crontab" pour décrire les tâches qu'il souhaite
automatiser.
 Le format d'une "crontab" est une commande par ligne; une ligne est
composée de:
minute heure jour_mois mois jour_semaine commande
minute: 0-59
heure: 0-23
jour_mois: 1-31
mois: 1-12
jour_semaine: 0-6 (0 = dimanche)
RQ: en cas de plusieurs moment on les sépare par une virgule(,) , ou par
un tiret (-) s’il s’agit d’une plage ( voir l’exemple dans le slide qui suit )
 Pour visualiser sans écrire dans le contab on tape : crontab –l
 Pour éditer et écrire dans le contab on tape : crontab –e
163
Tous les jours à 23h30 : 30 23 * * * df >> /tmp/df.log
Toutes les heures, passées de 5 minutes : 5 * * * * df >> /tmp/df.log
chaque 5 minutes : */10 * * * * df >> /tmp/df.log
Tous les premiers et le 15 de chaque mois à 23h30 : 30 23 1,15 * * df >> /tmp/df.log
Tous les lundis à 10h28 et à 21h28 : 28 10,21 * * 1 df >> /tmp/df.log
Tous du lundi au vendredis n'importe quel mois à 11h22 :
: 22 11 * * 1-5 df >> /tmp/df.log
Exemples Chacun des exemples enregistre l'espace disque libre (commande df) dans le
fichier /tmp/df.log à des horaires différents. Afin de conserver l'historique, ces exemples utilisent la
redirection >> qui permet d'ajouter les nouvelles données à la fin du fichier (si celui-ci existe déjà).
Ecriture d'une crontab (2/2)
164
Définition : Un processus est un programme en cours d’exécution.
On distingue deux types de processus:
- Le processus système (daemons) : assure des services généraux
accessibles à tous les utilisateurs du système. Le propriétaire est le
root et il n’est sous le contrôle d’aucun terminal.
- Le processus utilisateur : dédié à l’exécution d’une tâche
particulière. Le propriétaire est l’utilisateur qui l’exécute et il est
sous le contrôle du terminal à partir duquel il a été lancé.
important : dans les système Linux l’identifiant de processus est le PID
Processus : Définitions
165
Processus : Cycle de vie
Création:
Toute exécution d’un programme déclenche la création d’un
processus dont la durée de vie = la durée d’exécution du
programme. Le système alloue à chaque processus un numéro
d’identification unique : PID (Process IDentifier). Tout processus est
créé par un autre processus : son processus père (PPID)
Exemples :
Lorsqu’un utilisateur lance une commande, un processus est créé
dont le père est le processus correspondant à l’exécution du shell.
166
Voici une liste des données d'identification d'un processus :
Un numéro de processus unique PID (Process ID) : chaque processus Unix
est numéroté afin de pouvoir être différencié des autres
Un numéro de processus parent PPID (Parent Process ID) : chaque
processus peut lui-même lancer d'autres processus, des processus enfants (child
process). Chaque enfant reçoit parmi les informations le PID du processus père qui
l'a lancé
Un numéro d'utilisateur et un numéro de groupe : correspond à l'UID et au
GID de l'utilisateur qui a lancé le processus. C'est nécessaire pour que le système
sache si le processus à le droit d'accéder à certaines ressources ou non. Les
processus enfants héritent de ces informations.
Durée de traitement et priorité : la durée de traitement correspond au temps
d'exécution écoulé depuis le dernier réveil du processus
Répertoire de travail actif : A son lancement, le répertoire courant (celui
depuis lequel le processus a été lancé) est transmis au processus. C'est ce répertoire
qui servira de base pour les chemins relatifs.
167
168
Processus : Cycle de vie
1.Un processus est crée. Son code est chargé. Les données sont
initialisées pour l’ordonnanceur.
2. le quantum de temps a expiré, l’ordonnanceur choisit un nouveau
processus.
3. L’ordonnanceur choisit ce processus.
4. Le processus est en attente d’une ressource.
5. La ressource ou les données deviennent disponible.
6. Le processus sort des files d’attente de l’ordonnanceur.
Les Etats d’un processus (suite)
• Durant sa vie (temps entre le lancement et la sortie) un processus peut
passer par divers états :
• actif : processus qui en train de réaliser des actions à un instant donné.
• exécutable : processus qui pourrait tout à fait être en train de s'exécuter,
mais il doit attendre que le processus actif laisse sa place.
• endormi : processus qui ne fait rien. Il attend une condition pour
redevenir exécutable ou actif. Il peut se mettre lui-même en sommeil. Mais
il peut aussi être mis en sommeil par le noyau en attendant ce qu'il
demande soit disponible.
• zombie : processus en réalité terminé. Il a fini son exécution et n'a donc
plus de raisons d'exister. Seulement pour diverses raisons possibles, son
père n'a pas été informé de ceci.
169
ps : liste des processus statique
• ps :permet d'obtenir la liste des processus qui tournent au
moment où vous lancez la commande
• PID : c'est le numéro d'identification du processus. Chaque processus
a un numéro unique qui permet de l'identifier.
• TTY : c'est le nom de la console depuis laquelle a été lancé le
processus.
• TIME : la durée d'exécution du processus.
• CMD : le programme qui a généré ce processus.
ps sans arguments affiche seulement les processus
lancés par le même utilisateur
170
ps : liste des processus
 ps –ef :permet d’obtenir la liste de tous les processus lancés par tous
les utilisateurs sur toutes les consoles
Exemple
$ ps –ef
UID PID PPID C STIME TTY TIME CMD
Chana 2145 187 0 Aug 11 pts/2 0:01.87 /sbin/init -a
root 3 1 0 Aug 11 ?? 0:00.27 /sbin/kloadsrv
 ps -u User : lister les processus lancés par un utilisateur
171
Les processus :Notion de signal
Numéro
de signal
Signification
15 Signal de terminaison de processus.
9
Signal de destruction inconditionnelle de
processus.
19 Signal de suspension de processus.
18
Signal de reprise d'exécution d'un processus
suspendu.
Dans un système Unix, tous les processus peuvent recevoir des
messages, envoyés soit par l'utilisateur, soit par un autre processus, soit
par le système. Ces messages sont appelés signaux
L'envoi d'un signal se fait avec la commande kill, avec la syntaxe
suivante : kill [-signal] PID
172
ctrl+c et kill : arrêter un processus
• Ctrl + C : arrêter un processus lancé en console
• kill : tuer un processus
• kill -9 : vous demandez à Linux de tuer le
processus sans lui laisser le temps de s'arrêter
proprement
173
Lancement d’un programme ( pour crée
un processus)
1. Lancement en arriere plan (commande nohup)
$ nohup nom_programme
2. Lancement et retour au mode console ( &)
$ nom_programme &
3. combinaison de 1 et 2:
$ nohup nom_programme &
174
Les scripts shells
175
Les shells sous unix
•Au démarrage d'une session, un utilisateur peut taper et faire exécuter des commandes
lignes grâce à un shell.
Les shells standards :
􀂄 Bourne Shell (/bin/sh)
Il s'agit du shell UNIX d'origine. Le nom du programme est (sh) et il est connu comme étant
le shell bash des systèmes Linux.
􀂄 C-Shell (/bin/csh)
Ce shell est rarement utilisé car il est assez complexe.
􀂄 Korn Shell (/bin/ksh)
Ce shell a été écrit par David Korn. Il combine les fonctions interactives qui ont fait le succès
du shell C avec la syntaxe de programmation conviviale du shell Bourne.
􀂄 Bourne Again Shell (/bin/bash)
ce shell est une extension améliorée du shell Bourne
•On peut trouver une liste des shells autorisés sur une machine dans le fichier /etc/shells
176
Les scripts shells
 Le shell peut être utilisé pour exécuter des commandes contenues
dans un fichier texte.
 Les scripts peuvent être créés avec un éditeur de texte.
 Il est conseillé de positionner le droit d'exécution sur les fichiers
scripts.
 Il est également conseillé de préciser sur la 1ère ligne du script sous
quel shell (Shebang ) les commandes doivent être exécutées.
Syntaxe: #!/bin/sh ou #!/bin/bash  (Shebang )
 L'exécution d'un shell script se fait:
▫ en tapant son nom (si le script dispose du droit x); exemple: script
▫ en préfixant par le nom du shell; exemple: sh script ou bash script
▫ en préfixant par ./ ; exemple: ./Script
177
Les commandes d'entrée/sortie
• La commande echo permet d'afficher une chaîne de caractères ou le
contenu de variables sur la sortie standard.
Exemple:
echo "La variable vaut $nom"
• La commande read permet de lire une ligne de caractères à partir de
l'entrée standard et place les différents mots dans les variables
transmises en argument.
Exemple:
#!/bin/bash
echo entrez deux nombres:
read nombre1 nombre2
echo La somme vaut $(($nombre1 + $nombre2))
178
Les variables
• On peut créer des variables V par affectation et les utiliser avec $V
Exemple:
#!/bin/bash
pays=Maroc
echo La variable pays vaut $pays
• Il existe aussi des variables définies automatiquement. Ce sont les
paramètres entrés au lancement du script
Exemple:
#!/bin/bash
pays=$1
#$1 est le premier paramètre, $2 le deuxième etc...
echo La variable pays vaut $pays
• Il existe d’ autres variables automatiques:
• $# qui est le nombre de paramètres
• $0 qui est le nom du programme.
• $* OU $@ : la liste des paramètres
179
Le shell peut évaluer des expressions arithmétiques
délimitees par $(( )) ou par $( echo a+b|bc) ou encore par la commande expr
Expressions arithmétiques
◮ Exemple avec: $(( ))
$ n=10
$ echo $(( $n + 1 ))
$ p = $(( $n * 5 / 2 ))
$ echo $p
◮ Exemple avec: $( |bc )
$ n=10
$q= $( echo $n + 1 |bc )
$p=$(echo $n*5/2 |bc )
$echo q
$echo $p
Attention :
- les (( et les )) ne sont pas séparés par les espaces
- Dans expr il faut respecter les espace entre les opérandes
et les opération arithmétique (+, - = / * %, )
◮ Exemple avec: expr
$ n=10
$ expr $n + 25
………………..
35
180
La commande test ou [ ]
• Cette commande permet de tester l'existence et le statut
d'un fichier.
• Test de fichier ou répertoire:
If [ –e fiche_rep ] vrais si le fiche_rep existe
If [ ! –e fiche_rep ] vrais si le fiche_rep n’existe pas
181
La commande test ou []
• test de chaînes de caractères
• Ces tests peuvent être combinés:
! négation logique
-a (&&) et logique
-o (||)ou logique
Exemple 1:
test -r essai -a -s essai
Exemple2
if [ $A -lt 20 -a $B -lt 20 ] || [ $A -gt 10 -a $B -gt 10 ]
= si A et B sont >10 ou A et B sont <20
182
La commande test ou []
Exemple:
#!/bin/bash
if (test $1 -gt $2) then echo $1 est plus grand que $2
elif [ $1 -lt $2 ]
then echo $1 est plus petit que $2
else echo $1 égale $2
fi
structure if :
syntaxe :
if ( condition) then instruction1
elif ( condition2) then instruction1
else dernière instruction
fi
Les différents opérateurs de comparaisons numérique sont:
183
Substutution d’une commande:
• On peut passer le résultat d’une commande dans des
variables
• Exemples:
$ a=`ls F*|wc`
( a contient le nombre des fichiers qui commence par F
$ b=`wc –l file`
( b contient le nombre des ligne contenue dans le fichier )
$ en_fic=`find. –type f –name *.java`
( en_fic contient la liste des fichiers d’extenssion java )
syntaxe : variable= ` commande`
184
Commande echo –n
La commande echo –n permet d’afficher sans
effectuer un retour chariot
Exemple :
------------echo seule -----------------------
$ echo "bonjour " ; echo " tout le monde "
bonjour
tout le monde
------------echo –n -----------------------
$ echo -n "bonjour "; echo " tout le monde "
bonjour tout le monde
185
Exercice 1
• Ecrire un scripte bash qui :
admet deux paramètre en entrée
- Teste le nombre de paramètre .
- Si <2 affiche le message suivante« Attention paramètre insuffisants ! »
- Si >2 : affiche le message suivante « trop de paramètre! »
- Si =2 : réalise et affiche la somme
Indication : utiliser le $# pour retourner le nombre de paramètre
Solution : faite dans la classe il faut la noté
186
Exercice sur ( expression arithmétiques)
• Soient a= 6 , b=21 et c=9 à l’aides des expressions
arithmétiques :
• Calculer et afficher la somme de a et b.
• Calculer et afficher la moyenne de de a , b et c.
• Calculer et afficher la moyenne de de a , b et c.
• Calculer et afficher le reste de la division de b / c.
Exercice 2 ( IF avec les ou et les et logiques )
a- Ecrire un scripte qui lit 2 valeurs et affiche si leur produit est
positif ou négatif sans le calculer
b- la même chose mais cette fois ci les 2 valeurs son passées en
paramètre du scripte
187
2.a
#!/bin/sh
echo " dooner 2 nombre"
read A B
if [ $A -lt 0 -a $B -lt 0 ] || [ $A -gt 0 -a $B -gt 0 ]
then
echo " produit positif"
else
echo " produit negatif"
fi 2.b
#!/bin/sh
echo " dooner 2 nombre"
if [ $1 -lt 0 -a $2 -lt 0 ] || [ $1 -gt 0 -a $2 -gt 0 ]
then
echo " produit positif"
else
echo " produit negatif"
fi
Solution Exercice 2 ( IF avec les ou et les et logiques )
188
Choix multiples : case
• La commande case … esac permet de vérifier le contenu d'une
variable ou d'un résultat de manière multiple.
• Syntaxe :
case Valeur in
Modele1) Commandes ;;
Modele2) Commandes ;;
*) action_defaut ;;
esac
L’option case sert à réaliser les menus
189
La structure while
Syntaxe:
while (conditions)
do
liste de commandes ou d’instruction
done
Exemple
#!/bin/bash
i=0
while [ $i -lt 100 ]
do
i=$(($i+1))
echo $i
done
190
La structure for
Syntaxe:
for nom in liste
do
liste de commandes
Done
Exemple 1 : test si un fichier
existe parmi une liste de fichiers
f1 à fn
#!/bin/bash
for fichier in f1 f2 f3 f4 ….fn
do
if [ -f $fichier ]; then
echo "$fichier est un fichier
ordinaire"
fi
done
Exemple 2 :suppression des
fichiers d’extension jpg png
et txt
#!/bin/bash
for ext in jpg png txt
do
rm *.$ext
done
191
La structure for
La commande seq
La commande seq permet de parcourir une suite de chiffre successive
Exemple : affichage d’une suite de 1 à 4
$ for i in $(seq 1 4)
> do
> echo $i
> done
Résultat est :
1
2
3
4
192
until (condition)
do
Suite d’instructions
done
La structure until
La structure while est utilisée dans les situation ou on veut executer une suite
d’instruction tant qu’une condition est vrai
Des fois on a besion d’executer des instruction jusu’a ce qu’un condition soit
satisfaite (vrai)  la on utililse la boucle until
Syntaxe Exemple
a=0
until [ ! $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
0
1
2
3
4
5
6
7
8
9
Résultat
193
Étiquette (fonction): Nommer une suite
d’instruction
• On peut rassembler une suite d’instructions dans une fonction
nommée , et appeler cette fonction là ou on veut
• Exemple:
#!/bin/bash
ajouter () {
echo "------AJOUT -----"
echo "Nom ?"
read nom
echo "Tel ?"
read tel
echo "$nom,$tel" >> agenda.txt
}
ajouter ;
L’étiquette ajouter permet
d’ajouter une ligne dans le
fichier agenda.txt
194
L’instruction exit
L’instruction exit permet de forcer la fin de l’ exécution de
scripte en cours
Valeurs de exit:
•$0 : retourne la valeur de exit
• 0 : si le scripte ou la commande s’est terminer
correctement
• >0 : si le scripte ou la commande s’est terminer en erreur
•On peut aussi forcer la valeur de exit par exit valeur
Exemple: test de l’existence d’un fichier ou répertoire
If [ ! –e fic_rep ] then
exit 3
fi
195
Exercice 3 ( case … esac)
• En utilisant case ..esac Ecrire un programme appeler « jour.bash » qui
admet comme paramètre un chiffre de 1 à 7 et qui affiche le jour de la
semaine correspondant
• Exemple d’execution:
jour.bash 2
c’est Mardi!
Exercice 4 ( while)
• Ecrire un scripte shell qui permet de lire une suite de nombre saisis
à partir de clavier.
• Dés fin de la saisi marquée par le chiffre 999 . Afficher les nombre
en ordre croissant
196
Exercice 6 (until)
écrire un script shell qui prend en argument un nombre et
renvoie son inverse sinon renvoie une erreur si le nombre
d'arguments est différent de 1.
exemple : 123 ---> 321
Exercice 7 (while)
écrire un script shell avec des boucles qui affiche :
1
22
333
4444
55555
Exercice 5 (for)
Ecrire un scripte shell qui permet de trouver tous les fichiers
d’extention java dans l'arborescence courante qui contiennent la
chaine de caractères passée en paramètre
197
Solution ( case … esac)
Ecercices 3
#!/bin/sh
case $1 in
1 ) echo "c'est lundi" ;;
2 ) echo "c'est mardi" ;;
3 ) echo "c'est mercredi" ;;
4 ) echo "c'est jeudi" ;;
5 ) echo "c'est vendredi" ;;
6 ) echo "c'est samedi" ;;
7 ) echo "c'est dimanche" ;;
*) echo " le numéro entrer ne
correspond a auncun jour ";;
esac
198
Ecercices 4
#!/bin/bash
if (test -f fich_num ) then
rm fich_num
fi
i=0
while (test $i -ne 99)
do
read num
i=$num
echo $num >> fich_num
done
sort -n fich_num
Solution( while)
199
Solution (for)
Ecercices 5
#!/bin/sh
for file in `find . –type f -name "*.java ’’`
do
res=` grep $1 $file | wc –l `
if [ $res –ge 1 ] then
echo $file
fi
done
200
Solution Exercice 6
#!/bin/bash
a=$1
b=0
if [ $# -ne 1 ]
then
echo "ereur"
else
until [ $a -eq 0 ]
do
b=$(( $a % 10 ))
a=$(($a/10))
echo -n "$b"
done
fi
Solution Exercice 7
#!/bin/bash
i=1
nbr=5
while [ $i -le $nbr ]
do
j=1
while [ $j -le $i ]
do
echo -n "$i"
j=$(($j+1))
done
i=$(($i+1))
echo
done
201

More Related Content

Similar to Cours SE linux

Introduction à Linux et aux logiciels libres
Introduction à Linux et aux logiciels libresIntroduction à Linux et aux logiciels libres
Introduction à Linux et aux logiciels libresBruno Cornec
 
Logiciellibre
LogiciellibreLogiciellibre
Logiciellibrem4rylin
 
Comparatif Windows/Linux
Comparatif Windows/LinuxComparatif Windows/Linux
Comparatif Windows/LinuxJibril Touzi
 
La valorisation des logiciels libres en entreprise
La valorisation des logiciels libres en entrepriseLa valorisation des logiciels libres en entreprise
La valorisation des logiciels libres en entrepriseRobert Viseur
 
La valorisation des logiciels libres en entreprise
La valorisation des logiciels libres en entrepriseLa valorisation des logiciels libres en entreprise
La valorisation des logiciels libres en entrepriseRobert Viseur
 
intro-linux-v4.pdf
intro-linux-v4.pdfintro-linux-v4.pdf
intro-linux-v4.pdfBruno Cornec
 
Logiciels Libres, quelles opportunités pour nos entreprises?
Logiciels Libres, quelles opportunités pour nos entreprises?Logiciels Libres, quelles opportunités pour nos entreprises?
Logiciels Libres, quelles opportunités pour nos entreprises?Fdiwa
 
2011 09-23-logiciels-libres
2011 09-23-logiciels-libres2011 09-23-logiciels-libres
2011 09-23-logiciels-libresSylvain DENIS
 
Logiciels libres
Logiciels libresLogiciels libres
Logiciels libresj_lipaz
 
Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2Faycel Chaoua
 
Logiciels Libres, quelles opportunités pour nos entreprises ?
Logiciels Libres, quelles opportunités pour nos entreprises ?Logiciels Libres, quelles opportunités pour nos entreprises ?
Logiciels Libres, quelles opportunités pour nos entreprises ?Ahmed Chergaoui
 
srep_cours_01.pdf
srep_cours_01.pdfsrep_cours_01.pdf
srep_cours_01.pdfSamirAwad14
 
Les Logiciels Libres
Les Logiciels LibresLes Logiciels Libres
Les Logiciels LibresSylvain DENIS
 

Similar to Cours SE linux (20)

Introduction à Linux et aux logiciels libres
Introduction à Linux et aux logiciels libresIntroduction à Linux et aux logiciels libres
Introduction à Linux et aux logiciels libres
 
Logiciellibre
LogiciellibreLogiciellibre
Logiciellibre
 
logiciel libre
logiciel librelogiciel libre
logiciel libre
 
Linux_Cours.ppt
Linux_Cours.pptLinux_Cours.ppt
Linux_Cours.ppt
 
Comparatif Windows/Linux
Comparatif Windows/LinuxComparatif Windows/Linux
Comparatif Windows/Linux
 
La valorisation des logiciels libres en entreprise
La valorisation des logiciels libres en entrepriseLa valorisation des logiciels libres en entreprise
La valorisation des logiciels libres en entreprise
 
La valorisation des logiciels libres en entreprise
La valorisation des logiciels libres en entrepriseLa valorisation des logiciels libres en entreprise
La valorisation des logiciels libres en entreprise
 
intro-linux-v4.pdf
intro-linux-v4.pdfintro-linux-v4.pdf
intro-linux-v4.pdf
 
Opensource
Opensource Opensource
Opensource
 
Logiciels Libres, quelles opportunités pour nos entreprises?
Logiciels Libres, quelles opportunités pour nos entreprises?Logiciels Libres, quelles opportunités pour nos entreprises?
Logiciels Libres, quelles opportunités pour nos entreprises?
 
2011 09-23-logiciels-libres
2011 09-23-logiciels-libres2011 09-23-logiciels-libres
2011 09-23-logiciels-libres
 
Logiciels libres
Logiciels libresLogiciels libres
Logiciels libres
 
Dee eday 17-mars2011
Dee eday 17-mars2011Dee eday 17-mars2011
Dee eday 17-mars2011
 
Licences libres
Licences libresLicences libres
Licences libres
 
Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2
 
Matinée7 logiciel libre
Matinée7   logiciel libreMatinée7   logiciel libre
Matinée7 logiciel libre
 
chapitre0.pptx
chapitre0.pptxchapitre0.pptx
chapitre0.pptx
 
Logiciels Libres, quelles opportunités pour nos entreprises ?
Logiciels Libres, quelles opportunités pour nos entreprises ?Logiciels Libres, quelles opportunités pour nos entreprises ?
Logiciels Libres, quelles opportunités pour nos entreprises ?
 
srep_cours_01.pdf
srep_cours_01.pdfsrep_cours_01.pdf
srep_cours_01.pdf
 
Les Logiciels Libres
Les Logiciels LibresLes Logiciels Libres
Les Logiciels Libres
 

More from Idriss22

Ecosystème Big Data
Ecosystème Big DataEcosystème Big Data
Ecosystème Big DataIdriss22
 
LP_Admin_base_données.ppt
LP_Admin_base_données.pptLP_Admin_base_données.ppt
LP_Admin_base_données.pptIdriss22
 
Base de donnees Avancees et Intro à NoSQL.ppt
Base de donnees Avancees et Intro à  NoSQL.pptBase de donnees Avancees et Intro à  NoSQL.ppt
Base de donnees Avancees et Intro à NoSQL.pptIdriss22
 
Cours_théorie_de_jeux
Cours_théorie_de_jeuxCours_théorie_de_jeux
Cours_théorie_de_jeuxIdriss22
 
Bases de la Théorie des graphes
Bases de la Théorie des graphes Bases de la Théorie des graphes
Bases de la Théorie des graphes Idriss22
 
Intro_modul_et_SI_chapt0.ppt
Intro_modul_et_SI_chapt0.pptIntro_modul_et_SI_chapt0.ppt
Intro_modul_et_SI_chapt0.pptIdriss22
 

More from Idriss22 (6)

Ecosystème Big Data
Ecosystème Big DataEcosystème Big Data
Ecosystème Big Data
 
LP_Admin_base_données.ppt
LP_Admin_base_données.pptLP_Admin_base_données.ppt
LP_Admin_base_données.ppt
 
Base de donnees Avancees et Intro à NoSQL.ppt
Base de donnees Avancees et Intro à  NoSQL.pptBase de donnees Avancees et Intro à  NoSQL.ppt
Base de donnees Avancees et Intro à NoSQL.ppt
 
Cours_théorie_de_jeux
Cours_théorie_de_jeuxCours_théorie_de_jeux
Cours_théorie_de_jeux
 
Bases de la Théorie des graphes
Bases de la Théorie des graphes Bases de la Théorie des graphes
Bases de la Théorie des graphes
 
Intro_modul_et_SI_chapt0.ppt
Intro_modul_et_SI_chapt0.pptIntro_modul_et_SI_chapt0.ppt
Intro_modul_et_SI_chapt0.ppt
 

Recently uploaded

Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipM2i Formation
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptxrababouerdighi
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeBenamraneMarwa
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 

Recently uploaded (15)

Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadership
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étude
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 

Cours SE linux

  • 1. 1 Filière (DUT) : Génie Informatique-S2 Année Universitaire : 2018– 2019 Diaporamas du cours : Systèmed’Exploitation(Linux) Préparé par : Idriss CHANA Enseignant chercheur au Département Génie Informatique, EST-UMI Meknès Email : i.chana@umi.ac.ma Au Profit des Etudiants de La Deuxième Année de la filière GI inscrits en semestre S2
  • 3. Professeur : Chana Idriss E-mail: idrisschana@gmail.com Informations Générales 3
  • 4. Introduire les notions de base des systèmes d'exploitation. Différence entre un Système Open Source (Libre) et un système propriétaire Se familiariser avec le système Open Source de type linux (Ubuntu) Maitriser la manipulation en mode commande des systèmes Linux Manipulation des commandes de gestion des fichiers Linux La programmation sous les système Linux Objectifs du Module 4
  • 5. Le contenu 0- Introduction à l’informatique 1- Introduction au Système d’exploitation (OS) - Pourquoi un OS ? - Qu'est ce que un OS? 2- Système d’exploitation open source 3. Système de fichiers et Gestion de fichiers et répertoires - Manipulation des fichiers et répertoires - les liens –recherche des fichiers(find ,-exec) - - Compression et archivage 4. Gestion des droits d’accès aux fichiers et répertoires (chmod) et l’éditeur vi 5. Extraire , trie et filtres et d’autre opération sur les fichiers : ‘’wc, grep, cat, sort,uniq,cut,sed,split comm,diff ’’ 6. Mécanismes de redirection et les Tubes(’ <’ , ‘<<‘, ‘>,’>>, ’|’’ pipe et double pipe ‘||’). 7- Gestion de processus 8. Automatisation des taches, - date, at , crontab 9- le Shell et les Scriptes ( programmation sous linux) - Commandes d’entée et sortie ( echo , read) - Variables - alternatifs contrôle(if) commande (test), boucles (for …, while ….,until) et expression - Paramètres de scriptes ( $0, $#,$? ) ,($1, $2 ….$n) 5
  • 6. 6
  • 7. Technicien Spécialisé et Système D’exploitation Linux 7
  • 8. Évaluation • Cours & TD 50% - Participation pendant des séances de TD et de cours - DS théorique • TP 50% 8
  • 9. INTRODUCTION : • On peut dire qu’un System d’exploitation : est Une interface qui sert d’intermédiaire entre l’utilisateur et l’ordinateur Système d’exploitation 9
  • 10. Composantes internes d’un ordinateur INTRODUCTION : 10
  • 11. Composantes Externes/ Périphériques d’un ordinateur INTRODUCTION : 11 Un SE joue également le rôle de la Coordination et du contrôle de l’ensemble des composantes (matériels) de l’ordinateur et les périphériques qui lui sont rattachés
  • 12. Ordinateurs et Logiciels Un S.E est aussi Une interface qui sert d’intermédiaire entre les logiciels et l’ordinateur MicrosoftWord Open Office Dev Cpp Etc …. Paint Internet Explorer Application de paie INTRODUCTION : 12
  • 13. INTRODUCTION : 13 Le SE assure un rôle de partage des ressources ( RAM , Micro-process)
  • 16. millisecondes temps 100% microprocesseur Log. A Log. B Log. C Log. D _ INTRODUCTION : 16 • Le SE assure un rôle de partage de temps du calcul de microprocesseur et l’utilisation de l’espace mémoire de la RAM
  • 17. millisecondes temps % microprocesseur Log. A Log. B Log. C Log. D 100%_ Log. B Log. C Log. D Log. A Log. A 70% _ 50% _ Le S.E Assure un partage optimale du microprocesseur et de la RAM. INTRODUCTION : 17
  • 18. Le S.E assure également la Gestion Efficace des conflits Matériels et logiciels et des erreurs :  Occupation excessive (trop) de microprocesseurarrêt du programme et signale  Deux application concurrentes RAM  Allocation de la mémoire pour chacune  Matériel mal branché  signale à l’utilisateur  Manipulation non autorisé par l’utilisateur signale à l’utilisateur INTRODUCTION : Touts ces conflits pourraient générer un arrêts totale de la machine, mais le S.E assure la continuité de fonctionnement de l’ordinateur en arrêtant juste le programme en erreur 18
  • 19. INTRODUCTION : Récapitulatif ? Un Système d’Exploitation est: Intermédiaire entre l’utilisateur/Ordinateur  Intermédiaire entre logiciels(applications) /Ordinateur Contrôle et coordonne tout le matériels Partage optimale du microprocesseur et RAM Gestion des conflits Matériels et logiciels) 19
  • 20. Définition d’un système d’exploitation: Un système d’exploitation est un ensemble de programmes qui coordonnent le fonctionnement des différents composants matériels et logiciels d’un système informatique. INTRODUCTION Rappel Système D’exploitation On peut donc tirer la définition Suivante 20
  • 21. Apparition des S.E INTRODUCTION Avant les années 80 1955-1970 : Premiers systèmes : traitement par lots (batch) 1970-1980 : Unix et ces versions , Par Dennis Ritchie et Ken Thompson au Laboratoires Bell ATT de New Jersey. Après les années 80 Microsoft Appele Groupe de volontaire 21
  • 22. 1er S.E : MS-DOS : fonctionne en mode commandes INTRODUCTION 22
  • 30. Il y a aussi les S.E MAC OS ( MACINTOSH) INTRODUCTION 30
  • 31. INTRODUCTION Il y a aussi les S.E Libre (Open source ) 31
  • 34. INTRODUCTION Un programme informatique: Que ce soit un noyau ou un logiciel, il 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. Quand on achète un logiciel (Microsoft Office par exemple) ou un système d'exploitation on a un CD qui contient le binaire, mais pas les sources. Il est donc impossible de savoir comment le programme est conçu. Par conséquent, on ne peut pas modifier le programme. On peut seulement l'utiliser et éventuellement le copier à l'identique. 34
  • 35. Système Open sources 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 jalousement gardé par Microsoft. Imaginez que c'est un peu comme le Coca-Cola : personne ne connaît la recette de fabrication . On ne peut donc pas le modifier ou regarder comment il fonctionne à l'intérieur.) 35
  • 36. L’accès libre au code source accélère le progrès en matière d'informatique car l'innovation dépend de la diffusion du code source. les quatre libertés fondamentales pour dire qu’un Système est open source: • Liberté d'exécution : tout le monde a le droit de lancer le programme, quel que soit le but ; • Liberté de modification : tout le monde a le droit d'étudier le programme et de le modifier, ce qui implique un accès au code source ; • Liberté de redistribution : tout le monde a le droit de rediffuser le programme ; • Liberté d‘amélioration : tout le monde a le droit de redistribuer une version modifiée du programme ; Logiciel Libre / Logiciel Propriétaire Système Open sources 36
  • 37. Avantages et inconvénients des logiciels libres La qualité : Le fait que tout le monde peut y travailler (révision , correction …) , il n y aura plus de bug , ni Verus La réactivité: correction des Bug très rapidement car il y a de nombreuse personne qui travaillent dessus. Le coût : cout faible( généralement gratuit) car il est fait par des passionnés L’autonomie : MAJ de votre logiciel vous-même, sans attendre l’avis ou l’accord de la boit qui vous a vendu le programme Système Open sources Avantages (1/2) 37
  • 38. 38 La libre-concurrence : Grace au logiciel libre, il ne reste plus place au monopole ! Cela favorise donc la concurrence entre entreprise, permet le développement de nombreuses PME. Plus besoin de prendre le logiciel X parce que c’est le seul disponible (prix élevé) puisque des alternatives libres existent La maintenance: la continuité et la maintenance d’un logiciel propriétaire dépends de la volonté de l’entreprise et de sa stratégie L’entre-aide : Vous trouvez toujours quelqu’un à vous aider pour débloquer vos problème car c’est la vocation des volontaires. Avantages et inconvénients des logiciels libres Système Open sources Avantages (2/2)
  • 39. Avantages et inconvénients des logiciels libres Système Open sources inconvénients : • Trop de choix : L'utilisateur peut avoir à choisir entre plusieurs logiciels, ce qui ne simplifie pas forcément l'apprentissage ou la communication entre les différents utilisateurs de logiciels libres . • Difficultés d’intégration : Il est très difficile en ce qui concerne les logiciels libres de les intégrer dans une solution logicielle, à moins que la solution entière ait été développée en libre par une équipe • Incompatibilités : Les logiciels libres sont rarement compatibles avec les logiciels propriétaires. Vous avez déjà essayé d’ouvrir un fichier .doc créé avec Microsoft Office dans Open Office ? • Manque de documentation : C’est bien connu, la plupart des codeurs préfèrent coder qu’écrire de la documentation • Modèles économiques compliqués : Enfin, les modèles économiques permettant le développement du logiciel libre sont complexes… très complexes… Il est beaucoup plus difficile de gagner de l’argent et de vivre de la production de logiciels libres par rapport aux logiciels propriétaires. 39
  • 40. Historique UNIX est un système d'exploitation, créé en 1969 par Ken Thompson et Dennis Ritchie. Sa conception a été particulièrement soignée, et apportait plusieurs innovations, notamment le choix d'utiliser plusieurs outils simples et spécialisés. Il est l'un des systèmes d'exploitation les plus populaires au monde, en raison du grand nombre d'architectures qu'il supporte . Project GNU: Est un projet lancé par Richard Stallman, un chercheur du MIT. Le but est de dévellopper un OS complet, libre et qui se base sur Unix afin de contrer le développement croissant des logiciels propriétaires( le prix Unix devenait de plus en plus payant). Cependant, en 1991, le projet GNU n'avait toujours pas de noyau et tournait sur des Unix propriétaires.(Stallman avait créer les programmes de base:(programme de copie de fichier, suppression de fichier, éditeur de texte). Système Open sources Linux 40
  • 41. Historique (suite) En 1991, Linus Torvalds, un étudiant de l’université de Helsinki, développe un noyau en s'inspirant des principes du système d'exploitation UNIX. Le OS prend le nom de Linux ( en référence à son créateur). Project GNU Le projet GNU (programmes libres) et Linux (noyau d'OS) ont fusionné pour créer GNU/Linux. Project LINUX GNU/LINUX Système Open sources Linux 41
  • 42. Les distributions de Linux Il existe une très grande variété de distributions, ayant chacune des objectifs et une philosophie particulière. Les éléments différenciant principalement les distributions sont :  la convivialité (facilité de mise en œuvre).  l'intégration (taille du parc de logiciels validés distribués). La notoriété (communauté informative pour résoudre les problèmes), l'environnement de bureau (Gnome, KDE, ...). Le point commun est le noyau ( kernel) et un certain nombre de commandes. Système Open sources Linux 42
  • 43. Les distributions Commerciales Il 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. Suse (Novell): http://www.suse.com/ L'alternative principale. Facile à installer, conviviale et stable. Obtiens le support des fournisseurs de logiciel et de matériel. Mandriva (anciennement Mandrake): http://mandrivalinux.com/ Conviviale, facile à installer, plus innovante, mais moins stable. Cible principalement les utilisateurs individuels. Peu pris en charge par les fournisseurs de logiciel et de Système Open sources 43
  • 44. Les distributions Commerciales Fedora Core: http://fedora.redhat.com/ Stable, sûre, conviviale, facile à installer. Sortie fréquente de nouvelles versions complètes. Debian: http://debian.org/ Très stable et sûre, mais plus difficile à configurer et à installer. Conviviale pour les développeurs mais pas encore pour les utilisateurs. Version stables pas assez fréquentes (tous les 2 ou 3 ans). La meilleure pour les serveurs, mais pas pour les débutants. Ubuntu Linux: http://ubuntulinux.org/ La distribution communautaire qui progresse le plus. Basé sur Debian mais avec une version stable tout les 6 mois. Conviviale pour les utilisateurs. Bonne pour les débutants. Mandriva Community: http://mandrivalinux.com/ Facile à installer, sûre, conviviale, sortie fréquente de versions complètes, mais moins stable (pas assez de tests et de prise en compte des retours des utilisateurs et testeurs).. Système Open sources 44
  • 46. • Le système de fichiers d'un système d'exploitation est un ensemble de principes et de règles selon lesquels les fichiers sont organisés et manipulés. Chaque système d'exploitation possède son système de fichier privilégié, même s'il peut en utiliser d'autres Systèmes de fichiers PARTITIONEMENT DISQUE DURE Gestion de fichiers et répertoires 46
  • 47. Systèmes de fichiers Systèmes de fichiers: c’est une « subdivision du disque » dur selon un certain format. Gestion de fichiers et répertoires 47
  • 48. Systèmes de fichiers Linux • 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. Ainsi, sous Linux et depuis longtemps, il n'y a pas besoin de faire de défragmentation. • 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. A noter que l'ext2 et l'ext3 sont parfaitement compatibles entre eux, dans un sens comme dans l'autre. Gestion de fichiers et répertoires 48
  • 49. PARTITIONEMENT DISQUE DURE Appellation des disques Dures L’appellation "à la Linux" est un peu plus complexe que celle de Windows. Windows Linux C: D: E: … hda hdb hdc sda … Gestion de fichiers et répertoires 49
  • 50. Appellation des disques Dures L’appellation "à la Linux" est un peu plus complexe que celle de Windows. La première lettre indique si le disque est de type IDE ou SCSI (un typede connexion différent à la carte mère). Si c'est une IDE, la lettre est un h, si c'est un SCSI (ou un S-ATA), la lettre est un s. d :cette lettre ne change pas ( drive). [a-d] :indique les differents disques durs ,c’est a,b,c ou d. hda: 1er disque dur/ hdb: 2ème disque dur/hdc le 3ème …. # :est un numéro qui permet de numéroter les partition. exemple: hda1 : 1er partition de disque dur hda hdb10: 10ème partition de disque dur hdb hd[a-d] # PARTITIONEMENT DISQUE DURE Gestion de fichiers et répertoires 50
  • 51. Organisation des dossiers •La racine un "gros dossier de base qui contient tous les autres dossiers et fichiers". Sous Windows, il y a en fait plusieurs racines. "C:" est la racine de votre disque dur Sous Linux, il n'y a qu'une et une seule racine : "/". Architecture des dossiers Sous Windows, un dossier peut être représenté comme ceci : "C:Program FilesWinzip". Sous Linux : Il n'y a pas de "C:", la racine (le début) s'appelant juste "/". Gestion de fichiers et répertoires 51
  • 52. ARBORESCENCES DES FICHIERS Le système de fichiers sur Linux est similaire à ce que l'on retrouve dans Windows, i.e. 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/khalil/ Gestion de fichiers et répertoires 52
  • 53. ARBORESCENCES DES FICHIERS / ( root) bin dev home root lib var tmp pippo khalil Plusieurs répertoire sont rattaché à la racine. Gestion de fichiers et répertoires 53
  • 54. ARBORESCENCES DES FICHIERS / : Répertoire Racine: contient les répertoires principaux. /bin : (Commande de base du système) (contient des éxecutables essentiels au système, employés par tous les utilisateurs ( par exemple, les commandes ls,rm,cp,chmod,mount,… ).  /etc :(contient les commandes et les fichiers nécessaires à l’administrateur du sytème (fichiers passwd,group,inittab,ld.so.conf,lilo.conf…)/ fichiers de configuration de l’ordinateur. / boot: (Images, fichiers de configuration du noyau ….) ( contient les fichires permettant à Linux de démarrer). /dev : (contient les points d’entrée des périphériques)  /lib: (contient des bibliothèques partagées essentielles au système lors du démarrage)/bibliotèques de base du systèmes ( partagées) 54
  • 55. ARBORESCENCES DES FICHIERS  /mnt : (contient les points de montage des partitions temporaires(cd- rom,disquette…): /mnt/usbdisk/, /mnt/windows/… /opt: (contient des pakages d’applications supplémentaires)/ ( outils spécifiques installés par l’administrateur. /root: (répertoire de l’administrateur root) /tmp: (contient les fichiers temporaires) /usr: (Hiérarchie secondaire)/ programmes utilisateurs ordinaires, non essentiels au systèmes: /usr/lib, /usr/bin… /sbin: (contient les binaires système essentiels (par exemple la commande adduser)/programmes d’administration du système./ commandes réservées à l’administarteur. /home: (dossiers de travail des utilisateurs. Ex:/home/pippo)/ Répertoire utilisateur /var: (données variables( dynamiques) 55
  • 56. 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 invite ("prompt") le shell est prêt à recevoir des commandes rentrées au clavier Le shell est un interpréteur de commandes qui invite l’utilisateur à saisir une commande et la fait ensuite exécuter 56
  • 57. L’INVITE DE COMMANDES P 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 : $ : signifie que vous êtes en train d'utiliser un compte utilisateur "normal", # : signifie que vous êtes en mode super-utilisateur, pippo@localhost :~$ 57
  • 58. L’INVITE DE COMMANDES pippo@localhost :~$ ls Desktop Examples Images Invite de commande suivie de la commande que j’ai tapée ls Réponse de l’ordinateur à cette commande Cela signifie que le répertoire actuel est constitué de 3 dossiers : Desktop , Examples et Images. En général, le système colore les éléments pour que l'on puisse distinguer facilement les dossiers des fichiers. Si vous n'avez aucune réponse, c'est que vous êtes dans un dossier qui ne contient aucun fichier ou dossier. 58
  • 59. LES PARAMETRES P Les paramètres sont des options que l'on écrit à la suite de la commande. pippo@localhost :~$ Commande Paramètre pippo@localhost :~$ ls -a Exemples de paramètres: 59
  • 60. HISTORIQUE DES COMMANDES P 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 ». 60
  • 61. Raccourcis Utiles P : Effacer le contenu de la console . :Message EOF( fin de fichier) à la console( possède la même fonction que la commande « exit ». :Ramène le curseur au début de la commande. :Supprime tout ce qui est à gauche du curseur. :Supprime tout ce qui est à droite du curseur. :Supprime le dernier mots situé à gauche du curseur. 61
  • 62. ARRET ET REDEMARRAGE DU SYSTEME halt : permet d’arrêter le système. Reboot : permet de redémarrer le système. L’arrêt du système est une opération qui est du ressort de l’administrateur. On peut la realiser uniquement sur le compte root. Il est égalment possible que votre gestionnaire de bureau vous donne le moyen d’arrêter l’ordinateur par l’intermediare de l’interface graphique. 62
  • 63. COMMANDES DE BASES : Répértoires 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) « pour cacher un fichier sous linux, on le précède d’un « . ») ls [options] [noms] Exemple : ls -l /home/pippo Commande –options noms Commande ls noms du ficher qu’on veut lister. Si ce paramètre est absent, ls affichera les fichiers du répertoire courant. 63
  • 64. COMMANDES DE BASES : Répertoires  ls a («all»: tous) Affiche tous les fichiers (y compris les fichiers .*)  ls l (long) Affichage en format long (type, date, taille, propriétaire, permissions)  ls t (temps) Affiche les fichiers les plus récents en premier.  ls d (directory) Affiche du nom du répertoire et non de son contenu. Commande ls Les principales options: ls S (“size”: taille) Affiche les fichiers les gros en premier.  ls r («reverse»: inversé) Affiche en ordre inverse.  ls ltr (les options peuvent être combinées) Format long, les fichiers les plus récents à la fin. 64
  • 65. COMMANDES DE BASES : Répertoires La commande cd( change directory) permet de changer le répertoire de travail . ( permet de naviguer dans les répertoires) cd [réperoire] Exemple : Si on veut se positionner dans le répertoire /etc, on fera ceci: pippo@localhost :~$ cd /etc pippo@localhost : /etc$ Commande cd 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). 65
  • 66. COMMANDES DE BASES : Répértoires  cd : Permet de se placer dans le répertoire personnel de l’utilisateur (home)  cd.. : Ramène dans le répertoire parent.( remonter d’un répertoire dans l’arborescence)  cd rep : va dans le répertoire rep à partir du répertoire où vous êtes. Commande cd cd /usr/bin: A va dans le répertoire bin en écrivant tout l’arboresence.  cd : une bonne astuce pour revenir dans le répertoire d’où vous veniez précédemment. 66
  • 67. COMMANDES DE BASES : Répértoires Remarque: La commande cd, comme toutes les commandes utilisant des répertoires, permet de spécifier deux types de chemins: • Les chemins Relatifs: dépendent du dossier auquel vous vous trouvez, et utilisent notamment le répertoire '..' (répertoire père). Exemple:cd ../. • Les chemins Absolus: ils faut spécifier toute l’arborescence depuis la racine . Exemple: cd /home/rep1 Les chemins absolus commençent toujours par la racine (/). Vous devez faire ensuite la liste des dossiers dans lequels vous voulez entrer. Commande cd 67
  • 68. Opérations de base sur les répertoires • Les chemins relatifs :Un chemin relatif est un chemin qui dépend du dossier dans lequel vous vous trouvez. Supposant que je suis dans la racine / et je veux me déplacer au répertoire « games » 68
  • 69. Opérations de base sur les répertoires 69
  • 70. Opérations de base sur les répertoires 70
  • 71. • Les chemins absolus : les chemins absolus fonctionnent quel que soit le dossier dans lequel on se trouve. Un chemin absolu est facile à reconnaître : il commence toujours par la racine (/). Vous devez faire ensuite la liste des dossiers dans lesquels vous voulez entrer. Par exemple, supposons que je suis dans /home/chana et que je souhaite aller dans /usr/games. Avec un chemin absolu : cd /usr/games Opérations de base sur les répertoires 71
  • 72. Opérations de base sur les répertoires • Les chemins absolus : 72
  • 73. • Les chemins absolus et chemins Relatifs: Ici, comme c'est un chemin relatif, on part du dossier dans lequel on se trouve (/home/mateo21) et on indique à la machine le chemin à suivre à partir de là pour aller dans le dossier qu'on veut. Opérations de base sur les répertoires 73
  • 74. • Retour au Repertoire home: Si vous voulez retourner dans votre répertoire home personnel, plusieurs solutions s'offrent à vous : il suffit d'écrire le chemin absolu en entier. Opérations de base sur les répertoires 74
  • 75. COMMANDES DE BASES : Répertoires La commande pwd (print working directory): Affiche le répertoire courant ("répertoire de travail ») pwd Exemple : pippo@localhost :~$ pwd /usr/lib/news/bin pippo@localhost :~$cd .. pwd /usr/lib/news La commande pwd): peut etre utilisée lorsqu’on désire obtenir un chemin absolu sur le répertoire courant. Cette commande est également utilisée par les scripts pour déterminer le répertoire à partir duquel ils sont exécutés. Commande pwd La commande pwd n’accepte pas d’option. 75
  • 76. COMMANDES DE BASES : Répertoires La commande du (disk usage « utilisation du disque ») : Affiche les informations sur la taille qu’occupe les dossiers sur votre disque. Exemple : pippo@localhost :~$ cd /usr/news pippo@localhost : /usr/news$ du Commande du  du -h :Affiche la taille en Ko, Mo, Go,To.(pour human-readeable) )  du –a : (du –ah) Affiche la taille des dossiers et des fichiers et des sous-dossier  toute l’arborescence.  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, on la combine à –h) 76
  • 77. COMMANDES DE BASES : Répertoires 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’éxiste pas. Si l’un des répertoires intermedaires n’existe pas, la commande mkdir retourne un code d’erreur (exit status) sans créer le status ( sauf si l’option –p est spécifiée) mkdir [-p] nouveau_répertoire Exemple : Si on veut créer le répertoire /tmp/ESTM/GI mais le répertoire /tmp/ESTM/GI n’existe pas, on devrait normalement faire ceci: pippo@localhost :~$ mkdir /tmp/ESTM/ pippo@localhost :~$ mkdir /tmp/ESTM/GI Si on essaie de le créer, on reçoit le message suivant: mkdir: cannot create directory ‘/tmp/ESTM/GI ’: No such file or directory. On devra faire:~$ mkdir -p /tmp/ESTM/GI Commande mkdir 77
  • 78. COMMANDES DE BASES : Répertoires La commande rmdir (remove directory) permet de supprimer le répertoire spécifié sur la ligne de commande (répertoire). Si il existe des fichiers ou des sous répertoires, la commande retournera un code d’erreur (exit status). (Pour supprimer un répertoire, il faut qu’il soit vide) rmdir [-p] répertoire -p : permet de détruire tous les sous –répertoires vides. répertoire : représente le nom du répertoire à détruire. C’est un argument obligatoire. Exemple: ~$ rmdir /tmp/ESTM/GI ~$ cd /tmp ~$ rmdir –p /tmp/ESTM/GI rmdir: ESTM/GI : Whole path removed ~$ cd ESTM ESTM : does not exist ~$ Commande rmdir Nota: voir aussi la commande: rm –r: pour supprimer des répertoires contenants des fichiers. 78
  • 79. COMMANDES DE BASES : Gestions de Fichiers La commande cp ( copy) permet de copier le contenu d’un fichier dans un autre. cp [-i] [-p] fichier1 fichier2 cp [-i] [-p] [-r] source1 [source2...] répertoire 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 ces 3 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. Si cp -p fichier1 fichier2 : (p : preserve) Copier le fichier1 en préservant tous les attributs du fichier initial. Commande cp 79
  • 80. COMMANDES DE BASES : Gestions de Fichiers La commande mv( move) : déplace ou renomme les fichiers. mv [-i] source1 [source2...] destination mv déplace les fichiers fichiers 1,fichiers 2, etc dans destination.  Si destination est un fichier -> alors mv a pour action de renommer fichier1 en destination. mv fichier1 fichier2  Si destination est un répertoire -> alors mv déplace fichier1 dans ce répertoire. mv fichier1 repertoire.  mv -i : (i:interactif) Demande de confirmation avant l’écrasement du fichier. Commande mv 80
  • 81. COMMANDES DE BASES : Gestions de Fichiers La commande rm (remove) : Efface les fichiers ou les répertoires . rm [-i] source1 [source2...] rm : supprime les fichiers ou répertoires spécifiés sur la ligne de commande. Exemple  rm fichier1 : destruction du fichier fichier1  rm fichier1 fichier2 : destruction des fichiers fichier1 et fichier2.  rm fic* :Suppression de tous les fichiers qui commencent par fic . Option [-i] : demande de confirmation avant écrasement Commande rm 81
  • 82. COMMANDES DE CONSULTATIONS : Fichiers La commande cat (concatenate « concaténer »: joindre des ficiers séquentiellement) : Affiche des fichiers et /ou concatène les fichiers spécifiés sur la ligne de commande. cat [fichier...] Quand elle est appelée sans options sans nom de fichier, la commande cat répète sur la sortie standard ce qui est saisi sur l’entrée standard. Exemples: ~$ cat fichier1 fichier2 : Concaténation des deux fichiers fichier1 et fichier2 ~$ cat Fruits : Affichage de contenu de fichier Fruits banane Cerise Orange Commande cat 82
  • 83. COMMANDES DE CONSULTATIONS : Fichiers La commande more : Affiche des fichiers page par page . more [fichier...] La commande less : Sa fonction est similaire à la commande more « Affiche des fichiers page par page », mais elle permet en plus : 1- de revenir en arrière avec une page de moins en tapant « b » 2- de se déplacer vers le haut ou vers le bas avec les flèches de directions less [fichier...] Commandes more / less 83
  • 84. Commandes de consultation de fichiers • cat nom_fichier : afficher le contenu d'un fichier texte à l'écran (sans pouvoir arrêter le défilement) • more nom_fichier : afficher le contenu d'un fichier texte à l'écran en arrêtant le défilement à chaque page (espace pour descendre d'une page, entrée pour descendre d'une ligne, q pour quitter) • less nom_fichier : pareil que more, mais dispose d'un peu plus d'options (entre autre peut revenir en arrière : b pour revenir d'une page, y pour revenir d'une ligne, il est aussi possible de se déplacer vers le haut ou vers le bas avec les flèches de direction) 84
  • 85. COMMANDES DE CONSULTATIONS : La commande head : Affiche les n premières lignes d’un fichier, alors que tail affiche les dernières lignes d’un fichier et sort trie le fichier par ordre Si n n’est pas précisé, il prend par défaut la valeur 10. head [-n] [fichier...] tail [-n] [fichier...] Commandes head / tail et sort  -n :Nombre de lignes à afficher depuis le début de fichier .( -n suivi du nombre de lignes, par exemple –n 3 ou -3) 85
  • 86. Commandes de consultation de fichiers • head nom_fichier : afficher uniquement le début du fichier. -n suivi d'un nombre: permet d'afficher le nombre de lignes que vous voulez. Par exemple, si vous ne voulez que les 3 premières lignes, tapez : head –3 nom fichier ou head –n 3 nom fichier • tail nom_fichier : afficher uniquement la fin du fichier • tail nom_fichier : afficher uniquement la fin du fichier 86
  • 87. COMMANDES DE CONSULTATIONS : Fichiers 2 La commande touch : est utilisée pour changer les dates d’accès et de modifications d’un fichier ( d’où le « on touche »le fichier pour faire croire à l’ordinateur qu’on vient de le modifier alors qu’on n’a rien changé. Commande touch 87
  • 88. Système de fichiers Chaque contenu de fichier se voit attribuer un numéro d'identification appelé inode. Sous les systèmes LINUX tout élément est représenté sous forme de fichier. (Un périphérique, un écran, une imprimante, un répertoire…. TOUT EST FICHIER) Un répertoire est un fichier qui contient la liste des fichiers sensés être stockés dans ce répertoire. L'ensemble des fichiers est architecturé autour d'une unique arborescence dont la base, appelée racine, est notée «/». La liste des noms de fichiers est stockée dans un endroit différent de leur contenu. 88
  • 89. COMMANDES Gestions de Fichiers Inodes A tout fichier est associé une structure de données ( sur le disque) appellée Inode ( Information node). Dans chaque inode se trouvent différentes informations: Type de fichier ( fichier standard, lien symbolique, répertoire…) Les droits d’accès ( utilisateurs, groupes, …) Le proprietaire (UID) Le groupe proprietaire ( GID) Taille du fichiers en octets Dates Pour connaître le numéro d'inode d'un fichier, vous devez taper la commande suivante : ls –i nom_du fichier • ls –li :permet d’afficher, pour chaque fichier, le numéro d’inode. • ls –ali :permet de voir en plus des fichiers ( et les fichiers cachés) 89
  • 90. COMMANDES Gestions de Fichiers Inodes Un fichier est repéré de manière unique par:  le système de fichier auquel il est attaché Son inode 90
  • 91. COMMANDES DE GESTIONS DE FICHIERS Liens Physiques/ Liens Symboliques/ Liens Physiques ( hard link) Liens Symboliques ( soft link) •Création d’un nouveau nom pour le même inode. •Impossible de faire un lien physique vers un répertoire •Impossible de faire un lien physique vers un autre volume (partition) • c’est des fichiers spécial contenant le chemin d’accès à un autre fichier ( correspond aux « raccourcis » de Windows). • Création d’un nouvel inode de type lien symbolique.( -> possède son propre inode) •Le bloc de données contient une chaine de caractères représentant le chemin (relatif ou absolu) vers un fichier. Un lien est un couple ( nom_de_fichier, numéro d’inode). On peut créer 2 type de liens: 91
  • 92. COMMANDES DE GESTIONS DE FICHIERS La commande ln : permet de créer des entrées multiples dans l’arborescence d’un système de fichiers pour un même fichier. ( permet de créer des liens entre fichiers). Sans option, elle permet de créer des liens physiques. ln Nom-fichier Nom_du_lien_hard Avec l’option –s elle permet de créer des liens symboliques ln -s Nom-fichier Nom_du_lien_soft . Commandes ln Rappel: Pour supprimer un lien rm Nom_du_lien 92
  • 93. Exemple : (différence entre liens physique et liens symboliques 1. Création d’un Répertoire TEST 2. .Une fois dans le dossier tests, créer un fichier « fichier » vide de 0bytes 3. Créer un lien physique « lien_pyh», qui partagera le même inode (le même contenu) que « fichier» 4. Créer un lien symbolique « lien_sym », en pointant vers le nom du « fichier »( et non vers l’inode). 1ère colonne de la commande ls indique : numéro inode. 3 ème colonne: le nombre de liens dures( nombre de fichiers partageant le même inode) 6 éme colonne: dimension du fichier ( on remarque que le lien symbolique est un fichier sur le disque occupant 7 bytes. 93
  • 94. COMMANDES DE GESTIONS DE FICHIERS Exemple : (différence entre liens physique et liens symboliques Le fichier d’origine et le lien ont le même type de fichier « fichier régulier » indiqué par le tiret en tête des permissions, alors que le liens symbolique a un type différent (l: « lien »). Le fichier d’origine et le lien physique ont le même horodatage( alors que le lien symbolique affiche l’heure et la date de sa création. Enfin on remarque, à la fin de la ligne du lien symbolique, une flèche en direction du chemin du fichier vers le lien dur. 94
  • 95. COMMANDES DE GESTIONS DE FICHIERS Liens Physiques/ Liens Symboliques/ Schéma qui permet de comprendre les liens symboliques et les liens physiques. 95
  • 96. COMMANDES DE GESTIONS DE FICHIERS Liens Physiques/ Liens Symboliques/ Liens physiques:  Bien qu’ils économisent toujours de la place, les liens physiques sont indiscernables des fichiers d’origine. Si vous supprimer le fichier d’origine, cela n’affecte pas le contenu du lien physique. Le contenu est supprimé quand il n’y a plus aucun fichier ( lien physique) qui y fait référence. Liens Symboliques  La suppression du fichier, ne supprime pas le fichier référencé par le lien ! 96
  • 97. Commandes de gestion de fichiers • ln fichier_existant lien : créer un lien dur entre les deux fichiers (ln pour link) • ln -ds répertoire_existant lien : créer un lien symbolique entre les deux répertoires (d pour directory) • ln -s fichier_existant lien : créer un lien symbolique entre deux fichiers (s pour symbolic) 97
  • 98. COMMANDES DE RECHERCHE: Fichiers 3 La commande find : Permet de rechercher des fichiers dans l’arborescence à partir du point spécifié.( recherche des fichiers dans une hiérarchie de répertoires. ) Commandes find 98
  • 99. Commandes de recherche find recherche les fichiers actuellement présents La commande find s'utilise de la façon suivante : find "où" "quoi" "que faire avec« (seul le paramètre "quoi" est obligatoire) • Où : c'est le nom du dossier dans lequel la commande va faire la recherche. Tous les sous-dossiers seront analysés. • Quoi : c'est le fichier à rechercher. On peut rechercher un fichier par son nom, mais aussi en fonction de sa date de dernière création, de sa taille, etc. • Que faire avec : il est possible d'effectuer des actions automatiquement sur chacun des fichiers trouvés . Par défaut, la commande find affiche les résultats trouvés et ne fait rien d'autre avec. 99
  • 100. Commandes de recherche • Par nom • Par taille les fichiers qui font plus de 10 Mo -type d : pour rechercher uniquement des répertoires (directories). • Supprimer les fichiers trouvés • Par Type 100
  • 101. Recherche de fichiers et de répertoires • Options des sélection des fichiers et répertoires ▫ name : recherche par nom de fichier ▫ type : recherche par type de fichier ▫ user : recherche par propriétaire ▫ group : recherche par l’appartenance à un groupe ▫ size : recherche par taille de fichier ▫ atime : recherche par date de dernier accès ▫ mtime : recherche par date de dernière modification ▫ ctime : recherche par date de création ▫ perm : recherche par autorisations d’accès ▫ links : recherche par nombre de références (links) aux fichiers 101
  • 102. Recherche de fichiers et de répertoires • Option de commande ▫ Les options de commande seront traitées pour chaque fichier trouvé. En dehors de l’option –print qui montre le chemin d’accès au fichier, on peut mettre en place l’option -exec ▫ Les commandes dont il est fait état derrière –exec seront exécutées sans aucune demande de confirmation ▫ L’option –ok demande à l’utilisateur si la commande doit effectivement être exécutée. 102
  • 103. Recherche de fichiers et de répertoires • 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 103
  • 104. Recherche de fichiers et de répertoires suivi de –exec • Pour accéder à un des fichiers trouvés, dans le cadre de la commande placée derrière –exec, utilisez le raccourci {}  Exemple • find . –user student –exec ls –l {}; ( affiche le format long de la commande ls pour les fichiers trouvés) • find . –type f –atime +13 –exec rm {} ; (supprime les fichiers auxquels vous n’avez plus accédé depuis 13 jours) 104
  • 105. Recherche de fichiers et de répertoires • 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 . –ok rm {} ; 105
  • 106. 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 A majuscule. ▫ [a-m]* : fichiers dont le nom commence par une lettre de la plage a-m. ▫ *[1-5] : fichiers dont le nom se termine par un chiffre de la plage 1 à 5. 106
  • 108. Compression avec gzip et bzip2 • La compression d'un fichier se fait de manière suivante: gzip fichier • gzip renomme le fichier compressé en « fichier.gz ». • La compression d'un fichier avec bzip2 utilise la même syntaxe : bzip2 fichier • bzip2 renomme le fichier compressé en « fichier.bz2 ». • La décompression d'un fichier se fait à l'aide de la commande suivante : • gunzip fichier.gz ou • bunzip2 fichier.bz2 108
  • 109. tar : assembler des fichiers dans une archive • tar : permet d'assembler des fichiers dans un seul fichier avant de les compresser. 1. Pour réunir les fichiers dans un seul gros fichier appelé archive.  On utilise pour cela le programme tar. 2. Compresser le gros fichier ainsi obtenu à l'aide de gzip ou de bzip2. • La syntaxe de tar est très simple : tar options archive [fichiers]  cvf pour créer une archive ;  tvf pour lister le contenu d'une archive ; (comme ls pour les répertoire)  xvf pour restaurer le contenu d'une archive Pour archiver le contenu du répertoire courant dans le fichier : archive.tar tar cvf archive.tar * : 109
  • 110. tar : assembler des fichiers dans une archive • La commande tar ne compresse pas automatiquement les fichiers. Vous pouvez compresser les fichiers tar avec : ▫ tar -czvf foo.tar  Les fichiers tar compressés se voient attribuer l'extension .tgz et sont compressés avec gzip. • Pour décompresser un fichier tar, entrez : ▫ tar -xzvf foo.tar.gz 110
  • 111. Gestion de Droits des fichiers et répertoires 111
  • 112. Exemple d'affichage de droits Affichage des caractéristiques: ls -l Type : ‘d’ pour les repertoire ‘-’ pour les fichiers 112
  • 113. Permissions d'accès aux fichiers • Les droits d'accès sont scindés en trois catégories d'utilisateurs:  les droits du propriétaire (user)  les droits des membres du groupe (group)  les droits de tous les autres (other) Pour chaque catégorie, on peut attribuer les droits suivants: ▫ la lecture ("read", r); ▫ l'écriture ("write", w); ▫ l'exécution ("execute", x). • Si à la place d'un des caractères nous ne voyons qu'un tiret "-", c'est que le droit n'est pas autorisé. 113
  • 114. Permissions d'accès aux fichiers 114
  • 115. Le changement des droits • chmod : changer les droits d'accès d'un fichier (il faut être root ou propriétaire du fichier) • On utilise les signes (+ et -): + pour ajouter un droit, - pour en enlever un, Suivi des lettres r, w, x (lecture, écriture, exécution): Exemple : chmod -w nom_fichier : enlever les droits d'accès en écriture sur le fichier pour tout le monde 115
  • 116. Pour appliquer les changements seulement à certains "niveaux d'appartenance", il faut utiliser : -u pour user (propriétaire du fichier), - g pour group - o pour other (tous les autres) -Exemple : chmod ug +wx nom_fichier : ajouter, pour le propriétaire et les membres du groupe, les droits en écriture et en exécution sur le fichier Le changement des droits (suite) 116
  • 117. Modification des droits d’accès • Vous pouvez utiliser des +, - ou = pour ajouter, supprimer ou fixer des droits à l'une ou l'autre des catégories u, g, o ou a tous (a) en précisant le type de droit d'accès, r, w ou x. ▫ chmod g+w fic1 ▫ chmod o-x rep ▫ chmod u+rx,g-w fic2 ▫ chmod u=rwx,g=rx fic ▫ chmod a+r fic 117
  • 118. Modification des droits d’accès * Si le changement de droits s'applique à un répertoire, vous pouvez changer tous les droits des fichiers et répertoires inclus dans ce répertoire via l'option -R. Exemple: * Si nous souhaitons définir d'un seul mouvement toutes les permissions d'un fichier : chmod u=rwx,g=rw,o=r linux-test 118
  • 119. Le changement des droits Il existe une autre façon d'indiquer les permissions : • On utilise un nombre de 3 chiffres en octale ie compris entre 0 et 7 : ▫ le 1er pour le-la propriétaire ▫ le 2e pour les membres du groupes, et ▫ le 3e pour tous les autres). Les chiffes veulent dire : 119
  • 120. Le changement des droits 120
  • 121. Modification des droits d’accès chmod nombre_en_base_8 fichier1 [fichier2 …] • chmod utilise le codage binaire, fondé sur l'association de valeurs numériques aux différentes permissions : ▫ lecture : 4, ▫ écriture : 2, ▫ exécution : 1, ▫ pas de permission : 0. 121
  • 122. Modification des droits d’accès • Chaque triplet se code par l'addition de 4, 2, 1, ou 0. ▫ Pour un rwx il faudra ajouter 4+2+1=7, ▫ pour r-x il faudra 4+0+1=5 etc. • La commande chmod permettant de positionner rwxr-x--- sur fic1 par la commande suivante : chmod 750 fic1 122
  • 123. • Les droits Max des fichier et répertoire ▫ Répertoire 777 (rwxrwxrwx) ▫ Fichier normal 666 (rw-rw-rw-) • Les droits effectifs : Max - umask ▫ pour les droits des Répertoire = 777 -umask ▫ pour les droits des Fichiers = 666 -umask • La valeur de umask est fixer par la commande umask nombre_en_base_8 La commande umask •Exemple 2 ▫Si on souhaite un accès en lecture er écriture pour le propriétaire et en lecture seule pour le groupe et le reste de monde, ▫ umask 022 Exemple 1 : avec umask 006 ▫Les droits effectifs sont: pour les Répertoire = 777-006=771 pour les Fichiers =666 -006=660 123
  • 124. Calcule des droits à partir de Umask 124 Umask Droits Fichiers Droits Repertoires 000 666 (rw-rw-rw-) 777 (rwxrwxrwx) 002 664 (rw-rw-r--) 775 (rwxrwxr-x) 022 644 (rw-r--r--) 755 (rwxr-xr-x) 027 640 (rw-r-----) 750 (rwxr-x---) 077 600 (rw-------) 700 (rwx------) 277 400 (r--------) 500 (r-x------) 135 642(-rw-r---w-) 642(rw-r---w-) Le dernier cas ne respecte pas la règle de calcule, car Linux interdit de créer un fichier en exécution par défaut
  • 125. TD2: Exercices sur les droit d’accés : Soient les fichiers fich1 , fich2, fich3 et le répertoire REP1 qui contient deux autre fichiers f_rep1 et f_rep2 1- en utilisant (r,w,x) et { -, +,= } : 1.a- Attribuer les droits en lecture/ écriture pour le propriétaire et en lecture seule pour le groupe et le reste de monde sur les fichiers fich1 et fich2 1.b- Attribuer les droits d’exécution sur fich3 pour le groupe seul 1. c- Attribuer les droits en lecture/ execution pour le propriétaire et en écriture seule pour le groupe sur REP1 et ses fichiers 2 – Refaire les questions ( 1.a , 1.b et 1.c ) en utilisant les chiffres en base octale 3- à quoi sert la commande umask 4- donner la commande qui fixe la valeur de umask à 202 5- Que serait les droits des fichier et répertoire créés après l’execution de la commande de la question 4 , faite le calcul 125
  • 126. L'éditeur vi • Lançons Vi : [root@mistra /root]# vi • vi comprend deux modes : un mode "commande" et un mode "insertion", après le lancement de vi nous sommes en mode commande : appuyez sur la touche "Echap" puis sur "a". Vous voyez en bas de l'écran apparaître la ligne "-- INSERT --". Nous pouvons commencer notre texte : • Nous sortons du mode texte en appuyant à nouveau sur la touche "Echap". La mention "-- INSERT --" disparaît, nous sommes en mode commande • Tapez maintenant " :w linux-test" • Si vous souhaitez quitter sans enregistrez les dernières modifications, passer en mode commande et taper " : q!". • Si vous souhaitez quitter sans enregistrez les dernières modifications, passer en mode commande et taper " :w q!". 126
  • 127. L'éditeur vi D'autres commandes vi. A permet d'ajouter du texte à la fin de la ligne. i permet d'ajouter du texte avant le curseur. o permet d'ajouter une ligne en dessous du curseur. O permet d'ajouter une ligne au dessus du curseur. le retour chariot permet d'aller à la ligne suivante. dd permet de supprimer la ligne courante. x permet de supprimer le caractère avant le curseur. u permet d'annuler la dernière commande effectuée 127
  • 128. Extraire, trier et filtrer des données 128
  • 129. grep : filtrer des données rechercher dans un fichier texte le mot voulu et affiche la ligne où il se trouve • Syntaxe : grep [option] modèle_de_critères [fichier1 …] • Les options du grep les plus utiles sont : ▫ i : pour ne pas tenir compte des majuscules/minuscules, ▫ v : toutes les lignes ne contenant pas le critère, ▫ n : pour avoir les numéros de ligne, ▫ m NUM: permet de s’arrêter après NUM solutions trouvées. ▫ E : pour les expressions régulières plus compliquées, ▫ c : la commande ne retourne que le nombre de lignes trouvées ▫ r : rechercher dans tous les fichiers et sous-dossier 129
  • 130. grep : filtrer des données • Le modèle de critères peut contenir les caractères spéciaux suivants : ▫ […] : Plage de caractères permis à cet emplacement ▫ [^…] : Plage de caractères interdits à cet emplacement ▫ . : Un caractère quelconque (y compris un espace) ▫ * : Signe de répétition. Agit sur le caractère placé devant le * ▫ $ : Matérialise une fin de ligne ▫ | : ou ▫ ^ : début de ligne ▫ {…} : Caractère de répétition, entre les accolades  {nombre} nombre exacte  {nombre,} nombre minimum  {nombre1,nombre2} de nombre1 à nombre2 130
  • 131. Commandes de recherche • grep mot nom_fichier : rechercher dans un fichier texte le mot voulu et affiche la ligne où il se trouve • grep -l mot nom_fichier : rechercher dans un ou plusieurs fichiers texte le mot voulu et affiche le nom des fichiers qui contiennent le mot (utile pour une recherche sur plusieurs fichiers) • grep -c mot nom_fichier : donne le nombre de fois où le mot voulu a été rencontrée dans le fichier. • grep -v mot nom_fichier : renvoie dans la sortie standard le contenue de ‘‘nom_fichier’’ excepté des ligne où se trouve la chaine de caractère ‘’mot’’ • grep -n mot nom_fichier : renvoie dans la sortie standard les numéro des ligne où se trouve la chaine de caractère ‘’mot’’ dans le fichiers ‘‘nom_fichier’’ • grep -m 20 mot nom_fichier permet de s’arrêter après 20 solutions trouvées. • grep –i text fichiers : rechercher sans distinguer entre le majuscule et le minuscule 131
  • 132. ▫ liste des lignes commençant par LE Dans le fichier fichier1 : ( ^: debut de ligne) grep "^LE" fichier1 ▫ liste des lignes se terminat par ing Dans le fichier fichier1 : ( $: fin de ligne) grep " ing$" fichier1 ▫ recherche de STOP ou stop avec le numéro de la ligne : grep -n -i stop fichier1 ▫ liste des lignes contenant "image" ou "son" dans tous les fichiers du répertoire courant : grep -E "(image|son)" * ▫ Liste des lignes contenant "alias" ou "Alias" : grep -E [^Aa] lias fichier1 Commandes de recherche (suite) 132
  • 133. La commande sort : Trie les lignes du fichier par ordre alphabétique. sort [fichier...] Mais les options suivantes modifient les critères:  sort –r Fichier : (« reverse »:inverse) trie les lignes du fichier en ordre inverse. sort –n Fichier : Effectue un trie numérique. On peut combiner les deux options -nr Commande de trie des lignes Sort 133
  • 134. sort : trier les lignes • sort nom_fichier : Tri par ordre alphabétique des lignes d'un fichier texte. • -o : écrire le résultat dans un fichier • -r : trier en ordre inverse • -n : trier des nombres • -t :définit le caractère séparateur • -u :n'affiche qu'une seule ligne quand plusieurs lignes sont identiques • -k :indique la position de la clé de tri (numéro à partir de 1) Exemple: sort -n -t":" -k 3 /etc/passwd 134
  • 135. Exemple : différence entre sort –n et sort 135 3) Le trie de fichier uu2 par sort -n Idriss@Idriss-PC ~ $ sort -n uu2 0 5 8 9 12 8888 1) Le contenu de fichier uu2 Idriss@Idriss-PC ~ $ cat uu2 5 8888 8 9 0 12 2) Le trie de fichier uu2 par sort Idriss@Idriss-PC ~$ sort uu2 0 12 5 8 8888 9
  • 136. wc : compter le nombre de lignes • Affiche le nombre de lignes, de mots et d’octets d’un fichier • -l : compter le nombre de lignes • -w : compter le nombre de mots • -c : compter le nombre d'octets • -m : compter le nombre de caractères 136
  • 137. uniq : supprimer les doublons • Supprimer les lignes en double dans un fichier.(nous devons travailler sur un fichier trié ) • -c : compter le nombre d'occurrences • -d : afficher uniquement les lignes présentes en double 137
  • 138. cut : couper une partie du fichier • Couper selon le nombre de caractères Soit le fichier noms.txt contenant 1. Pour conserver uniquement les caractères 2 à 5 de 2. Pour conserver du 1er au 3ème caractère : 3. pour conserver du 3ème au dernier caractère : 138
  • 139. cut : couper une partie du fichier • Couper selon un délimiteur Ces colonnes contiennent, dans l'ordre : Le prénom La note Un commentaire nous souhaitons extraire de ce fichier la liste des prénoms. Soit le fichier notes.csv suivant : -d : indique quel est le délimiteur dans le fichier -f : indique le numéro du ou des champs à couper Pour avoir les champs n°1 et n°3 (le prénom et commentaire) : 139
  • 140. La commande split - split –n ( n entier positif) - split –b n ( n entier positif) La commande split permet de découper un fichier en plusieurs morceaux.  Option –n : découpe le fichier en plusieurs fichiers de n ligne • Syntaxe: split -n fichier • Exemple: decouper le fichier grand_ficher en des petit fichiers xaa, xab, xac ….., 10 ligne chacun… split -10 grand_fichier  Option –b n : découpe le fichier en plusieurs fichiers de n ko Syntaxe: split –b 1024 grand_ficher Exemple: découper le fichier grand_ficher en des petit fichiers xaa, xab, xac ….., de 1024ko chacun split –b 1024 grand_ficher 140
  • 141. La commande comm La commande comm permet d'extraire les lignes communes et les lignes uniques de 2 fichiers préalablement triés. 􀂄 Syntaxe: comm [-123] fichier1 fichier2 􀂄 Exemple: $ comm -12 carnet1 carnet2 marcel:13:0466342233:Marseille  Les ligne commune entre le fichier 1 et le fichier 2 -13 les lignes uniques 141
  • 142. La commande diff Cette commande permet de rechercher des différences entre 2 fichiers. Syntaxe: diff -options fichier1 fichier2 - Exemples d'options: -b ne pas tenir compte des différences concernant des espaces blancs -B ne pas tenir compte des différences concernant des lignes blanches 􀂄 Exemple: $ diff carnet1 carnet2 < maurice:29:0298334432:Crozon < robert:75:0144234452:Paris --- > myriam:30:0434214452:Nimes > olivier:29:0298333242:Brest 142
  • 143. sed est éditeur ligne non interactif, il lit les lignes d’un fichier une à une (ou provenant de l’entrée standard) leur appliquer un certain nombre de commandes d’édition et renvoie les lignes résultantes sur la sortie standard. Il ne modifie pas le fichier traité, il écrit tout sur la sortie standard. Syntax : sed -e ‘’programme sed’’ fichier-a-traiter ou sed -f fichier-programme fichier-a-traiter L’option -e n’est pas nécessaire quand on a une seule fonction d’édition. sed est une commande très riche (pour plus de détails man sed) La commande de sed 143
  • 144. La fonction de substitution : s • s permet de changer la 1re ou toutes les occurrences d’une chaîne par une autre. • Syntaxe : • sed "s/toto/TOTO/" fichier va changer la 1re occurrence de la chaîne toto par TOTO • sed "s/toto/TOTO/3" fichier va changer la 3 me occurence de la chaîne toto par TOTO • sed "s/toto/TOTO/g" fichier va changer toutes les occurences de la chaîne toto par TOTO • sed "s/toto/TOTO/p" fichier en cas de remplacement imprime les lignes concernées • sed "s/toto/TOTO/w resultat" fichier en cas de substitution , la ligne en entrée est inscrite dans un fichier résultat La commande de sed 144
  • 145. • La fonction de substitution peut être utilisée avec une expression régulière. sed -e "s/[Ff]raise/FRAISE/g" fichier substitue toutes les chaînes Fraise ou fraise par FRAISE La commande de sed 145
  • 146. La fonction de suppression : d • La fonction de suppression d supprime les lignes comprises dans un intervalle donné. • Syntaxe : sed "20,30d" fichier : Cette commande va supprimer les lignes 20 à 30 du fichier fichier. On peut utiliser les expressions régulières : ▫ sed "/toto/d" fichier : supprime les lignes contenant la chaîne toto ▫ sed "/toto/!d" fichier : supprime toutes les lignes ne contenant pas la chaîne toto • En fait les lignes du fichier d’entrée ne sont pas supprimées, elles le sont au niveau de la sortie standard. La commande de sed 146
  • 147. Les Alias  les alias ( commande alias) Syntaxe : $ alias nom_alias=‘commande’ Exemples : 1- alias liste=" ls –lrt" 2- alias beep="echo $'a‘” (sígnale sonore) Pour supprimer l’alias : unalias Syntaxe : $ unalias nom_alis  le type de fichiers ( commande file ) Syntaxe : file nom_fichier 147
  • 148. Mécanismes de redirection et de Tube(’ <’ , ‘<<‘, ‘>,’>>, ’|’’ pipe et double pipe ‘||’). 148
  • 149. > et >> : rediriger le résultat dans un fichier • > : rediriger le résultat de la commande dans le fichier de votre choix « > » (appelé chevron) redirige la sortie de la commande dans un fichier appelé "eleves.txt" qui vient d'être créé • Le double chevron >> sert lui aussi à rediriger le résultat dans un fichier, mais cette fois à la fin de ce fichier. Attention : si le fichier existait déjà il sera écrasé sans demande de confirmation ! 149
  • 150. 2>, 2>> et 2>&1 : rediriger les erreurs • les commandes produisent 2 flux de données différents : La sortie standard : pour tous les messages (sauf les erreurs). La sortie d'erreurs : pour toutes les erreurs. 150
  • 151. • Il est aussi possible d'utiliser 2>> pour ajouter les erreurs à la fin du fichier 2>&1 : redirige les erreurs au même endroit et de la même façon que la sortie standard. il n'est pas possible d'écrire : 2>>&1 Exemple : cut –d , -f 1 fichiers_inexistant.csv>>eleves 2>&1 2>, 2>> et 2>&1 : rediriger les erreurs 151
  • 152. < et << : lire depuis un fichier ou le clavier La console vous propose alors de taper du texte. écrire des nombres, un par ligne (en appuyant sur la touche Entrée à chaque fois Lorsque vous avez fini, tapez FIN pour arrêter la saisie. Le mot FIN est-il obligatoire ? vous pouvez utiliser le mot que vous voulez. Par exemple : 152
  • 153. Un tube (pipe) | : chaîner les commandes • Un tube permet d’établir une liaison directe entre la sortie d'une commande et l'entrée d'une autre commande. On peut écrire cette liste triée dans un fichier : 153
  • 154. Un tube (pipe) | : chaîner les commandes (2) Exemple : intérêt des | cd source tar cvf archive.tar * cd destination tar xvf source/archive.tar rm source/archive.tar Malheureusement, cette technique nécessite beaucoup de place disque, puisque l'archive temporaire est stockée directement sur disque. De plus, elle est assez lente, car toutes les données à copier sont recopiées sur le disque dur, et relues ensuite, pour finalement être détruites.. La solution est de réaliser un tube entre les deux processus tar invoqués. Dans ce cas, le transfert se fait simplement via la mémoire vive : cd source tar cvf * | (cd destination ; tar xvf -) Cette commande est un peu plus compliquée, car la commande d'extraction des fichiers nécessite un changement de répertoire. Il faut donc utiliser une commande multiple du shell. Ces commandes sont constituées de plusieurs autres commandes séparées par des points virgules. La première commande effectuée ici est le changement de répertoire, et la deuxième est l'extraction par tar de l'archive qui lui est transférée par le flux d'entrée standard (représenté ici par '-'). Ces deux commandes sont mises entre parenthèses, car l'opérateur '|' du tube est prioritaire sur l'opérateur ';' de concaténation des commandes du shell. , la commande qui utilise le tube consomme deux fois moins d'espace disque et est deux fois plus rapide que la commande qui n'en utilise pas. 154
  • 155. Double tube ( double pipe) || : C’est le OU Syntaxe: Commande 1 || commande 2 Si commande 1 est erroné on passe à commande 2 Exemple ls fichier1 || rm fichier2 Si fichier1 n’existe pas on supprime fichier2 155
  • 156. La commande tee • La commande tee permet de rediriger la sortie standard d’une commande vers un fichier et vers la sortie standard. Exemple : ls /bin | grep " etci" | tee fich.log | wc –l * met dans le fichier fich.log les noms des fichiers dont le nom contient la chaîne "etci" dans le répertoire /bin * Ensuite compte le nombre de fichiers dont le nom contient la chaîne "etci" dans le même répertoire 156
  • 158. date : régler l'heure Personnaliser l'affichage de la date Modifier la date Attention, il faudra être root pour modifier la date 158
  • 159. Automatisation de tâches • Effectuer de tâches à des temps différés: De manière répétitive (commande crontab) Ponctuellement (commande at) Ces tâches peuvent êtres de toute nature (sauvegarde, opérations sur les données ...) et sont souvent décrites dans des scripts shell. 159
  • 160. La commande at •La commande at exécute une commande à un moment donnée. • Exemple: La création du répertoire « docs » dans votre répertoire à 15h30 $ at 1530 //le moment d’exécution at> mkdir /home/<moncompte>/docs // la commande à executer at> <Ctrl^D> // pour finir •Pour exécuter la commande demain à 14h17 •Pour exécuter la commande le 18 novembre 2015 à 10h30 $ at 10:30 11/18/15 160
  • 161. Exécuter une commande après un certain délai • pour exécuter la commande dans 5 minutes : ce qui signifie "Dans maintenant (now) + 5 minutes". Les mots-clés utilisables sont les suivants : • minutes • hours (heures) • days (jours) • weeks (semaines) • months (mois) • years (années) exécutera les commandes dans 2 semaines 161
  • 162. atq et atrm : lister et supprimer les jobs en attente 􀂄 atq Visualisation de ses tâches en attente ou de toutes les tâches en attente pour l'administrateur. 􀂄 atrm num Destruction d'une tâche en attente (num est le numéro de la tâche à supprimer obtenu grâce à la commande atq). 162
  • 163. Ecriture d'une crontab 1/2  L'utilisateur doit écrire une "crontab" pour décrire les tâches qu'il souhaite automatiser.  Le format d'une "crontab" est une commande par ligne; une ligne est composée de: minute heure jour_mois mois jour_semaine commande minute: 0-59 heure: 0-23 jour_mois: 1-31 mois: 1-12 jour_semaine: 0-6 (0 = dimanche) RQ: en cas de plusieurs moment on les sépare par une virgule(,) , ou par un tiret (-) s’il s’agit d’une plage ( voir l’exemple dans le slide qui suit )  Pour visualiser sans écrire dans le contab on tape : crontab –l  Pour éditer et écrire dans le contab on tape : crontab –e 163
  • 164. Tous les jours à 23h30 : 30 23 * * * df >> /tmp/df.log Toutes les heures, passées de 5 minutes : 5 * * * * df >> /tmp/df.log chaque 5 minutes : */10 * * * * df >> /tmp/df.log Tous les premiers et le 15 de chaque mois à 23h30 : 30 23 1,15 * * df >> /tmp/df.log Tous les lundis à 10h28 et à 21h28 : 28 10,21 * * 1 df >> /tmp/df.log Tous du lundi au vendredis n'importe quel mois à 11h22 : : 22 11 * * 1-5 df >> /tmp/df.log Exemples Chacun des exemples enregistre l'espace disque libre (commande df) dans le fichier /tmp/df.log à des horaires différents. Afin de conserver l'historique, ces exemples utilisent la redirection >> qui permet d'ajouter les nouvelles données à la fin du fichier (si celui-ci existe déjà). Ecriture d'une crontab (2/2) 164
  • 165. Définition : Un processus est un programme en cours d’exécution. On distingue deux types de processus: - Le processus système (daemons) : assure des services généraux accessibles à tous les utilisateurs du système. Le propriétaire est le root et il n’est sous le contrôle d’aucun terminal. - Le processus utilisateur : dédié à l’exécution d’une tâche particulière. Le propriétaire est l’utilisateur qui l’exécute et il est sous le contrôle du terminal à partir duquel il a été lancé. important : dans les système Linux l’identifiant de processus est le PID Processus : Définitions 165
  • 166. Processus : Cycle de vie Création: Toute exécution d’un programme déclenche la création d’un processus dont la durée de vie = la durée d’exécution du programme. Le système alloue à chaque processus un numéro d’identification unique : PID (Process IDentifier). Tout processus est créé par un autre processus : son processus père (PPID) Exemples : Lorsqu’un utilisateur lance une commande, un processus est créé dont le père est le processus correspondant à l’exécution du shell. 166
  • 167. Voici une liste des données d'identification d'un processus : Un numéro de processus unique PID (Process ID) : chaque processus Unix est numéroté afin de pouvoir être différencié des autres Un numéro de processus parent PPID (Parent Process ID) : chaque processus peut lui-même lancer d'autres processus, des processus enfants (child process). Chaque enfant reçoit parmi les informations le PID du processus père qui l'a lancé Un numéro d'utilisateur et un numéro de groupe : correspond à l'UID et au GID de l'utilisateur qui a lancé le processus. C'est nécessaire pour que le système sache si le processus à le droit d'accéder à certaines ressources ou non. Les processus enfants héritent de ces informations. Durée de traitement et priorité : la durée de traitement correspond au temps d'exécution écoulé depuis le dernier réveil du processus Répertoire de travail actif : A son lancement, le répertoire courant (celui depuis lequel le processus a été lancé) est transmis au processus. C'est ce répertoire qui servira de base pour les chemins relatifs. 167
  • 168. 168 Processus : Cycle de vie 1.Un processus est crée. Son code est chargé. Les données sont initialisées pour l’ordonnanceur. 2. le quantum de temps a expiré, l’ordonnanceur choisit un nouveau processus. 3. L’ordonnanceur choisit ce processus. 4. Le processus est en attente d’une ressource. 5. La ressource ou les données deviennent disponible. 6. Le processus sort des files d’attente de l’ordonnanceur.
  • 169. Les Etats d’un processus (suite) • Durant sa vie (temps entre le lancement et la sortie) un processus peut passer par divers états : • actif : processus qui en train de réaliser des actions à un instant donné. • exécutable : processus qui pourrait tout à fait être en train de s'exécuter, mais il doit attendre que le processus actif laisse sa place. • endormi : processus qui ne fait rien. Il attend une condition pour redevenir exécutable ou actif. Il peut se mettre lui-même en sommeil. Mais il peut aussi être mis en sommeil par le noyau en attendant ce qu'il demande soit disponible. • zombie : processus en réalité terminé. Il a fini son exécution et n'a donc plus de raisons d'exister. Seulement pour diverses raisons possibles, son père n'a pas été informé de ceci. 169
  • 170. ps : liste des processus statique • ps :permet d'obtenir la liste des processus qui tournent au moment où vous lancez la commande • PID : c'est le numéro d'identification du processus. Chaque processus a un numéro unique qui permet de l'identifier. • TTY : c'est le nom de la console depuis laquelle a été lancé le processus. • TIME : la durée d'exécution du processus. • CMD : le programme qui a généré ce processus. ps sans arguments affiche seulement les processus lancés par le même utilisateur 170
  • 171. ps : liste des processus  ps –ef :permet d’obtenir la liste de tous les processus lancés par tous les utilisateurs sur toutes les consoles Exemple $ ps –ef UID PID PPID C STIME TTY TIME CMD Chana 2145 187 0 Aug 11 pts/2 0:01.87 /sbin/init -a root 3 1 0 Aug 11 ?? 0:00.27 /sbin/kloadsrv  ps -u User : lister les processus lancés par un utilisateur 171
  • 172. Les processus :Notion de signal Numéro de signal Signification 15 Signal de terminaison de processus. 9 Signal de destruction inconditionnelle de processus. 19 Signal de suspension de processus. 18 Signal de reprise d'exécution d'un processus suspendu. Dans un système Unix, tous les processus peuvent recevoir des messages, envoyés soit par l'utilisateur, soit par un autre processus, soit par le système. Ces messages sont appelés signaux L'envoi d'un signal se fait avec la commande kill, avec la syntaxe suivante : kill [-signal] PID 172
  • 173. ctrl+c et kill : arrêter un processus • Ctrl + C : arrêter un processus lancé en console • kill : tuer un processus • kill -9 : vous demandez à Linux de tuer le processus sans lui laisser le temps de s'arrêter proprement 173
  • 174. Lancement d’un programme ( pour crée un processus) 1. Lancement en arriere plan (commande nohup) $ nohup nom_programme 2. Lancement et retour au mode console ( &) $ nom_programme & 3. combinaison de 1 et 2: $ nohup nom_programme & 174
  • 176. Les shells sous unix •Au démarrage d'une session, un utilisateur peut taper et faire exécuter des commandes lignes grâce à un shell. Les shells standards : 􀂄 Bourne Shell (/bin/sh) Il s'agit du shell UNIX d'origine. Le nom du programme est (sh) et il est connu comme étant le shell bash des systèmes Linux. 􀂄 C-Shell (/bin/csh) Ce shell est rarement utilisé car il est assez complexe. 􀂄 Korn Shell (/bin/ksh) Ce shell a été écrit par David Korn. Il combine les fonctions interactives qui ont fait le succès du shell C avec la syntaxe de programmation conviviale du shell Bourne. 􀂄 Bourne Again Shell (/bin/bash) ce shell est une extension améliorée du shell Bourne •On peut trouver une liste des shells autorisés sur une machine dans le fichier /etc/shells 176
  • 177. Les scripts shells  Le shell peut être utilisé pour exécuter des commandes contenues dans un fichier texte.  Les scripts peuvent être créés avec un éditeur de texte.  Il est conseillé de positionner le droit d'exécution sur les fichiers scripts.  Il est également conseillé de préciser sur la 1ère ligne du script sous quel shell (Shebang ) les commandes doivent être exécutées. Syntaxe: #!/bin/sh ou #!/bin/bash  (Shebang )  L'exécution d'un shell script se fait: ▫ en tapant son nom (si le script dispose du droit x); exemple: script ▫ en préfixant par le nom du shell; exemple: sh script ou bash script ▫ en préfixant par ./ ; exemple: ./Script 177
  • 178. Les commandes d'entrée/sortie • La commande echo permet d'afficher une chaîne de caractères ou le contenu de variables sur la sortie standard. Exemple: echo "La variable vaut $nom" • La commande read permet de lire une ligne de caractères à partir de l'entrée standard et place les différents mots dans les variables transmises en argument. Exemple: #!/bin/bash echo entrez deux nombres: read nombre1 nombre2 echo La somme vaut $(($nombre1 + $nombre2)) 178
  • 179. Les variables • On peut créer des variables V par affectation et les utiliser avec $V Exemple: #!/bin/bash pays=Maroc echo La variable pays vaut $pays • Il existe aussi des variables définies automatiquement. Ce sont les paramètres entrés au lancement du script Exemple: #!/bin/bash pays=$1 #$1 est le premier paramètre, $2 le deuxième etc... echo La variable pays vaut $pays • Il existe d’ autres variables automatiques: • $# qui est le nombre de paramètres • $0 qui est le nom du programme. • $* OU $@ : la liste des paramètres 179
  • 180. Le shell peut évaluer des expressions arithmétiques délimitees par $(( )) ou par $( echo a+b|bc) ou encore par la commande expr Expressions arithmétiques ◮ Exemple avec: $(( )) $ n=10 $ echo $(( $n + 1 )) $ p = $(( $n * 5 / 2 )) $ echo $p ◮ Exemple avec: $( |bc ) $ n=10 $q= $( echo $n + 1 |bc ) $p=$(echo $n*5/2 |bc ) $echo q $echo $p Attention : - les (( et les )) ne sont pas séparés par les espaces - Dans expr il faut respecter les espace entre les opérandes et les opération arithmétique (+, - = / * %, ) ◮ Exemple avec: expr $ n=10 $ expr $n + 25 ……………….. 35 180
  • 181. La commande test ou [ ] • Cette commande permet de tester l'existence et le statut d'un fichier. • Test de fichier ou répertoire: If [ –e fiche_rep ] vrais si le fiche_rep existe If [ ! –e fiche_rep ] vrais si le fiche_rep n’existe pas 181
  • 182. La commande test ou [] • test de chaînes de caractères • Ces tests peuvent être combinés: ! négation logique -a (&&) et logique -o (||)ou logique Exemple 1: test -r essai -a -s essai Exemple2 if [ $A -lt 20 -a $B -lt 20 ] || [ $A -gt 10 -a $B -gt 10 ] = si A et B sont >10 ou A et B sont <20 182
  • 183. La commande test ou [] Exemple: #!/bin/bash if (test $1 -gt $2) then echo $1 est plus grand que $2 elif [ $1 -lt $2 ] then echo $1 est plus petit que $2 else echo $1 égale $2 fi structure if : syntaxe : if ( condition) then instruction1 elif ( condition2) then instruction1 else dernière instruction fi Les différents opérateurs de comparaisons numérique sont: 183
  • 184. Substutution d’une commande: • On peut passer le résultat d’une commande dans des variables • Exemples: $ a=`ls F*|wc` ( a contient le nombre des fichiers qui commence par F $ b=`wc –l file` ( b contient le nombre des ligne contenue dans le fichier ) $ en_fic=`find. –type f –name *.java` ( en_fic contient la liste des fichiers d’extenssion java ) syntaxe : variable= ` commande` 184
  • 185. Commande echo –n La commande echo –n permet d’afficher sans effectuer un retour chariot Exemple : ------------echo seule ----------------------- $ echo "bonjour " ; echo " tout le monde " bonjour tout le monde ------------echo –n ----------------------- $ echo -n "bonjour "; echo " tout le monde " bonjour tout le monde 185
  • 186. Exercice 1 • Ecrire un scripte bash qui : admet deux paramètre en entrée - Teste le nombre de paramètre . - Si <2 affiche le message suivante« Attention paramètre insuffisants ! » - Si >2 : affiche le message suivante « trop de paramètre! » - Si =2 : réalise et affiche la somme Indication : utiliser le $# pour retourner le nombre de paramètre Solution : faite dans la classe il faut la noté 186
  • 187. Exercice sur ( expression arithmétiques) • Soient a= 6 , b=21 et c=9 à l’aides des expressions arithmétiques : • Calculer et afficher la somme de a et b. • Calculer et afficher la moyenne de de a , b et c. • Calculer et afficher la moyenne de de a , b et c. • Calculer et afficher le reste de la division de b / c. Exercice 2 ( IF avec les ou et les et logiques ) a- Ecrire un scripte qui lit 2 valeurs et affiche si leur produit est positif ou négatif sans le calculer b- la même chose mais cette fois ci les 2 valeurs son passées en paramètre du scripte 187
  • 188. 2.a #!/bin/sh echo " dooner 2 nombre" read A B if [ $A -lt 0 -a $B -lt 0 ] || [ $A -gt 0 -a $B -gt 0 ] then echo " produit positif" else echo " produit negatif" fi 2.b #!/bin/sh echo " dooner 2 nombre" if [ $1 -lt 0 -a $2 -lt 0 ] || [ $1 -gt 0 -a $2 -gt 0 ] then echo " produit positif" else echo " produit negatif" fi Solution Exercice 2 ( IF avec les ou et les et logiques ) 188
  • 189. Choix multiples : case • La commande case … esac permet de vérifier le contenu d'une variable ou d'un résultat de manière multiple. • Syntaxe : case Valeur in Modele1) Commandes ;; Modele2) Commandes ;; *) action_defaut ;; esac L’option case sert à réaliser les menus 189
  • 190. La structure while Syntaxe: while (conditions) do liste de commandes ou d’instruction done Exemple #!/bin/bash i=0 while [ $i -lt 100 ] do i=$(($i+1)) echo $i done 190
  • 191. La structure for Syntaxe: for nom in liste do liste de commandes Done Exemple 1 : test si un fichier existe parmi une liste de fichiers f1 à fn #!/bin/bash for fichier in f1 f2 f3 f4 ….fn do if [ -f $fichier ]; then echo "$fichier est un fichier ordinaire" fi done Exemple 2 :suppression des fichiers d’extension jpg png et txt #!/bin/bash for ext in jpg png txt do rm *.$ext done 191
  • 192. La structure for La commande seq La commande seq permet de parcourir une suite de chiffre successive Exemple : affichage d’une suite de 1 à 4 $ for i in $(seq 1 4) > do > echo $i > done Résultat est : 1 2 3 4 192
  • 193. until (condition) do Suite d’instructions done La structure until La structure while est utilisée dans les situation ou on veut executer une suite d’instruction tant qu’une condition est vrai Des fois on a besion d’executer des instruction jusu’a ce qu’un condition soit satisfaite (vrai)  la on utililse la boucle until Syntaxe Exemple a=0 until [ ! $a -lt 10 ] do echo $a a=`expr $a + 1` done 0 1 2 3 4 5 6 7 8 9 Résultat 193
  • 194. Étiquette (fonction): Nommer une suite d’instruction • On peut rassembler une suite d’instructions dans une fonction nommée , et appeler cette fonction là ou on veut • Exemple: #!/bin/bash ajouter () { echo "------AJOUT -----" echo "Nom ?" read nom echo "Tel ?" read tel echo "$nom,$tel" >> agenda.txt } ajouter ; L’étiquette ajouter permet d’ajouter une ligne dans le fichier agenda.txt 194
  • 195. L’instruction exit L’instruction exit permet de forcer la fin de l’ exécution de scripte en cours Valeurs de exit: •$0 : retourne la valeur de exit • 0 : si le scripte ou la commande s’est terminer correctement • >0 : si le scripte ou la commande s’est terminer en erreur •On peut aussi forcer la valeur de exit par exit valeur Exemple: test de l’existence d’un fichier ou répertoire If [ ! –e fic_rep ] then exit 3 fi 195
  • 196. Exercice 3 ( case … esac) • En utilisant case ..esac Ecrire un programme appeler « jour.bash » qui admet comme paramètre un chiffre de 1 à 7 et qui affiche le jour de la semaine correspondant • Exemple d’execution: jour.bash 2 c’est Mardi! Exercice 4 ( while) • Ecrire un scripte shell qui permet de lire une suite de nombre saisis à partir de clavier. • Dés fin de la saisi marquée par le chiffre 999 . Afficher les nombre en ordre croissant 196
  • 197. Exercice 6 (until) écrire un script shell qui prend en argument un nombre et renvoie son inverse sinon renvoie une erreur si le nombre d'arguments est différent de 1. exemple : 123 ---> 321 Exercice 7 (while) écrire un script shell avec des boucles qui affiche : 1 22 333 4444 55555 Exercice 5 (for) Ecrire un scripte shell qui permet de trouver tous les fichiers d’extention java dans l'arborescence courante qui contiennent la chaine de caractères passée en paramètre 197
  • 198. Solution ( case … esac) Ecercices 3 #!/bin/sh case $1 in 1 ) echo "c'est lundi" ;; 2 ) echo "c'est mardi" ;; 3 ) echo "c'est mercredi" ;; 4 ) echo "c'est jeudi" ;; 5 ) echo "c'est vendredi" ;; 6 ) echo "c'est samedi" ;; 7 ) echo "c'est dimanche" ;; *) echo " le numéro entrer ne correspond a auncun jour ";; esac 198
  • 199. Ecercices 4 #!/bin/bash if (test -f fich_num ) then rm fich_num fi i=0 while (test $i -ne 99) do read num i=$num echo $num >> fich_num done sort -n fich_num Solution( while) 199
  • 200. Solution (for) Ecercices 5 #!/bin/sh for file in `find . –type f -name "*.java ’’` do res=` grep $1 $file | wc –l ` if [ $res –ge 1 ] then echo $file fi done 200
  • 201. Solution Exercice 6 #!/bin/bash a=$1 b=0 if [ $# -ne 1 ] then echo "ereur" else until [ $a -eq 0 ] do b=$(( $a % 10 )) a=$(($a/10)) echo -n "$b" done fi Solution Exercice 7 #!/bin/bash i=1 nbr=5 while [ $i -le $nbr ] do j=1 while [ $j -le $i ] do echo -n "$i" j=$(($j+1)) done i=$(($i+1)) echo done 201

Editor's Notes

  1. Agit comme un véritable arbitre entre les logiciels et les ressources ordinateur ( RAM , Micro-process)