0% ont trouvé ce document utile (0 vote)
28 vues59 pages

Se 24-25

Transféré par

simoatir29
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
28 vues59 pages

Se 24-25

Transféré par

simoatir29
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

SYSTEME D’EXPLOITATION I

IA ET MIP - S3

Pr. Abouelmehdi Karim

2024 - 2025

Plan

• Introduction au SE
• Présentation de Linux
• Commandes de base
• La programmation Shell

1
Système d’exploitation
Le système d'exploitation (SE, en anglais Operating System ou OS)
est un ensemble de programmes responsables de la liaison entre les
ressources matérielles d'un ordinateur et les applications de l'utilisateur
(traitement de texte, jeu vidéo, …)

Exemple de OS: Windows, Linux, Unix, Mac, Ms Dos…

Système d’exploitation :
Introduction
Un programme informatique, que ce soit un noyau ou un logiciel, est
constitué de nombreuses lignes de code, écrites dans un langage de
programmation (le langage C dans le cas du noyau Linux). Ce code
n'est généralement pas utilisable en tant que tel. Il faut passer par la
phase de compilation qui transforme le code source en programme
exécutable, souvent appelé binaire. Il suffit d'avoir le binaire pour
utiliser le programme.

Quand on achète un logiciel (Microsoft Office par exemple) ou un


système d'exploitation (Windows par exemple), 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.

