A3iFormations, organisme de formations certifié qualiopi.
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
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
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
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
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 microprocesseurarrê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
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
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
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
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
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
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
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
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
Notes de l'éditeur
Agit comme un véritable arbitre entre les logiciels et les ressources ordinateur ( RAM , Micro-process)