2
Système d’exploitation :
Logiciel libre/Logiciel propriétaire
Les logiciels propriétaires sont donc les logiciels dont une licence,
souvent payante, ne donne qu'un droit limité d'utilisation. On n'a la
plupart du temps accès qu'aux binaires de ces logiciels. Certains
logiciels propriétaires sont gratuits, on les appelle alors des freewares.
(Windows est un OS propriétaire dont le code source est
jalouse ment gardé par Microsoft. Imaginez que c'est un peu
comme le Coca-Cola : personne ne connaît la recette de
fabrication .

On ne peut donc pas le modifier ou regarder comment il


fonctionne à l'intérieur.)

Système d’exploitation :
Logiciel libre/Logiciel propriétaire

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 :

• Liberté d'exécution : tout le monde a le droit de lancer le programme, quel


qu'en 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 ;

3
Présentation de Linux :
Historique

UNIX est un SE, créé en 1969 par Ken Thompson et Dennis Ritchie .
Il est :
• multi-tâches et multi-utilisateurs,
• Portable, c’est-à-dire le code est indépendant de l’architecture du
matériel de l’ordinateur,
• Disponible sur différentes plate-formes. La grande majorité des serveurs
sur Internet fonctionnent sous UNIX,
• Aujourd’hui, UNIX est très utilisé en informatique scientifique, et pour
les serveurs réseaux.

Présentation de Linux :
Historique

Projet GNU est un projet lancé par Richard Stallman, un chercheur du


MIT.

Le but est de développer 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.

4
Présentation de Linux :
Historique

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
Project GNU
LINUX

GNU/LINUX

Le projet GNU (programmes libres) et Linux (noyau d'OS) ont


fusionné pour créer GNU/Linux.

Présentation de Linux :
Historique

Le projet GNU (programmes libres) et Linux (noyau d'OS) ont


fusionné pour créer GNU/Linux.

5
Présentation de Linux :
Distributions de linux
Il existe une très grande variété de distributions, ayant chacune des objectifs
et une philosophie particulière.

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.

Présentation de Linux :
Distributions de linux
Red Hat : http://www.redhat.com/ La plus populaire. Fiable, sûre, conviviale et
facile à installer, prise en charge par tous les fournisseurs de logiciel et de
matériel.

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

6
Présentation de Linux :
Distributions de linux

Fedora Core: http://fedora.redhat.com/ Stable, sûre, conviviale, facile à


installer. Sortie fréquente de nouvelles versions complètes.

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.

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.

Présentation de Linux :
Systèmes de fichiers

▪ Le système de fichiers d'un système d'exploitation est la façon d'organiser


et de stocker une arborescence sur un support (disque dur, disquette, cd-
rom, ...).
▪ Chaque système d'exploitation possède son système de fichier privilégié,
même s'il peut en utiliser d'autres.

7
Présentation de Linux :
Systèmes de fichiers

• Ext2 : c'est le système de fichiers qui a longtemps été utilisé sous Linux. Il a été
développé par un français (Rémy Card) et présente la particularité de ne pas se
fragmenter.
• Ext3 : l'ext3 est très proche de l'ext2, à une différence majeure près, la
journalisation. En effet, ext2 n'était pas journalisé, et en cas de crash disque on
risquait plus facilement une perte de données. Ce n'est plus le cas avec l'ext3.
Concrètement, un système de fichiers journalisé enregistre dans un journal (une sorte
de mémoire tampon) ce qui doit être écrit sur le disque dur. Au cas d’un crash disque
, il va vérifier le contenu du journal, si celui ci est plein, il va le transférer dans le
disque dur → donc évite la perte de données.

Présentation de Linux :
Systèmes de fichiers
◼ D'autres systèmes existent :
◼ ReiserFs : Système également
journalisé.(GNU/LINUX)
◼ JFS : Système développé et utilisé par IBM. Il est
proche de ReiserFs
◼ XFS : Créé par SGI pour son système IRIX
◼ Linux reconnaît d'autres systèmes de fichiers : FAT
et NTFS(windows)

16

8
Présentation de Linux :
Systèmes de fichiers

L’appellation "à la Linux" est un peu plus complexe que celle de Windows.

C:
Windows D:
E:

hda
Linux hdb
hdc
sda

Présentation de Linux :
Systèmes de fichiers

L’appellation "à la Linux" est un peu plus complexe que celle de Windows.
hd[a-d] n

h : la première lettre indique si le disque est de type IDE ou SCSI (un


type de 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 ….

n : est un numéro qui permet de numéroter les partition.


exemple: hda1: 1er partition hda
hdb10: 10ème partition hdb

9
Présentation de Linux :
Systèmes de fichiers
◼ 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 Files\Winzip".
il n'y a pas de "C:" sous Linux, la racine (le début) s'appelant juste
"/".

Présentation de Linux :
Systèmes de fichiers
Le système de fichiers sur Linux est une structure hiérarchique dont une
racine et des répertoires qui s'y rattachent.
Contrairement au système MS-DOS, qui contient plusieurs racine :A: ,C: ,D:
,…
Sous Linux, il y a une seule racine (root) : le slash "/" .
Par exemple, Le CD-ROM est atteint par le répertoire /cdrom.
Chaque Utilisateur possède un répertoire, dit de connexion (home directory),ou
il peut agir en toute liberté et y créer sa propre arborescence, par exemple:
/home/mehdi/

10
Présentation de Linux :
Systèmes de fichiers
/

bin
dev var
home tmp root lib

Plusieurs répertoire sont rattaché à la racine.

pippo mehdi

Présentation de Linux :
Systèmes de fichiers

• / : répertoire racine, il contient les répertoires principaux.


• /bin : contient des exécutables essentiels au système, employés par tous les
utilisateurs ( par exemple, les commandes ls, rm, cp, chmod, mount,… ).
• /etc : contient les fichiers de configuration du système.
• /boot : contient les fichiers permettant à Linux de démarrer.
• /dev : contient les points d’entrée des périphériques
• /lib : contient les librairies du système et les modules du noyau
• /mnt : contient les points de montage des partitions temporaires (cd-rom,
disquette…)
• /opt : contient des pakages d’applications supplémentaires/ (outils spécifiques
installés par l’administrateur.

11
Présentation de Linux :
Systèmes de fichiers

• /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, /usr/etc …
• /sbin : commandes réservées à l’administrateur.
• /home : dossiers de travail des utilisateurs. Ex :/home/pippo)
• /var : données variables( dynamiques)

Présentation de Linux :
Notions de Shell
Le shell est un programme qui va faire le lien entre le noyau Linux et
l'utilisateur
= interpréteur de commandes interactif
Le shell est un interpréteur de commandes qui invite l’utilisateur à
saisir une commande et la fait ensuite exécuter

invite ("prompt")

le shell est prêt à recevoir des


commandes rentrées au clavier

12
Présentation de Linux :
Notions de Shell
P
pippo@localhost :~$
pippo : le premier élément est votre pseudonyme.
localhost : ça c'est le nom de l'ordinateur sur lequel vous êtes en train de travailler.
La ligne d'invite de commandes se lit donc ’pippo’ chez ‘localhost’

: : c'est un séparateur.
~ :c'est le dossier dans lequel vous vous trouvez actuellement., le symbole ~
signifie que vous êtes dans votre dossier personnel, ce qu'on appelle le "Home"
sous Linux. C'est l'équivalent du dossier "Mes documents" de Windows.
$ : ce dernier symbole est très important, il indique votre niveau d'autorisation sur
la machine. Il peut prendre 2 formes différentes :

$ : signifie que vous êtes en train d'utiliser un compte utilisateur "normal",


# : signifie que vous êtes en mode super-utilisateur,

Présentation de Linux :
Notions de Shell

Invite de commande suivie de


pippo@localhost :~$ ls la commande que j’ai tapée ls

Desktop Examples Images


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, Si vous n'avez aucune réponse, c'est que
vous êtes dans un dossier qui ne contient aucun fichier ou dossier.

13
Présentation de Linux :
Notions
P
de Shell

Syntaxe d’une commande:

nom_commande [options] [arguments]


- « nom_commande » est le nom de la commande à exécuter;
- « options » : une ou plusieurs options. Les options
permettent de modifier le comportement de la commande.
- « arguments » : les arguments à passer à la commande.

Présentation de Linux :
Notions de Shell

Historique des commandes :

Pour retrouver les commandes qu’on a déjà tapé, sans devoir les réécrire à
nouveau, on utilise les flèches haut ( ) ou ( ) de notre clavier.
Si on désire remonter à des commandes qui remontent à très longtemps,
inutile de se forcer à taper sur la flèche haut pour arriver à la commande
souhaiter.
Dans ce cas, on utilise la commande « history».

14
Présentation de Linux :
Notions
P
de Shell

Raccourcis utiles :
Ctrl+a : début de ligne
Ctrl+e : fin de ligne
Ctrl+l : efface l'écran
Ctrl+k : efface tout à droite du curseur
Ctrl+u : efface tout à gauche du curseur
Ctrl+t : inverser la position des deux caractères

Commandes de base
Commande ls
La commande ls (list) : affiche la liste des fichiers dans le répertoire courant, en
ordre alphanumérique, sauf ceux qui commencent par le caractère “.” ( sauf les
fichiers cachés)

ls [options] [noms]
noms du ficher qu’on veut lister. Si ce paramètre est absent, ls affichera les
fichiers du répertoire courant.
Exemple :
ls -l /home/pippo
Commande –options noms

// fin 2 éme séance

15
Commandes de base
Commande ls : les principales options

➢ ls -a (all) : tous) affiche tous les ➢ls -S (“size”: taille) affiche les
fichiers (y compris les fichiers .*) fichiers les gros en premier.

➢ ls -l (long) affichage en format long ➢ ls -r (reverse : inversé) affiche en


(type, date, taille, propriétaire, ordre inverse.
permissions)
➢ ls -ltr (les options peuvent être
➢ ls -t (temps) affiche les fichiers les combinées) format long, les fichiers
plus récents en premier. les plus récents à la fin.

➢ ls -d (directory) affiche du nom du ➢ ls -R afficher récursivement le


répertoire et non de son contenu. contenu des sous-répertoires.

31

Commandes de base
Commande cd
La commande cd (change directory) permet de changer le répertoire de travail .
(permet de naviguer dans les répertoires)

cd [répertoire]
Si répertoire n’est pas précisé, alors le nouveau répertoire sera le répertoire
de connexion ($ home)( home c’est votre dossier personnel).
Exemple :

Si on veut se positionner dans le répertoire /etc, on fera ceci:


pippo@localhost :~$ cd /etc
pippo@localhost :/etc$

16
Commandes de base
Commande cd
➢ cd : Permet de se placer dans le ➢cd /usr/bin : va dans le répertoire
répertoire personnel de l’utilisateur (home) bin en écrivant tout l’arboresence.

➢ cd .. : Ramène dans le répertoire ➢ cd - : une bonne astuce pour


parent.(remonter d’un répertoire dans revenir dans le répertoire d’où vous
l’arborescence) veniez précédemment.

➢ cd rep : va dans le répertoire rep à


partir du répertoire où vous êtes.

Commandes de base
Commande cd
Remarque:

La commande cd, comme toutes les commandes utilisant des répertoires, permet de
spécifier deux types de chemins:

• Les chemins 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 commencent toujours par la racine (/). Vous devez faire
ensuite la liste des dossiers dans lesquels vous voulez entrer.

17
Commandes de base
◼ Les chemins relatifs : Un chemin relatif est un chemin qui dépend
du dossier dans lequel vous vous trouvez.

Commandes de base

18
Commandes de base

Commandes de base
◼ Les chemins absolus :

Les chemins absolus fonctionnent quel que soit le dossier dans lequel on
se trouve.

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/mateo21 et que je


souhaite aller dans /usr/games. Avec un chemin absolu :

19
Commandes de base
◼ Les chemins absolus :

Commandes de base
◼ Les chemins absolus et chemins relatifs :
Si on voulait utiliser le chemin relatifs, il aurait fallut qu’on écrive:

20
Commandes de base
◼ Retour au répertoire home:

Si vous voulez retourner dans votre répertoire home personnel, plusieurs


solutions s'offrent à vous :

il suffit d'écrire le chemin absolu en entier.

Commandes de base
Commande pwd

La commande pwd (print working directory) : affiche le répertoire courant ("répertoire


de travail »)
pwd
La commande pwd n’accepte pas d’option.
Exemple :
pippo@localhost :~$ pwd
/usr/lib/news/bin
pippo@localhost :~$cd .. ; pwd
/usr/lib/news
La commande pwd) : peut être utilisée lorsqu’on désire obtenir un chemin absolu sur
le répertoire courant.

21
Commandes de base
Commande du
La commande du (disk usage « utilisation du disque ») : affiche les informations
sur la taille qu’occupe les dossiers sur votre disque d’une façon récursive

Exemple :
pippo@localhost :~$ cd /usr/news
pippo@localhost : /usr/news$ du

➢ du -h : affiche la taille en Ko, Mo, Go.

➢ du -s : affiche juste l’espace total occupé par le dossier, et donc n’affiche pas
l’espace des sous-dossiers. ( pour plus de lisibilité du –sh, combiaison avec -h)

Commandes de base
Commande mkdir
La commande mkdir (make directory) : permet de créer un répertoire s’il n’existe pas.
On peut aussi utiliser l’option -p pour créer un répertoire même si son répertoire parent
n’existe pas.
mkdir [-p] nouveau_répertoire

Exemple :
Si on veut créer le répertoire /tmp/ms/ISI mais le répertoire tmp/ms/ n’existe pas, on
devrait normalement faire ceci:
pippo@localhost :~$ mkdir /tmp/ms/
pippo@localhost :~$ mkdir /tmp/ms/ISI
Si on essaie de le créer, on reçoit le message suivant:
mkdir: cannot create directory ‘/tmp/ms/ISI’: No such file or directory.
On devra faire:~$ mkdir -p /tmp/ms/ISI

22
Commandes de base
Commande rmdir

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. (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.

Nota : rm spprime les fichiers


voir aussi la commande rm –r pour supprimer des répertoires contenants des
fichiers.
// fin 3éme séance

Commandes de base
Commande cp
La commande cp (copy) permet de copier le contenu d’un fichier dans un autre.
cp [-i] fichier_source repértoire_destination/[nouveau_nom]
cp [-i] [-r] rep_source1 [rep_source2...] répertoire_destination
• Si destination est un fichier
cp fichier1 fichier2 : effectue une copie de fichier1 en un nouveau fichier
appelé fichier2.
• Si destination est un répertoire.
cp fichier1 repertoire : Effectue une copie de fichier1 dans le répertoire
appelé repertoire.
cp fichier1 fichier2 fichier3… repertoire : Copie tous les fichiers vers le
répertoire de destination appelé repertoire.
• cp -i : (i : interactif) demande de confirmation à l’utilisateur dans le cas où le
fichier de destination existe déjà.
• cp -r rep_orig rep_dest : (r : récursive) copie du répertoire tout entier (copier de
manière récursive un répertoire et tout ce qu’il contient).

23
Commandes de base
Commande mv

La commande mv (move) déplace ou renomme les fichiers et les répertoires .

mv [-i] source1 [source2...] destination


mv déplace les fichiers fichiers1,fichiers2, 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 repertoire .
mv fichier1 repertoire.
• mv -i : (i : interactif) demande de confirmation avant l’écrasement du fichier.

Commandes de base
Commande rm

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.
la commande rm –r pour supprimer des répertoires contenants des fichiers.

Exemple :
• rm fichier1 : destruction du fichier fichier1 .
• rm fichier1 fichier2 : destruction des fichiers fichier1 et fichier2.
• rm fic* : effacement de tous les fichiers qui commencent par fic .
• Option [-i] : demande de confirmation avant supression

24
Commandes de base

Commande touch

touch : créer un fichier texte vide.

Elle est aussi utilisée pour changer l’horodatage d’un fichier ou bien un répertoire.

Commandes de base
Commande cat

La commande cat (catenate « concaténer ») : affiche sur la sortie standard, le


contenu des fichiers, spécifiés en argument de la commande, l’un après l’autre.

cat fichier1 [fichier2 ...]

Exemple :

~$ cat Fruits
banane
Cerise
Orange

25
Commandes de base

Commandes more / less

La commande more : affiche des fichiers page par page . (espace pour
descendre d'une page, entrée pour descendre d'une ligne, q pour quitter)

more [fichier...]

La commande less : sa fonction est similaire à la commande more « affiche des


fichiers page par page », mais dispose d'un peu plus d'options, il est aussi possible
de se déplacer vers le haut ou vers le bas avec les flèches de direction)

less [fichier...]

Commandes de base
Commandes head / tail

La commande head : affiche les n premières lignes d’un fichier,


alors que tail affiche les dernières lignes d’un fichier.

Si n n’est pas précisé, il prend par défaut la valeur 10.

head [-n] [fichier...]

tail [-n] [fichier...]

26
Commandes de base

Caractères spéciaux
◼ « ? » et « * » sont des caractères des substitutions.
◼ « ? » permet de remplacer une lettre unique.
◼ « * » permet de remplacer plusieurs lettres.
◼ ex : « uni* » représente tous les mots commençant par uni

◼ « [chaine] » représente n'importe quel caractère compris entre [ ]


◼ [0-9] désigne un chiffre quelconque.
◼ [!09] désigne n'importe quel caractère qui n'est pas un chiffre.
◼ [!e] désigne n'importe quel caractère qui n'est pas un « e ».
◼ [ac0-9A-Z] désigne « a » ou « c » ou un chiffre ou une lettre majuscule
ex :
rm *[ab] effacera tout fichier du répertoire courant finissant par « a » ou « b»

Commandes de base
◼ La commande wc

• Affiche le nombre de lignes, de mots et d’octets d’un


fichier
• wc fichier
• l : affiche uniquement le nombre de lignes
• w : affiche uniquement le nombre de mots
• c : affiche uniquement le nombre d’octets (bytes)
• ex : wc lettre.txt

54

27
Commandes de base
◼ commande cut

• Cette commande permet de découper un fichier en


plusieurs champs.
• Syntaxe: cut [-d x] -f sélection_de_champ [fichier ..]

• Exemples d'options:
-x désigne le caractère de séparation de champs
-f indique la liste des champs (par numéro) à afficher
Exemple:
cut -d":" -f1,5 /etc/passwd
55

Commandes de base
◼ La commande sort
sort permet de trier les lignes des fichiers passés en argument de la
commande sort.
• Les options utiles:
-n : tri numérique
-r : inverse l’ordre de tri, donc tri décroissant
-tc : le caractère « c » est défini comme caractère de séparation
entre les champs d’une ligne
-k définit une clé de tri.

Ex: sort -n -t: -k 3 /etc/passwd


◼ // fin 4éme séance 56

28
Commandes de base
◼ La commande split
Coupe un fichier en morceau : split
• La commande split permet de couper un fichier en
morceau (en plusieurs fichiers), en tapant :
split -10 mon_fichier fichier
• Vous allez créer les fichiers fichieraa, fichierab,
fichierac, ... qui contiendront tous 10 lignes.
• Le premier fichieraa contient les 10 premières lignes,
ainsi de suite

57

Commandes de base
◼ La commande cmp

Comparer deux fichiers : cmp


La commande cmp indique si deux fichiers sont identiques.
Ex:
cmp fichier1 fichier2
Si les deux sont identiques, la commande ne génère
aucune sortie, s'ils sont différents la commande indique
la position de la première différence (ligne et caractère)

58

29
Commandes de base
◼ La commande uniq
uniq affiche les lignes uniques d'un fichier trié,
ne conservant qu'un seul exemplaire de celles
dupliquées.
-u, --unique
N'afficher que les lignes uniques.
-d, --repeated
N'afficher que les lignes dupliquées.
-c, --count
Afficher également le nombre d'occurrences de chaque
ligne. 59

Commandes de base

60

30
Commandes de base

◼ Un tube (pipe) |
Un tube permet d’établir une liaison directe entre la sortie d'une
commande et l'entrée d'une autre commande.

Commande tee

◼ Avec l’utilisation d’un tube, le résultat de la première


commande n’est pas accessible. Pour avoir une copie, on
peut utiliser la commande tee. Le résultat de la première
commande est sauvegardé dans un fichier dont le nom
est passé en argument.
◼ Exemple :
◼ ls | tee espion | wc –l

◼ Le résultat de la commande ls est enregistré dans le

fichier espion

31
Commandes de base
◼ tac

La commande tac permet d'obtenir le résultat inverse


de la commande cat.

Exemple :
$ cat fichier
ligne 1
ligne 2

$ tac fichier
ligne 2
ligne 1 63

Commandes de base
◼ nl
La commande nl affiche les fichiers spécifié à la ligne de commande, et
ajoute un numéro devant chaque ligne.
Exemple :
$cat liste.txt
apples
oranges
lemons

$nl liste.txt
1 apples
2 oranges
64
3 lemons

32
Commandes de base
◼ date
date affiche ou initialise la date et l'heure du système
Exemple :
[farid@Serveur1 ~]$ date
lun. oct. 16 10:29:32 WET 2017

[farid@Serveur1 ~]$ date +%d/%m/%y


16/10/17

[farid@Serveur1 ~]$ date +%H:%M:%S


10:35:55 65

Commandes de base
◼ cal
cal (calendar) affiche le calendrier.
Exemple :
[farid@Serveur1 ~]$ cal
octobre 2017
lu ma me je ve sa di
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
66

33
Commandes de base
◼ bc
bc est une calculatrice basique pour les nombres entiers.

Exemple :
[farid@Serveur1 ~]$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software
Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
20 * 30
600 67

Commandes de base
Commandes find

La commande find permet de chercher dans un répertoire et


dans toute l'arborescence depuis ce répertoire (on explore
récursivement le répertoire et ces sous répertoires), les fichiers
vérifiant certains critères.

34
Commandes de base
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 modification, 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.

Commandes de base
• Par nom

• Par taille
les fichiers qui font plus de 10 Mo

• Par Type
-type d : pour rechercher uniquement des
répertoires (directories).
• Supprimer les fichiers trouvés

35
Commandes de base
◼ Options des sélection des fichiers et répertoires
◼ name : recherche par nom de fichier

◼ type : recherche par type de fichier

◼ user : recherche par propriétaire

◼ group : recherche par l’appartenance à un groupe

◼ size : recherche par taille de fichier

◼ mtime : recherche par date de dernière modification

◼ perm : recherche par autorisations d’accès

◼ links : recherche par nombre de références (links) aux fichiers

71

Commandes de base
◼ Option de commande

◼ Les commandes se trouvant aprés -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.

72

36
Commandes de base
◼ Traitement sans confirmation avec -exec
◼ La spécification d’une commande derrière -exec est
soumise à certaines règles :
◼ L’option -exec doit être la dernière de la commande
find
◼ La commande placée derrière -exec doit être
terminée par le paramètre ;. Comme c’est un
caractère spécial, il doit être masqué par un \

find <repertoire> <critères> -exec <commande> {} \;

73

Commandes de base
Recherche de fichiers et de répertoires (suite)

◼ Exemple:
◼ find . –user karim -exec ls -l {} \;
( affiche le format long de la commande ls
pour les fichiers trouvés)

◼find . -user karim -exec rm {} \;


(supprime les trouvés)

74

37
Commandes de base
◼ Traitement après confirmation avec -ok
◼ Les mêmes explications s’appliquent également à
l’option -ok, mais celle-ci, demande une
confirmation d’exécution de la commande pour
chaque fichier trouvé. Ce n’est qu’en cas de
réponse affirmative (avec y), que la commande
placée derrière -ok sera exécutée.
◼ Exemple :
◼ Find . -name "Fichier1" -ok rm {} \;

75

Commandes de base
Critères de recherche de noms de fichiers
◼ Modèles de noms de fichier
◼ * : remplace une chaîne vide ou de longueur variable
◼ ? : remplace un caractère unique quelconque
◼ [] : représente une série ou une plage de caractère
◼ [!…] : inverse la recherche

◼ Exemples
◼ a* : les fichiers dont le nom commence par a
◼ a?? : fichiers en trois lettres, commençant par a
◼ [aA]* : fichiers dont le nom commence par un a minuscule ou
majuscule.
◼ [a-m]* : fichiers dont le nom commence par une lettre de la plage
a-m.

38
Commandes de base
Commande grep

◼ La commande grep cherche, dans un fichier passé en


argument, les lignes qui vérifient le critère de recherche (les
lignes qui contiennent l’expression régulière précisée sur la
ligne de commande), et affiche les lignes trouvées sur la sortie
standard (écran).
◼ Syntaxe : grep [option] expression-régulière [fichier1 …]

◼ Exemple :

Recherche la chaine etudiant dans le fichier /etc/passwd .


$ grep "etudiant" /etc/passwd

grep : filtrer des données


◼ Les principales options de grep :
◼ L’option -c : affiche le nombre de lignes trouvées,
◼ L’option -i : ignore les majuscules/minuscules,
◼ L’option -l : liste les fichiers, donnés en argument (en
entrée), dans lesquels au moins une ligne a été trouvée,
◼ L’option -n : affiche les lignes trouvées ainsi que leurs
numéros.
◼ L’option -v : affiche les lignes qui ne contiennent pas
l’expression de recherche.

39
Commandes de base

◼ Redirection des entrées-sorties standards


Lors de l’exécution d’une commande, un processus est créé. Par défaut le processus:
- lit ses données d'entrée à partir de l’entrée standard (par défaut le clavier).
- écrit sa sortie (les résultats et les erreurs) dans la sortie standard (par défaut
l’écran).
• Ces canaux de communications sont désignés par les fichiers :
- « stdin » : pour l’entrée standard, identifiée par l’entier 0.
- « stdout »: pour la sortie standard, identifiée par l’entier 1.
- « stderr »: pour la sortie d’erreur standard, identifiée par l’entier 2.
• Il est possible de rediriger les entrées/soties standards des commandes afin que la
lecture se fasse à partir d’un fichier et que l’écriture se fasse dans fichier.

79

Commandes de base
◼ Redirection de l’entrée standard
On peut rediriger l’entrée standard d’une commande afin que la
lecture se fasse à partir d’un fichier grâce au symbole« < ».

Syntaxe :
commande < fichier_entree
La commande effectue ses entrées à partir du fichier «fichier_entree »

Exemple :
$ cat < donnees_entree
La commande lit le fichier «donnees_entree » et l’affiche sur la sortie standard,
au lieu de lire les données au clavier.

80

40
Commandes de base
◼ Redirection de la sortie standard
On peut rediriger la sortie standard d’une commande afin que l’écriture se fasse
dans un fichier grâce au symbole « > » ou « >>».

Syntaxe :
commande > fichier_sortie
commande >> fichier_sortie
• Si le fichier « fichier_sortie » n’existe pas, alors il sera créé.
• Si le fichier « fichier_sortie » existe, alors:
- Si le symbole « > » est utilisé alors le fichier « fichier_sortie »
sera écrasé et remplacé par la nouvelle sortie standard de la commande.
- Si le symbole « >> » est utilisé, alors la nouvelle sortie standard
sera rajoutée à la fin du fichier « fichier_sortie ».
81

Commandes de base
Exemple:
- On trie le fichier « fiche1 » et on écrit le résultat dans le fichier
« fiche_trie » au lieu d’afficher le résultat sur l’écran.
$ sort fiche1 > fiche_trie
- On trie le fichier « fiche2 » et on écrit le résultat à la fin du fichier
« fiche_trie ».
$ sort fiche2 >> fiche_trie

Remarque:
On peut rediriger l’entrée et la sortie en même temps.
Exemple:
$ sort < fiche > fichier_trie

82

41
Commandes de base
◼ Redirection de la sortie d’erreurs standard (stderr)
Lors de l’exécution d’une commande, des messages d’erreurs
peuvent être affichés à l’écran si un problème survient en
cours d’exécution. On peut rediriger la sortie des messages
d’erreurs dans un fichier. Pour éviter d’avoir un mélange entre
la sortie standard et la sortie standard des erreurs, on utilise
la chaines « 2> » ou « 2>> ».

83

Commandes de base
Syntaxe :
commande 2> fichier_sortie
commande 2>> fichier_sortie
• Comme pour la redirection de la sortie standard,
- si le fichier sortie n’existe pas alors il sera créé.
- si le fichier sortie existe alors:
- si on utilise la chaine « 2> » alors le fichier sera écrasé et
remplacé par la nouvelle sortie standard.
- si on utilise la chaine « 2>> » , alors la sortie standard se
rajoute à la fin du fichier sortie.

84

42
Commandes de base
Exemple:

- On exécute la commande « find » . Les résultats de la recherche sont


redirigés ver les le fichier «res_find» alors que les messages d’erreurs (par
exemple on ne peut pas explorer un répertoire protégé en lecture) seront
redirigés vers le fichier « erreur_find ».
$ find / -name " test " > res_find 2> erreur_find
$ find / -name " test " >> res_find 2>> erreur_find

Remarque:

Pas d’espace entre le "2" et le ">"

85

Les liens

86

43
Notion d’inode
• L’inode (Index NODE ou noeud d'index en
Français), est une structure de données qui
contient les informations fondamentales aux
fichiers, par exemple : le propriétaire du fichier, les
droits d'accès, …. Elle est créée au même moment
qu'un fichier.

• Le système identifie un fichier non pas par son


nom, mais par son numéro d’inode.

• Pour connaître le numéro d’inode d'un fichier,


vous devez taper la commande suivante :
ls –i nom_du fichier

Notion de lien
◼ Puisqu’un fichier est identifié par son numéro d’inode et non pas
par son nom de fichier, il est possible de donner plusieurs noms
à un même fichier grâce à la notion de lien : ceci permet
d’accéder au même fichier à différents endroits de
l’arborescence.
◼ Avantage :
• Possibilité d’accéder au même fichier depuis des endroits et des
noms différents → une seule copie sur le disque et plusieurs
façon d’y accéder.
• Si l’un des fichier est modifié, la même modification est prise en
compte par l’autre fichier.
• Simplifier l’accès à des fichiers dont le noms (chemin) est
difficile à retenir.(lien symbolique)
88

44
Notion de lien
◼ Liens physiques
ln <nom_fic> <nouveau_nom_fic>
◼ permet de donner plusieurs noms à un fichier

◼ pas pour les répertoires

◼ On ne peut faire des liens durs que dans le même système de


fichier
◼ un fichier est détruit quand TOUS ses liens physiques sont
supprimés
◼ Liens symboliques
ln -s <nom_fic> <nouveau_nom_fic>
◼ crée un raccourci

◼ traverse les systèmes de fichier (2 partitions différentes)

◼ fonctionne aussi pour les répertoires

89

Les scripts shells

45
Script Shell : Introduction

Un script shell est une liste d’instructions


contenues dans un fichier.
Ex:
#!/bin/bash
# Un petit script mon_script
echo ''Bonjour tout le monde ''

91

Script Shell : Introduction

◼ Pour pouvoir exécuter ces instructions, deux conditions


doivent être remplies :
◼ la première ligne doit contenir #!/bin/bash (pour un shell script utilisant
bash) ;
◼ le fichier doit être exécutable (e.g. en utilisant la commande chmod +x)
Ex.
chmod +x mon_script
./mon_script

92

46
Script Shell :
Passage de paramètres à un script

◼ Les variables passées au script sur la ligne de


commande sont accessibles dans le script par les
variables réservées $1 pour le premier argument, $2
pour le deuxième et ainsi de suite.
◼ D’autres variables réservées sont accessibles à
l’intérieur d’un script :
◼ $0 : nom du script ;
◼ $* : liste des paramètres ;
◼ $# : nombre de paramètres ;
◼ $$ : numéro du processus en cours d’exécution ;
◼ $? : valeur de retour de la dernière commande.
93

Script Shell :
Passage de paramètres à un script

◼ Exemple:

#!/bin/bash
# un autre script
echo "$0 : c'est le mon du script"
echo "$$ : c'est le PID du script"
echo "$* : c'est la liste des arguments passé au script"
echo "$# : c'est le nombre d'argument passé à la commande"
echo "$1 : c'est le premier argument"
echo "$? : c'est le retour de l'echo"

94

47
Script shell :
Les paramètres d’entrée d’un script

La lecture d’une valeur peut se faire par le passage de


paramètres sur la ligne de commande ou en lisant une
entrée au clavier depuis le script avec la commande
read. Pour lire le nom d’une personne dans la variable «
nom » et afficher son contenu :
#!/bin/bash
echo ''Entrez votre nom ''
read nom
echo '' Vous vous appelez $nom ''

95

Script shell :
Les expressions logiques

◼ Les expressions logiques sont évaluées à l’aide de la


fonction test, qui peut également s’écrire [ ].
◼ Le résultat de l’évaluation est stocké dans la variable
$? qui contient :
◼ 0 si le résultat est vrai ;
◼ une valeur différente de 0 si le résultat est faux.
◼ Pour vérifier si le fichier file1 existe :
test -e file1 ou [ -e file1 ]
◼ Pour vérifier si le fichier mon_script est exécutable :
test -x mon_script ou [ -x mon_script ]

96

48
Script shell :
Les expressions logiques

◼ Les expressions logiques peuvent être combinées par


les opérateurs logiques && (ET/AND) et || (OU/OR).

◼ Pour vérifier si les fichiers file1 et file2 existent :


ou
test -e file1 && test -e file2
ou
[[ -e file1 && -e file2 ]]

97

Script shell :
Les expressions logiques

◼ Quelques options de la commande test :


◼ -f : vérifie si le fichier est un fichier standard ;
◼ -d : vérifie si le fichier est un répertoire ;
◼ -s : vérifie si le fichier n’est pas vide ;
◼ -e : vérifie si le fichier existe ;
◼ -r : vérifie si le fichier est lisible ;
◼ -w : vérifie si le fichier est inscriptible ;
◼ -x : vérifie si le fichier est exécutable.

98

49
Script shell :
Les expressions logiques

◼ Il est possible de comparer des nombres en


utilisant la commande test, vue
précédemment, avec les options suivantes :
◼ -lt pour « inférieur à » (<) ;
◼ -gt pour « supérieur à » (>) ;
◼ -le pour « inférieur ou égal à » (<=) ;
◼ -ge pour « supérieur ou égal à » (>=) ;
◼ -eq pour « égal à » (=) ;
◼ -ne pour « différent de » (!=).

99

Script shell :
Structures conditionnelles

◼ Condition simple : if
Cette boucle sert pour les tests et branchements.
Syntaxe :
if condition
then
bloc-instruction1
else
bloc-instruction2
fi
NB
La partie « else... » est optionnelle
100

50
Script Shell :
Structures conditionnelles

◼ if
Pour tester l’existence du fichier «fichier1 » :
#!/bin/bash
if test -e fichier1
then
echo " fichier1 existe "
else
echo " fichier1 n’existe pas"
fi 101

Script Shell :
Structures conditionnelles

◼ Condition imbriquée
if condition1
then
bloc-instruction1
elif condition2
then
bloc-instruction2
else
# si toutes les conditions précédentes sont fausses
bloc-instruction3
fi
102

51
Script Shell :
Structures conditionnelles

◼ Condition imbriquée
#!/bin/bash
if [ $1 = "Bruno" ]
then
echo "Salut Bruno !"
elif [ $1 = "Michel" ]
then
echo "Bien le bonjour Michel"
elif [ $1 = "Jean" ]
then
echo "Hé Jean, ça va ?"
else
echo "Je te connais pas "
fi 103

Script Shell :
Structures conditionnelles

◼ case
Ce test permet de spécifier les commandes à exécuter pour
chacune des valeurs prises par la variable passée en argument.
Syntaxe :
case <variable> in
valeur1) commande1 ;;
valeur2) commande2 ;;
valeur3) commande3 ;;
...
*) comande ;; le « else » du case. Si aucun des tests précédents n'a été vérifié
esac

104

52
Script Shell :
Structures conditionnelles
Ex1:

#!/bin/bash
case $1 in
"Chien" | "Chat" | "Souris") echo "C'est un animal" ;;
"Moineau" | "Pigeon") echo "C'est un oiseau" ;;
*) echo "Je ne sais pas ce que c'est" ;;
esac

105

Script shell :
Structures itératives

◼ Boucle for
Cette boucle sert pour répéter les traitements un nombre de fois
connu.
Syntaxe :
for <variable> in <liste>
do
commande1
commande2
commande3
...
done 106

53
Script shell :
Les boucles

◼ Pour afficher les jours de la semaine :

#!/bin/bash
for jour in lundi mardi mercredi jeudi vendredi samedi dimanche
do
echo $jour
done

107

Script shell :
Les boucles
La commande seq affiche une séquence de nombres allant d’un
nombre jusqu'au maximum indiqué, par exemple :

#!/bin/bash
for i in $(seq 1 15)
do
echo $i
done

108

54
Script shell :
Les boucles

◼ Boucles while
Cette boucle sert pour répéter les traitements un nombre de fois
inconnu a priori. Le test de continuité se fait au début de la boucle.
La boucle continue tant que la condition est vraie.
Syntaxe :
while <condition>
do
<commande1>
<commande2>
...
done

109

Script shell :
Les boucles
◼ Boucles while
Pour faire le test de lecture d’une valeur jusqu’à ce que l’utilisateur
entre la valeur « 1 » :

#!/bin/bash
i=0
while [ $i -ne "1" ]
do
read i
done

110

55
Script Shell : Calculs

◼ La commande expr permet d’effectuer les quatre opérations


arithmétiques de base, avec les opérateurs suivants :
◼ + pour l’addition

◼ - pour la soustraction
◼ \* pour la multiplication
◼ / pour la division.

111

Script shell :
Calculs
◼ Par exemple, la commande expr 1 + 2 renvoie « 3 ».
◼ Pour afficher une table de multiplication :
#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9
do
expr $i \* $1
done
◼ Pour compter jusqu’à 20 :
#!/bin/bash
i=0
while [ $i -ne 20 ]
do
i=`expr $i + 1`
echo $i
112
done

56
Script shell :
Calculs
◼ On peut également écrire expr <expression>
sous la forme $((<expression>))
#!/bin/bash
i=0
while [ $i -ne 20 ]
do
#i=`expr $i + 1`
i=$(($i + 1))
echo $i
done
113

Script Shell :
Exercices
◼ Exercice 1
Ecrire un script bash qui permet de lire
un entier et de tester:
•s’il est négatif
•s’il est positif
•s’il est nul.

◼ Solution
#!/bin/bash
echo "Entrez un nombre entier : " elif [ $nombre -gt 0 ]
read nombre then
if [ $nombre -lt 0 ] echo "$nombre est positif"
then else
echo "$nombre est negatif" echo "$nombre est egal à zero "
fi
114

57
Script Shell :
Exercices
◼ Exercice 2:
Trouver le maximum de trois
nombres a, b et c.
◼ Solution :
#! /bin/bash elif [ $b -gt $c ]
a=$1;b=$2;c=$3 then echo "3maximum=$b"
if [ $a -gt $b ] else
then echo "4maximum=$c"
if [ $a -gt $c ] fi
then
echo "1maximum=$a"
else
echo "2maximum=$c"
fi
115

Script Shell :
Exercices supplémentaires
◼ Exercice 1
Ecrire un algorithme qui demande deux
nombres à l’utilisateur et l’informe ensuite
si le produit est négatif ou positif (on inclut
le traitement du cas où le produit peut être
nul). Attention toutefois, on ne doit pas
calculer le produit !
◼ Solution
then
#/bin/bash
echo "Le produit est nul "
echo "Donner un nombre a "
elif [[ $a –gt 0 && $b -gt 0 ]] || [[ $a -lt 0
read a
&& $b -lt 0 ]]
echo "donner un nombre b "
then
read b
echo " Le produit est positif "
If [[ $a -eq 0 || $b -eq 0 ]]
else
echo " Le produit est négatif "
fi
116

58
Script Shell :
Exercices supplémentaires
Exercice 2
Créer un script nommé "table" permettant
d'afficher des tables de multiplication.
"table 5 10" aura pour résultat l'affichage:
0 x 5 = 0
1 x 5 = 5
2 x 5 = 10
3 x 5 = 15
4 x 5 = 20
5 x 5 = 25
6 x 5 = 30
7 x 5 = 35
8 x 5 = 40
9 x 5 = 45
10 x 5 = 50

117

Script Shell :
Exercices supplémentaires
Solution

#! /bin/bash
for V in $(seq 0 $2)
do
echo $V" x "$1" = "$(($V * $1))
done
118

59

Vous aimerez peut-être aussi