Vous êtes sur la page 1sur 144

Systèmes d’exploitation 1

M. Ben Salah

https://www.facebook.com/DeptInfoFsaAgadir 1
Chap. 1 : INTRODUCTION AUX SYSTEMES D’EXPLOITATION

- Qui ce qu’un système d’exploitation (SE) ?


- Système d’exploitation Unix

2
Qu’est ce qu’un système d’exploitation ?
-Système d’exploitation (SE) ou Operating System (OS) :
Exploiter les ressources matérielles
- Exemple d’OS : Windows, Unix, Linux, Android, iOS, TinyOS …
Contexte :
Matériel *) Un ordinateur est constitué de
Périphériques
ressources matérielles : mémoire,
CPU E/S
Processeur (CPU), mémoire …
- Pour faire fonctionner des programmes
mémoire informatique (applications ou logiciels) un
ordinateur a besoin d'effectuer des
Permet de gérer les liens entre le opérations permettant d'assurer les
monde applicatif (les logiciels) et le échanges entre le processeur, la mémoire,
monde matériel
et les ressources physiques
OS (périphériques).
- On a donc Besoin d’une couche
intermédiaire entre les application et les
ressources matérielles pour assurer la
Application liaison entre les ressources matérielles,
Application 1 ….
N l'utilisateur et les applications : c’est le SE
3
Qu’est ce qu’un système d’exploitation ?

Fonctions primordiales
Les tâches du SE :
- Gestion des processus
SE
- Gestion de la mémoire
- Gestion des fichiers
Matériel
- Gestion des E/S
- Interfaces graphiques
Services
….
Applications utilisateurs

application SE matériel

interaction Appel Instructions


système matérielles
Qu’est ce qu’un système d’exploitation ?

Définition :
Un système d’exploitation (SE) ou operating system (OS) est un
ensemble de programmes et de sous-programmes qui ont pour rôle de
gérer et piloter les resources matérielles de l’appareil informatique et
fournir des services aux applications et utilisateurs.
C'est donc l'intermédiaire entre les programmes d'application et les
ressources matérielles d’un ordinateur dans la mesure où il est chargé
d'assurer la liaison entre les ressources matérielles, l'utilisateur et les
applications

5
Qu’est ce qu’un système d’exploitation ?

D’une manière générale le système d’exploitation permet d’assurer le bon


fonctionnement d’un ordinateur et de faciliter son utilisation par
l’utilisateur en lui fournissant un environnement et interface, avec le
matériel, simple et facile à utiliser :

- Cache la complexité de l’interaction avec les ressources matérielle


d’un ordinateur et assure la bonne gestion de ces dernier.

- permet de libérer l’utilisateur de la complexité de la programmation


du matériel .
Objectifs des systèmes d’exploitation

Les objectifs des systèmes d’exploitation :


•Ergonomie : Donner une vision simplifiée et uniforme du matériel.
•Efficacité : Accès rapide à l’information
•Evolutivité : adaptation du système d’exploitation aux
nouveaux périphériques.

7
Système UNIX

8
Historique d’UNIX
● L’histoire d’UNIX commence aux laboratoires Bell (Filiale d’AT&T).
● Développé a partir de 1969 par Ken Thompson et Dennis Ritchie pour leurs besoins
propres en s’inspirant du système MULTICS. Il a été écrit “Unics” en premier lieu
(UNiplexed Information and Computing System) avant de devenir UNIX
Objectif : un système interactif qui met l’accent sur les utilitaires de développement de
logiciels, le partage de fichiers et les outils de documentation

Ordinateur PDP-7
● 1973:
- besoin de rendre UNIX portable sur d’autres Ordinateurs,
- dans ce but, Denis Ritchie réécrit UNIX en langage C qui a été
crée pour l’occasion par Dennis Ritchie.
9
Ceci explique les liens profonds entre le langage C et UNIX.
Historique d’UNIX

● vers 1975 AT &T a distribué aux universités le système Unix (v6)


ce qui a permit l’enrichissement en extensions et en utilitaires.
Cette date correspond au début de la popularité et de la diversité
d’UNIX.
La principale université qui a travaillé sur Unix est l’université de
Berkeley == > production de ses propres versions appelées BSD
(Berkeley Software Distribution)
● En 1979, sortie de la version des Bells Labs appelée v7. Cette version
est la première à être diffusée dans le monde industriel. Cette version est
à l’origine du développement du marché Unix.

10
Historique d’UNIX

● début des années 80 : AT&T autorise le clonage d’UNIX par d’autres


constructeurs et depuis apparaissent des versions constructeur.

● En 1983, AT&T sort la version System V, qui est issue de la v7 et qui


sera enrichie au fur et à mesure par de nouvelles versions (releases).
Berkeley, propose sa version 4.2 BSD qui va servir de base pour de
nombreux constructeurs (Sun Microsystems, Digital...) et lui permettre
d’entrer dans le monde industriel
== > Depuis la fin des années 70 début 80, il existe deux grandes familles
d’UNIX :
- La version UNIX BSD
- La version UNIX System V commercialisé par AT&T.

11
Historique d’UNIX

12
Historique d’UNIX

La fin des années 80 est marquée par une croissance sans précédent
du nombre de systèmes Unix.
On trouve alors trois grandes familles: les versions basées sur System
V, celles issues de BSD et les versions Xenix sur micro.

 Ces différentes versions possèdent des incompatibilités.

 Pour y remédier, une norme a été proposée par l’IEEE (Institue of


Electrical and Electronic Engineers), la norme POSIX.

13
Historique d’UNIX

Distributions Linux :
Debiann, Ubuntu, Fedora , Puppy Linux, Emmabuntüs, …

… 14
Historique d’UNIX

 Linus Torvalds, étudiant à l'université d'Helsinki, a développé son


propre noyau OS (LINUX).
 La première version remonte à 1991. Puis de nombreux
développeurs ont participé à l'élaboration des premières
distributions avec comme support de communication : internet.

 Linux est distribué sous la licence GPL (General Public Licence)


=> tout acquéreur peut librement utiliser et même commercialiser
le produit. Cependant, toutes les modifications doivent à leur tour
être librement et gratuitement disponibles pour la communauté.

 Distributions GNU/LINUX
GNU : projet lancé par Richard Stallman en 1983. But initial était de développer un système
d'exploitation libre et non commercial 15
Historique d’UNIX

La licence GPL de GNU :


● Code Source de LINUX est accessible gratuitement.
● Qui protège LINUX ?
la fondation FSF (Free Software Fondation) a développé
un projet GNU pour permettre la distribution de programmes
exempts de droits.
● Comment protéger LINUX ?.
 les utilisateur GNU sont soumis à une licence d'utilisation :
GPL qui spécifie les dispositions légales vis-à-vis de
l'utilisation, la distribution et les modifications.
ex : toute modification doit être rendu public

16
Architecture et Structure générale d’UNIX

Une architecture en couche:


- Au centre on trouve le noyau:
chargé en mémoire au
démarrage. Il interagit
avec le matériel. Il permet la
gestion de la mémoire, le partage
du processeur entre les Matériel

différentes taches à exécuter et la


protection entre ces processus. Noyou (kernel)
- Les bibliothèques : bibliothèques Shell
standard d’appels système Applications
- Le shell : l’interpréteur de
commande; un langage (voir chap.
Programmation shell). 17
Caractéristiques d'UNIX

● Portabilité (écrit en C)
● Multi-utilisteurs : Plusieurs utilisateurs peuvent se connecter et
travailler en même temps. Chaque utilisateur a son environnement
personnel.
● Multi-tâches : Un même utilisateur peut lancer plusieurs travaux
simultanément.
Possibilité aussi de lancer des processus (tâches) en arrière plan et en
mode différé (batch).
● Un système de fichiers hiérarchisé : Organisation arborescente

18
Caractéristiques d'UNIX

● Un mécanisme de protection :
- identification des utilisateurs par mot de passe
- protection des fichiers
- Un super-utilisateur
● Plusieurs centaines d’outils

● Le choix d’un langage de commandes : Les shells

19
Le shell

● le shell est une couche qui fournit l'interface utilisateur d'un système
d'exploitation. C’est donc l’interface entre le système d’exploitation (le
noyau ) et l'utilisateur. La principale fonction est de permettre à
l’utilisateur d’interagir avec le SE via des commandes.
Une commande est transmise à l’OS soit :
- en utilisant une interface graphique pour l'utilisateur
(GUI=Graphical User Interface).
- via la ligne de commande Utilisateur

Shell

Noyau

Matériel 20
Le shell

● shell est aussi appelé interpréteur de commandes.


- vérifie, interprète les commandes, exécute et renvoie les réponses
- Il affiche un prompt (en mode ligne de commande) dans un terminal
ou dans une console virtuelle, attend la frappe d’une ligne, analyse
cette ligne puis exécute la ou les commande(s).
- Pour exécuter une commande externe il crée un nouveau processus.
Il attend la fin du processus crée puis affiche un nouveau prompt
Le shell

Console (mode ligne de commande ) :

Après le login, dans une consol vous voyez :


nomSession@nomMachine:$
Quand on ouvre une console c’est un processus qui se lance
Le shell

● dispose de variables et de structures de contrôle qui en font un


langage de commande (partie programmation shell) :
programmation shell
Le shell

• Il existe plusieurs shells sous Unix :


sh : Le bourne shell (/bin/sh ). C’est l’ ancêtre de tous les
shells. Il est disponible sur toute plateforme UNIX.
bash : Le Bourne again shell. C’es la version améliorée de
bourne shell. Il est dans /bin/bash
Ksh : Le Korn shell (/bin/ksh ). Il correspond au Bourne Shell
étendu par l’AT&T.
csh : développé par BSD

• Les shells disponibles sont dans le fichier fichier /etc/shells

• le shell utilisé est dans la variable SHELL. On peut le visualiser


avec la commande : echo $SHELL
• Pour changer la shell utilisé on change la valeur de la variabale
$SHELL :
exemple : $SHELL=bash
Connexion et session

● Connexion :
Pour pouvoir travailler sous Unix il faut se connecter et ouvrir
une session, il faut s’identifier à l'aide d'un nom d'utilisateur et
d'un mot de passe. :
Login : <tapez ici votre nom d’utilisateur>
Password : <tapez ici votre mot de passe>

● A la connexion, l'utilisateur est automatiquement positionné


dans son répertoire de connexion (home directory) .
Ex : /home/jean

25
Connexion et session

● On distingue les administrateurs des utilisateurs normaux. :


- root : L'administrateur est appelé root ou utilisateur
privilégié et dispose de tous les pouvoirs sur la machine et le
système Unix.
- L'utilisateur normal dispose de droits réduits et définis par
l'administrateur.

26
Connexion et session

● Prendre la place d’un autre


un utilisateur connecté peut changer de nom en cours de travail en
utilisant la commande su. Le mot de passe du nouvel utilisateur sera
demandé.
syntaxe :
su [-] nom_utilisateur [-c commande]
*) si – est précisé, l'environnement du nouvel utilisateur est chargé
*) si -c est précisé alors les commandes qui suivent sont exécutées.
Revenir au shell précédent : exit

27
Connexion et session

● Déconnexion : Pour se déconnecter :


- taper la commande : exit
- ou utiliser la combinaison de touches Ctrl+D

28
Les fichiers UNIX

● Un fichier dans UNIX est une séquence d'octets, le noyau n'impose


aucune structure spécifique aux fichiers
● Le rôle d'un fichier est de conserver, de traiter et transmettre de
l'information

29
Les fichiers UNIX

● Les types de fichiers :


- répertoire (d)
- Un fichier ordinaire (normal) : fichiers de données manipulés
directement par les utilisateurs
- tubes nommés (p) : dispositif de communication
- sockets (s)
- liens (l) : pointe vers un autre fichiers
- les fichiers spéciaux : Ils sont associés aux périphériques ( disques,
imprimantes, terminaux)
==> manipulés que par l’intermédiaire du système

30
Les fichiers UNIX

● Vision abstraite du système de fichiers : Sous UNIX, les fichiers


sont enregistrés dans une structure hiérarchisée en arbre.
== > Ce système de fichiers est composé d’une racine et des nœuds qui sont des
répertoires et des feuilles qui sont des fichiers ordinaires.
Autrement dit et duu point de vue du programmeur et de l’utilisateur, le
système de fichiers apparaît comme un arbre dont les feuilles sont les fichiers.
Un nœud interne de cet arbre s’appelle un répertoire (directory)

31
Les fichiers UNIX

Organisation des fichiers :

/etc contient les fichiers d'administration


/bin contient les commandes Unix
/usr commandes et bibliothèques supplémentaires
32
Les fichiers UNIX

• situer un fichier dans l’arborescence :


• son nom
• son chemin d’accès: /home/jean

33
Les fichiers UNIX

● Vision concrète du système de fichiers :


Concrètement le système de fichiers est constitué de deux types de
structures de données :
- les i-nœuds (i-nodes) : à chaque fichier correspond un i-nœud (i-node)
=== > un fichier est identifié par un numéro unique : le
numéro d’i-nœud du fichier

- les données de fichier

Le système maintient en mémoire une table des i-nœud (inodes)


des fichiers ouverts dont les éléments pointent sur les fichiers (données).

34
Les fichiers UNIX

● Le nom n’est qu’un pointeur sur un i-node.

● Donc sous Unix un fichier :


- est désigné par un nom.
- identifié un i-node unique
- possède les fonctionnalités suivantes :
ouverture, fermeture, lecture, écriture.

35
Notion d’i-nod

● Chaque fichier est représenté et identifié par son numéro de i-nœud


(inode)
● i- nœud = nœud d’index
● Le système maintient une table des i-nœud (inodes) où chaque
fichier est représenté par une entrée. Dans cette entrée on trouve :
– type de fichier
– les droits
– nombre de liens sur ce fichier
– propriétaire UID et GID
– taille du fichier
– dates et heures du dernier accès, de la dernière modification du
fichier
– des pointeurs vers les blocs du disque contenant les données du
fichier.
(Sera traiter dans la partie SGF en S4)
Notion d’i-nod
Les i-nœud : Structure logique du disque

Bloc 0 Super bloc Table des i-noeud Bloc des données

type droitstype …. droits


@données
….

un i-nœud
Le bloc 0 : Occupe le début du système de fichier(1er secteur en général). Il contient le
bloc d'initalisation (bootstap) contient un exécutable utilise au démarrage
Le superbloc contient en particulier nom et taille du système de fichier, date et mode
de montage, la table d'allocation des blocs, la table d'allocation des i-nœuds, la taille
d’un block …
Liste des i-nœud : contient les caractéristiques de chaque fichiers et les adresses des
blocs de données.
Bloc des données : contiennent les données des fichiers. Les blocs libre sont répertoriés
dans le super bloc (table d’allocation des blocs)
37
Répertoire

Un répertoire :
● Un répertoire est un fichier de type ‘d’
● Comme tout fichier un répertoire possède son i-node pour
accéder aux blocs de données du répertoire il faut accéder à son i-
nœud
● Les données au format N° i-nœud du fichier, nom du fichier
● Les données des répertoires :
- « . » : correspond au répertoire courant (lien vers ce dernier)
- « .. » : correspond au répertoire parent (lien vers ce dernier)
- pour chacun des fichiers qu'il contient la correspondance entre son
nom et son numéro i-node == > données au format n° i-noeud du
fichier, nom de fichier
i-nœud n° 190 n° i-noeud nom du fichier
190 d … @données
(190 , .) (140 , ..) (191,prog.c) (206,file1.txt) (210,rep1)
38
Répertoire

● Dans chaque répertoire, on trouve au moins deux fichiers :


*) . (point) permet de référencer le répertoire lui même,

*) .. (point) permet de référencer le répertoire parent (répertoire du dessus).


● Pour se déplacer dans la hiérarchie on utilise la commande cd :
- syntaxe : cd <nom_répertoire>
- exemple 1 :
*) pour accéder au répertoire parent il suffit de taper :
cd ..

exemple 2 : cd /home/jean/tp

39
Le chemin absolu et le chemin relatif

● Pour désigner un fichier quelconque, on peut utiliser soit un chemin


absolu, soit un chemin relatif

40
Le chemin absolu

● absolu : préciser tout le chemin, c’est-à-dire la suite des répertoires à


traverser en partant de la racine séparés par des caractères /
(et non \ comme sous DOS).
ex : /home/jean/tp
un chemin absolu commence toujours par « / »

41
Le chemin relatif

● relatif : par rapport à la position courante (répertoire courant)


Un chemin relatif spécifie la suite des répertoires à
traverser partant du répertoire courant, séparés par des caractères /
== > Depuis l'emplacement actuel, on peut accéder à un autre
répertoire de l'arborescence sans taper le chemin complet depuis
la racine.
Exemple : je suis dans le répertoire Unix (position initiale).
Unix

TP

TP1

Pour accéder au répertoire TP1 le chemin relatif est :


TP/TP1 == > commande : cd TP/TP1 42
Le chemin relatif

● Utilisation du symbole spécial .. pour monter d'un niveau dans la


hiérarchie

- à partir de tout répertoire, .. est un chemin


relatif vers le répertoire parent
exemple : si l’on travaille dans le répertoire « jean » on peut accéder :
- au fichier (répertoire) « paul » en spécifiant le chemin
suivant :
../paul
- au répertoire « man » en spécifiant le chemin suivant :
../../usr/man

. : désigne le répertoire lui-même.


Le chemin relatif

Exemple :
supposons que jean est sur son répertoire d’acceuil (home dir), le
chemin vers le répertoire tp1 est se trouvant dans le répertoire tp est :
tp/tp1
./tp/tp1 /
../jean/tp/tp1
~/tp/tp1
home
jean

tp

tp1
44
Les méta-caractères
● Dans le shell il existe un nombre de caractères spéciaux qui ont une
signification spéciale :

*) Les caractère servant à générer les noms de fichiers :


Ce sont des caractères génériques permettant de désigner un
ensemble d’objets et s’appliquent aux arguments des commandes qui
désignent des noms de fichiers.
le but : faire une sélection de fichiers suivant certains critères.

* : chaîne de caractères quelconque


? : un caractère quelconque
[ ] : remplace les caractères entre crochets (définis par
énumération ou par intervalle)
exemple : [A-Z] ou [A,C,d] ou [5-9] …
[! ...] : un caractère qui n’appartenant pas à la liste.
45
Les métacaractères

**) Les autres caractères spéciaux :


# : commentaire.
$ : nom de variable (exemple : $b)
& : lance la commande en tâches de fond (background)
; : sépare deux commandes écrites sur une même ligne
!! : pour relance la commande précédente
!ab : relance la dernière commande commençant par ab

^ch1^ch2 : remplace la chaîne ch1 par la chaîne ch2 dans la dernière


commande.
Exemple :
Si la dernière commande est : cat fic1.txt
la commande : ^c1^c2 générera la ligne de commande : cat fic2.txt
46
Les métacaractères

**) Les autres caractères spéciaux :

< ; << ; > ; >> et | : utilisés pour les redirections des entrées-sorties
' : délimite une chaîne de caractères sans substitution de variables
" : délimite une chaîne de caractères avec substitution de variables
\ : annule la signification du caractère spécial suivant

47
Chap 2 : Les commandes de base du système Unix
Notion de commande
Quelques commandes utils : date, pwd …
Les commandes : man, wich, echo
Création de blocs de commandes
Créer un fichier
Naviguer dans l’arborescence : cd
Les commandes wc et wl
Lien physique et lien symbolique
lister les fichiers : ls
Créer/copier/déplacer/supprimer un fichier
Les droits d’un fichier
Redirection de la sortie standard et des erreurs
Lecture d’un fichier : cat, cut, head, tail
Trier : sort
Recherche complexe de fichier : find
Recherche dans un fichiers : grep, egrep
Notion de commande
• Une commande ou ligne de commande :
- C’est une chaîne de caractères qui peut être invoquée au travers
d'une invite de commande ou d'un script (script shell).
- Correspond généralement à un programme.
• Pour l’exécuter on écris son nom suivi des options ( s’il en a) suivis
des arguments (si on en possède)

Syntaxe :
commande [options] [liste d’arguments]
option
Exemple :
ls –l rep1
aguments
commande
Types commandes

• Le shell distingue deux sortes de commandes :


les commandes internes
les commandes externes.
Commande interne

• Une commande interne est une commande dont le code


est implanté au sein de l’interpréteur de commande.
Exemple : cd , echo, pwd

• l’interpréteur ne crée pas de processus fils (Sauf dans


quelques cas particuliers) pour exécuter une commande
interne.
Commande externe

• Une commande externe est une commande dont le code se


trouve dans un fichier ordinaire.
Exemple : ls, sleep, vi, mkdir … et les programme shell

• Un processus fils est crée à chaque fois qu’on exécute une


commande externe.
La commande man

• Pour toutes les commandes, il est possible d'obtenir de l'aide en


tapant man suivi du nom de la commande.

• En tapant une commande suivie du paramètre −−help, nous


obtenons la liste des paramètres possibles.

• N'hésitez pas à recourir à la commande man ou au paramètre


−−help dès que vous avez besoin d'aide.

53
Quelques commandes utiles

● La liste de quelques commandes utiles :


passwd : On utilise la commande passwd pour modifier son mot de
passe.
date : donne la date
cal : affiche le calendrier
who : Qui est connecté?
whoami : afficher l'utilisateur de la session courante
logname : le nom de login
pwd : donne la position actuelle
tty : nom du terminal
La commande « which »

La commande which permet de connaitre la localisation ou le chemin


correspondant à une commande :
Syntaxe
which nom_commande

Exemple :
La commande echo
● la commande echo
Transmet tous ses paramètres sur écran (ou canal de sortie
standard).
Exemple :
$ echo -e "Bonjour, ça va ?\c"

Utiliser dans la commande « echo »


avec l’option -e

56
La commande echo

Les simples quotes : ‘


Les simples quotes protègent tous les caractères spéciaux du shell. Ils
doivent être utilisés en nombre pair

Exemples :
$> echo * == > affiche le contenu du répertoire courant
rep1 fic
$> echo ‘*’ == > affiche *
*
$> echo ‘bonjour l’ami’ =nombre impaire de ‘
== > le shell affiche le prompt secondaire (>)
>
$> a=6
$> echo ‘ la valeur de a est : $a ‘
la valeur de a est :$a
57
La commande echo

L'antislash : \
protège le caractère spécial qui le suit

Exemple :
$> echo \* == > affiche *
*
$> echo $
$
$> a=6
$> echo $a == > affiche la valeur de a
6
$> echo \$a == > affiche $a
$a

58
La commande echo

Les guillemets : "


protègent tous les caractères spéciaux du shell à l'exception du :
$var, `` (des quotes inversés ), ${}
Exemple :

59
La commande echo

Comment afficher :
1- je m'appelle "toto "
2- je m'appelle ‘toto ‘
3- je m'appelle \toto\

60
Création de blocs de commandes

● Exécuter plusieurs commandes de façon séquentielle :


commande1 ; commande2 ; ...; commandeN
Commande<i> doit se terminer par un succès ou par un échec avant
l’exécution de la suivante

● Exécuter des commandes uniquement en cas de succès de la


commande précédente : &&
commande1 && commande2 && ... && commandeN

● Exécuter une commande en cas d’échec de la commande


précédente : ||
commande1 || commande2 || ... || commandeN

61
Créer un fichier régulier

● touch :
■ permet de créer un fichier s’il n’existe pas, et s’il existe d’appliquer
une date à ce fichier (modifier sa date d’accès et de sa date de
modification)

Exemple :
touch test.log
1er cas : le fichier test.log n’existe pas == > ce dernier sera crée
2em cas : le fichier test.log existe
== > applique la date et l’heure courante au fichier test.log
comme date et heure d’accès et de dernière modification

62
Créer un répertoire

● mkdir :
■ permet de créer un répertoire vide
Syntaxe :
mkdir [options] [nom répertoire]

■ Options :
-p : Crée les répertoires parents si nécessaire
== > crée un répertoire et ces sous répertoires
exemple :mkdir –p rep1/test/image
-m : Donne des droits d'accès spécifiques
-v : pour indiquer les tâches de mkdir est en cours
63
Naviguer dans l’arborescence

● pour se déplacer dans l’arborescence on utilise la commande cd


Syntaxe :
cd [Chemin (absolu ou relatif) vers le répertoire]

● commandes utiles :
cd .. : monter d'un niveau dans la hiérarchie
cd ../.. : monter de 2 niveaux dans la hiérarchie
cd ~ : aller directement dans le répertoire de l'utilisateur
cd – : revenir au répertoire précédent
● Pour connaitre la position actuelle ou du répertoire courant :
pwd
64
Statistiques (wc)

La commande wc permet de compter le nombre de caractères, de mots


et de lignes d'un fichier.

Syntaxe :
wc [option] file

Les options :
-c : (chars) donne le nombre de caractères
-w : (words) donne le nombre de de mots
-l : (lignes) donne le nombre de de lignes
- L : (Length max ligne) affiche la longueur de la ligne la plus longue
65
Les caractères spéciaux

Lors de l’utilisation de commandes en rapport avec le système de


fichier, il peut devenir intéressant de filtrer la sortie de noms de
fichiers à l'aide de certains critères.
Liste des caractères spéciaux :
? : un caractère quelconque
* : n’importe quelle suite de caractères, peut être vide.
[...] : un caractère de la liste. exemple : [A-Z0-9].
[! ...] : un caractère qui n’appartenant pas à la liste.
\ : supprime la signification spéciale du caractère suivant

66
Les caractères spéciaux

Exemples :
Si le répertoire courant contient :
file1.bin file1.txt file2.txt file10.txt file.txt fic
Alors :
file* === > file1.bin file1.txt file2.txt file10.txt file.txt
file1* == => file1.bin file1.txt file10.txt
file*.txt === > file1.txt file2.txt fich10.txt file.txt
file[0-9]* === > file0.txt file1.txt … file9.txt
??? == => fic

67
Lien physique

Lien physique :
Permet, en quelque sort, de donner plusieurs noms à un même fichier.
Le fichier source et les liens pointent vers les données du fichiers source
qui sont stocké sur le disque. Les liens physiques d’un même fichier ont
même numéro i-node que le fichier source (pointent sur le même inode).
syntaxe :
ln –P source lien
ou ln source lien
Même n° i-node
Nombre de liens
exemple :
Lien physique

Pour les liens physique, si le fichier source est effacé les autres lien sont
valides.

Si on supprime file1, le fichier file2 reste intacte et contient des données


Lien Symbolique

A la création d’un lien symbolique c’est un nouveau fichier spécial


(type lien symbolique) qui se crée. Ce fichier est rajouté dans la
table des inodes.

Si on supprime le fichier sources tous les liens symboliques qu’il


possède sont cassés.
Lien Symbolique

syntaxe :
ln –s source lien

Exemple : ln –s file1 file3

N° i-node
*) On remarque que le N° inode de file1
l : pour désigner le fichier est différent du n° inode de file3 (lien
de type lien symbolique symbolique)
Lien Symbolique

Si le fichier source est effacé le fichier tout symbolique lien n’accède


plus aux données.
Exemple :
Lister les fichiers
● Pour lister le contenu d’un répertoire on utilise la commande ls
Syntaxe :
ls [options] [chemin]
● Les options de ls :
■ -l : permet d'obtenir l'ensemble des informations relatives à
chaque fichier du répertoire (ls –l):
$ ls −l droits d’accès groupe taille(octets) nom du fichier
drwxr−xr−x 2 toto grp1 512 Mar 10 15:09 CVS
−rw−r−−r−− 1 toto grp1 744 Mar 10 14:17 Makefile
−rw−r−−r−− 1 toto grp1 8117 Mar 10 15:23 chap1.text

(compteur-lien) propriétaire date de dernière modification

compteur-lien : nombre d'inodes (partie élémentaire de système de fichiers)


qui pointent vers le fichier/répertoire (généralement 1 pour un fichier, 2+le nombre
de sous-répertoires pour un répertoire).
73
Lister les fichiers
● le premier caractère du résultat de la commande ls -l désigne
le type du fichier:
- : désigne un fichier régulier(ordinaire) ce sont des fichiers
dont les données sont stockés sous forme d'octets sur le
disque dur.
d : désigne un répertoire (dossier ou directory)
l : désigne un lien symbolique (raccourci)
c: Fichier spécial caractère
b: Fichier spécial bloc
p : pipe nommé

Exemple :
ls -l [a-r]?*.txt
== > tous les fichiers commençant par les lettres de a à r,
possédant au moins un second caractère avant la terminaison txt
74
Lister les fichiers
● Les options de ls :
■ -r : inverser l’ordre d’affichage

■ -R : afficher la liste des fichiers dans des sous répertoire

== > affiche le contenu du répertoire et de tous ces sous-répertoires

■ -p : Mettre un '/' après les noms de répertoires == > ls –p

■ -a : Afficher aussi les fichiers cachés (commençant par un point)


■ Afficher le listing page par page == > ls | less

■ -i : pour afficher le numéro de l’inode


75
Lister les fichiers

● Les options de ls :
■ -m : afficher le résultat sous forme de nom séparé par des virgules

■ -F : afficher le type des fichiers


: fichier normale
/ : répertoire
* : exécutable
@ : lien symbolique

■ -f : affiche les fichiers classiques


■ -d : affiche les répertoires
76
Lister les fichiers

● Les options de ls :
■ Tri sur la date (-t) :
Pour afficher les fichiers d'un répertoire en triant sur
la date de mise à jour des fichiers
-t : afficher les fichiers les plus récents en premier == > ls -t
-rt : afficher les fichiers les plus ancienne en premier == > ls -rt
- possibilité de mixer avec l'option l afin d'afficher le listing
détaillé :
ls -rtl ou ls –tl

77
Lister les fichiers

● Les options de ls :

■ Tri en fonction de la taille : s


ls -s
ls -sh == > la taille du fichier en k octets

■ -c : Affiche la date de création (si -l) ou tri par date de création (si -t)
■ -C : noms sont affichés sur plusieurs colonnes

■ -u : Affiche la date d'accès (-l) ou tri par date d'accès (-t)

■ -1 : liste sur une seule colonne

78
Copier un fichier ou un répertoire
● Pour Copier un fichier ou un répertoire on utilise la commande cp
Attention:
Gardez à l'esprit que si le fichier cible existe déjà, il sera purement et
simplement écrasé, sans aucun message d'avertissemenuf si on
utilise l’option -i . Soyez donc très prudent en matière de copie de
fichiers
● Pour Copier un fichier : cp source destination
ou cp –i source destination
Exemple : copier un fichier
cp log/stat24.log stat/stat25.log
ou cp log/stat24.log stat/
● Pour copier un répertoire source avec son contenu :
cp -R source destination
79
Copier un fichier ou un répertoire

Exercice :
Si le position courante est le homedir de l'utilisateur toto,
comment faire pour copier le fichier /homme/toto/linux/tp dans
le répertoire courant

80
Renommer et/ou déplacer
● Pour renommer et/ou
déplacer un fichier ou un réperoire on utilise la
commande mv (move) :

Syntaxe :
mv [options] source destination

option :
-i : pour confirmer le remplacement du fichier
exemple :
mv ~/rep1/stat24.log . == > déplacer stat24.log vers le répertoire
courant
mv file.txt rep1 == > déplace file.txt (qui se trouve dans le
repertoire courant) vers le répertoire
rep1

81
Renommer et/ou déplacer
Exemple (suite) :

mv rep1 repf == > si repf existe : déplace le répertoire


, rep1 dans repf,
si repf n’existe pas : renomme le répertoire
rep1 en repf

Remarque pour les liens symbolique :


mv lien1 ~/rep1 == > déplace le lien symbolique

82
Supprimer un fichier

● rm : pour supprimer un fichier


Syntaxe :
rm [options] [nom fichiers]
■ Options :

-i : pour confirmer la suppression de chaque fichier


-v : pour indiquer les tâches de rm en cours
■ Possibilité d’utiliser les caractères spéciaux :

exemple :
rm *
rm a*
rm *test
rm ?test[0-4]*.txt
rm *test[!0-4]*.txt 83
Supprimer un répertoire

● pour supprimer un répertoire vide on utilise la commande rmdir :


rmdir [options] [nom répertoire]

● pour supprimer un répertoire non vide:


rm –R rep

84
Les droits d'accès à un fichier c

● sous Unix il existe trois familles d'utilisateurs pour chaque


fichier :
- le propriétaire
- le groupe
- les autres

● et pour chacune de ses trois famille il existe trois type


d'autorisation
r : lecture
w : écriture
x : exécution

85
Les droits d'accès à un fichier

● le premier champ du résultat de ls -l , former de 10 caractères,


désigne le type et les droits d’accés
nom du
$ ls −l droits d’accès groupe taille(octets) fichier
drwxr−xr−x 2 toto grp1 512 Mar 10 15:09 CVS
−rw−r−−r−− 1 toto grp1 744 Mar 10 14:17 Makefile
−rw−r−−r−− 1 toto grp1 8117 Mar 10 15:23 chap1.text

(compteur-lien) propriétaire date de dernière modification

le premier caractère désigne le type


le trois suivants désignent les droits du propriétaire
le trois suivants désignent les droits du groupe
le trois derniers désignent les droits des utilisateurs

86
Les droits d'accès à un fichier
Signification des droits d'accès pour les répertoires :

r : Lecture , lister le contenu du répertoire ( ls)


w : Ecriture, modifier le contenu du répertoire ( touch,
mkdir, rm mv , cp)
x : droit de traverser ( cd )

87
Changer les droits d'accès d'un fichier

● La commande chmod :
- la commande chmod permet de changer les droits d'accès d'un
fichier donné.
- Seul le propriétaire d ’un fichier peut modifier ses droits d ’ accès
●Il existe deux notations (méthodes) pour modifier les permission :
1- notation symbolique
2- notation octale

88
Changer les droits d'accès d'un fichier
● La notation symbolique :
syntaxe :
chmod [ugoa][+ - =] [rwx] nom_fichier

u : propriétaire (user) + : pour ajouter des droits


g : groupe d’accès
o : autre - : pour enlever des droits
a : tous (all) = propriétaire + groupe d’accès
+ autre = : pour affecter des droits

si aucune classe n ’est spécifiée toutes les classes sont concernées .

89
Changer les droits d'accès d'un fichier

Exemple :
chmod go+w file == > autorisation d’écriture au groupe et aux autres
chmod a=rw file == > autorisation de lecture et d’écriture à tout le
monde
chmod go-rw file == > retirer les autorisations de lecture d’écriture au
groupe et aux autres
chmod u+x,g-w+x,o=r file == > ajouter x au propriétaire, enlever w au
groupe et ajouter x au groupe,
affecter uniquement la lecture aux autre

90
Changer les droits d'accès d'un fichier
● La notation octale :
Les permissions du propriétaire ou du groupe ou bien des autres sont
stockées sous forme de nombre octale.
représentation par 3 bits:
r w x
Numéro du bit : 1 2 3

bit 1 : valeur 0 ou 1 (lecture)


bit 2 : valeur 0 ou 1 (écriture)
bit 3 : valeur 0 ou 1 (exécution)

91
Changer les droits d'accès d'un fichier

Ainsi, on a:

Valeur binaire Valeur octale Droits


000 0 ---
001 1 --x
010 2 -w-
011 3 -wx
100 4 r--
101 5 r-x
110 6 rw-
111 7 rwx

92
Changer les droits d'accès d'un fichier

● Pour changer les droits d’accès d’un fichier :


syntaxe :
chmod abc filename

0 ≤ a,b,c ≤ 7
a désigne les droits du propriétaire
b désigne les droits du groupe
c désigne les droits des utilisateurs

93
Changer les droits par défaut : umask
Par défaut un fichier est créé avec les droits maximumm:
- 666 pour un fichier normale (-rw-rw-rw-)
- 777 pour un répertoire (-rwxrwxrwx)

On peut changer ces paramètres par défaut en utilisant la commande umask


Exemples :
1- Pour un fichier classique
On souhaite à ce que les fichiers réguliers auront comme droit 644 (-rw-r-r--) à la
création (touch). Il faut taper la commande : umask 022
Ansi on part des droits maximum 666 et on retranche 022, on obtient donc 644,
par défaut. Les fichiers auront comme droit 644 (rw-r-r--).
2- Pour un dossier
Si on tape umask 244.
On part des droits maximum 777 et on retranche 244, on obtient donc 533, par
défaut. Ansi les fichiers auront comme droit 533 (r-x--wx-wx).
Changer le propriétaire et/ou le groupe

La commande chown :
'chown': permet de changer le propriétaire et/ou le groupe
d'un fichier :

Syntaxe :
chown new_user:new_group filename

95
Redirection d’entrées/sorties sous Unix

● On a trois flux d’entrée/sortie. Chacun d’eux a un descripteur de


fichier (identifiant) assigné de la façon suivante :
0 : L’entrée standard (STDIN) associée au clavier
1 : La sortie standard (STDOUT) associé à l’écran
2 : La sortie standard erreur (STDERR) associé à l’écran

sortiestandard
(stdout)
0 1
Entrée standard
(stdin)
2 Sortie erreur standard
(stderr)

96
Redirection d’entrées/sorties sous Unix

On peut redigirer les flux d’entrée-sortie au moyen d’opérateurs


spécifiques :
> : redirection de la sortie standard
< : redirection de l’entrée standard
>> : redirection de la sortie standard avec concaténation
& : redirection des sorties standard et d’erreur
| : appelé tube (pipe) permet la redirection de la sortie standard vers
l’entrée standard
Redirection de la sortie standard et des erreurs
● Rediriger la sortie d’une commande (sortie standard) vers un fichier : >
== > rediriger stdout vers un fichier
syntaxe :
commande > filename
Le fichier est crée s’il n’existe pas ou on écrasé s’il existe déjà

● Ajouter la sortie d’une commande à la fin d’un fichier : >>


syntaxe :
commande >> filename == > ajout sans écrasement
● Pour rediriger les erreurs :
commande 2> filename
commande 2>> filename

98
Redirection de l’entrée standard

● Utiliser un fichier comme entrée d’une commande : <


= > rediriger stdin de manière à ce qu’il provienne d’un fichier et
non d’un clavier
Syntaxe :
commande < filename

99
Redirection entre commande

● La sortie d’une commande peut être reliée à l’entrée d’une autre


en utilisant | :
La redirection entre commande est appelée pipe (tube) , elle est
symbolisée par la caractère |

Syntaxe :
cmd1 | cmd2
== > permet de redirigé la sortie de cmd1 pour servir d’entrée à
cmd2

100
Chap 2 : Les commandes de base du système Unix
Notion de commande
Quelques commandes utils : date, pwd …
Les commandes : man, wich, echo
Création de blocs de commandes
Créer un fichier
Naviguer dans l’arborescence : cd
Les commandes wc et wl
Lien physique et lien symbolique
lister les fichiers : ls
Créer/copier/déplacer supprimer/un fichier : mkdir, rm ,
rmdir, cp, mv
Les droits d'accès à un fichier
Redirection de la sortie standard et des erreurs
Lecture d’un fichier : cat, cut, head, tail
Trier : sort
Recherche complexe de fichier : find
Recherche dans un fichiers : grep, egrepcc
Affichage du contenu du fichier

● Afficher les fichiers sur stdout : cat


syntaxe :
cat fichier == > affiche le contenu de fichier à l’écran

- Concaténer des fichiers :


cat file1 file2 == > concaténer des fichiers vers stdout
cat file1 file2 > file3 == > concaténer des fichiers dans un autre
fichier (ici file3)
- Concaténer des fichiers et numéroté les ligne :
cat –n file1 file2
● Afficher le contenu de fichier page par page : more ou less
more file1
less file1 102
Affichage d’un nombre de ligne d’un fichier

● head : permet d ’afficher un nombre de ligne au début d ’un fichier


texte
syntaxe :
head –n nbligne file1
Exemple :
head file1 == > afficher les 10 première ligne de fil1
head –n +20 fichier1.txt == > affiche les 20 premières lignes.
= head -20 fichiertxt

● tail : permet d ’afficher un nombre de ligne s à la fin d ’un


fichier texte

tail -n +20 fichier1.txt affiche le fichier à partir de la 20 ème ligne.


tail -n -20 fichier1.txt affiche les 20 dernières lignes.

103
Extraire des données dans un fichier
Application : Extraction des caractères
Soient n et m deux entiers ,

cut -cn file extrait le nième caractère de chaque ligne

cut -cn- file extrait chaque ligne à partir du nième caractère

cut -c-n file extrait les n premiers caractères de chaque ligne

cut -cn,m file extrait les caractères n et m de chaque ligne

cut -cn-m file extrait les caractères n à m de chaque ligne

104
Extraire des données dans un fichier

Application : Extraction des champs


Soit S le séparateur de champs :
cut -dS -fn file extrait le nième champs de chaque ligne
cut -dS -fn- file extrait chaque ligne à partir du nième champs
cut -dS -f-n file extrait les n premiers champs de chaque ligne
cut -dS -fn,m file extrait les champs n et m de chaque ligne
cut -dS -fn-m file extrait les champs n à m de chaque ligne

Avec S= , ou ; ou \ ou : etc

105
Extraire des données dans un fichier

Exercice :
soit un fichier nommé file1 ayant cette forme :
nom:prénom:age:numtél:adresse

1.Afficherlenom, le prénom et l'âge de chaque étudiant,


2- Afficher le nom et l’adresse
2.Afficherles trois premiers caractères de chaque ligne
Recherche des fichiers : find
● La commande find permet de chercher des fichiers sur le disque.
syntaxe :
find <répertoire source> <expression>
Options principales:
-name : recherche par nom de fichier
== > find . –name "test"
find . –name "*test*"
-type : recherche par type de fichier
== > find . –type d
find . –type f
d : répertoire, f : fichier classique, l : lien symbolique, b: fichier
spécial en mode bloc, fichier spécial en mode caractère,
s : socket …
107
Recherche des fichiers : find

● Options principales:
-user : recherche par propriétaire
ex : find . –user scott
find . ! –user scott == > ce qui n’appartient pas à cott

-group : recherche des fichier appartenant à un groupe

-size : recherche par taille


ex : find . –size +1OM suffixe de la taille :
b = blocs
c := octets
k = ko, M = Mo, G = Go
108
Recherche des fichiers : find

- mtime : recherche par date de dernière modification


exemple :
-mtime 30 : le fichier a été modifié il y a 30 jours;
-mtime +30 : le fichier a été modifié il y a 30 jours ou plus;
-mtime -30 : le fichier a été modifié il y a 30 jours ou moins.

Exemple :
find . -mtime +5
find . -mtime +5 -name "*.txt"

-ctime : recherche par date de création du fichier.


-atime : recherche par date de dernier accès en lecture du fichier,
ex : find . ! –group alpha == > recherche des fichier n’appartenant
pas au groupe alpha (alpha=identifiant d’un groupe)
Recherche des fichiers : find

-type : pour type de fichier


Exemple : find . –type f

d = directory, f := file, s = socket, b = fichier en mode bloc …


Recherche des fichiers : find

syntaxe sens
abc cette chaîne
? un caractère quelconque
* des caractères
[xyz] x ou y ou z
[a-f] un caractère entre a et f
[!xyz] un caractères sauf x, y ou z
[0-9] un chiffre entre 0 et 9

111
Recherche des fichiers : find

 Exercices :

▪ Chercher les fichier ayant les caractéristiques suivantes


1- commençant par un « a » et en 2eme position ont ne doit pas avoir un
chiffre.
2- commençant par un «a» majuscule ou minuscule, suivi de chaîne de
caractère et se terminent par un chiffre entre 2 et 6
3- les noms commençant par n’import quel caractère et ayant un chiffre en
3eme position

112
Recherche des fichiers : find

● Afficher un résultat lorsque plusieurs expressions sont vraies (and)

▪ possibilité de combiner plusieurs options avec l’opérateur logique


and (-a)
Objectif : améliorer la précision de la recherche

Exemple :
find . –name ’’*unix*’’ -a -type f

Recherche sur le niveau 1 :


find . -maxdepth 1 –name ’’*unix*’’
113
Recherche des fichiers : find

● Afficher un résultat lorsque une des expressions est vraie (OR)

▪ possibilité de combiner plusieurs options avec l’opérateur logique OR


(-o) :

Exemple :
find . –size +10M -o -size 10M

114
Recherche des fichiers : find

● combinaison multiple :
exemples :
- les fichiers de taille >=10M dont le nom contient le mot unix
find . \( -size +10M -o -size 10M \) -a –name ’’*unix*’’

115
Recherche des fichiers : find

- Les fichiers modifiés il y a moins de 5 jours et dont la taille soit


supérieure à 30 K
- Les fichiers se terminant par file mais modifiés il y a plus de 5 j
- Seulement les fichiers réguliers ayant l’extension .txt ou dont le nom
contient le mot file à la fin
Recherche des fichiers : find
L’Option –exec:
L’option –exec permet d’appliquer une commande au résultat de la
recherche
Syntaxe:
find rep_source -options –exec commande {} \;

Exemple 1: supprimer les programmes en C dans l’arborescence à


partir du répertoire courant:
find . –name ’’*.c ’’ -exec rm {} \;
Exemple 2 :

117
Exemple :
Déplacer les fichiers régulier commençant par file du répertoire courant vers
le répertoire repT

Exercices :
1- Effacer tous les fichier contenant la chaîne file de votre répertoire home
Exemple 3 :
Couper un fichier en morceau : split

●La commande split permet de découper un fichier en


en plusieurs fichiers.
Syntaxe :
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.

120
Recherche des motifs dans un fichiers
● Pour effectuer des recherches dans un fichier on utilise la commande
grep ou egrep (supporte les expressions régulières étendues)

syntaxe :
grep motif file
Exemple
grep ‘test’ rep1/* == > recherche les lignes contenant la chaîne test
(tous les occurrences de test) dans tous les
fichier du répertoire rep1
Options :
-R : recherche récursive -i : rechercher en ignorant la casse
-w : rechercher exactement un mot
grep –w ‘test’ rep1/* == > affiche les lignes qui contiennent
121
Recherche des motifs dans un fichiers

Options (suite):
-n : affiche, en plus, le numéro de ligne dans lequel figure le mot
recherché
-v : affiche les lignes ne contenant pas le mot
-i : permet d’ignorer la casse
-c: affiche seulement le nombre de lignes contenant la chaîne,
-l : affiche les noms des fichiers où figure au moins une fois le motif
cherché

122
Recherche des motifs dans un fichiers

● egrep ( grep -E): supporte les expressions régulières étendues

Exemple :
egrep ‘c?t’ file
egrep ‘c[a-z]?t’ file
Expressions régulières

Une expression régulière sert à identifier une chaîne de


caractère répondant à un certain critère (par exemple
chaîne contenant des lettres minuscules uniquement).
L'avantage d'une expression régulière est qu'avec une
seule commande on peut réaliser un grand nombre de
tâches qui seraient fastidieuses à faire avec des
commandes UNIX classiques.

Les commandes ed, vi, ex, sed, awk, expr et grep utilisent
les expressions régulières.

124
Expressions régulières

^ : Début de la ligne == > '^blabla' : Affiche toute les lignes


commençant par blabla
$ : Fin de la ligne == > blabla$ : affiche toutes les lignes se terminant
par blabla
\< : début du mot == > \<toto -> affiche toutes les lignes contenant
un mot qui commence par toto
\> : fin du mot == > toto\> -> affiche toutes les lignes contenant un
mot qui se termine par toto
. : remplacé par un et un seul caractère
[...] : remplacé par un caractère entre crochet
[^...] : remplacé par un caractère qui n'est pas entre crochet.
\ : fait perdre la signification spéciale au caractère suivant
125
Expressions régulières

● répétition d’une expression :


? : se répété 0 ou 1 fois (au plus 1 fois)
* : répété 0 ou plusieurs fois
\{n\} se répète exactement n fois
\{n,\} se répète n fois ou plus (au moins n fois)
\{0,m\}se répète au plus m fois
\{n,m\} se répète n fois au moins et m fois au plus
+ se répété une ou plusieurs fois (au moins une fois)
Expressions régulières

Exemple de recherche :
x* : une suite quelconque d’occurrences de x (0 ou plus)
x+ : au moins une occurrence de x (1 ou plus)
x {n, m} : Entre n et m occurrences de x (au moins n, au plus m)
x? : une occurrence optionnelle de x (0 ou 1)
x|y : X ou y
Recherche des motifs dans un fichiers

● Exemple : grep et expression régulière


grep –i ‘^a’ file == > ligne commençant par a ou A
grep ‘^[aA]’ file == > ligne commençant par a ou A
grep ‘rs$’ file == > lignes qui se terminent par rs
grep ‘[^0-9]toto’ file == > identifie les lignes contenant la chaîne toto et le
caractère juste avant ne doit pas être un chiffre

grep ‘a[0-9]\{5\} file == > cherche les ligne contenant


des mots avec un a suivi de 5 chiffres

Ou
egrep ‘a[0-9]{5} file

128
Recherche des motifs dans un fichiers

Exercice :
chercher les lignes contenant le mot ‘uni’ suivi de maximum 3x
ou

chercher les lignes contenant exactement le mot ‘uni’ suivi de maximum 3x

ou
Recherche des motifs dans un fichiers
● utiliser les paranthèses ( ) pour délimiter un motif
Exemple :
Chercher les lignes contenant exactement les mots suivants : work ou works ou
working

Chercher les lignes contenant exactement le mot unix suivi par au maximum deux
mots unix :
Recherche des motifs dans un fichiers

● Attention :
*) [A-C^], c'est équivalent aux caractères A,B,C , ^.

*) Les caractère spéciaux doivent être protégé par un \ s’ils font partie du
critère de recherche :

- grep '\.$' fichier == > les lignes se terminant par un point


- grep ‘a.*c’ file est diffèrent de grep ‘a\.*c’ et de grep ‘a\.\*c’

131
Recherche des motifs dans un fichiers

● Chercher plusieurs mots à la fois ➔ utiliser egrep


syntaxe :
egrep \(mot1\|mot2\) fichier

Exemple :
egrep \(‘unix’\|’oracle’) file
ou :
egrep ‘unix|oracle’ file1
Recherche des motifs dans un fichiers

 Exercices :
chercher les lignes suivantes :
1- contenant la chaîne bt, afficher aussi les numéros de lignes
2- contenant exactement la chaine bt
3- contenant la chaîne ^bcdf
4- contenant a suivi par un ou plusieurs caractère puis par un c
5- Les lignes se terminant par un de ces caractères : . , ; ! ?
6- lignes dont la 2eme lettre est un f
7- Lister le contenu du répertoire rep1 et chercher les fichiers dans le nom est
exactement file ou File
8- contenant des mots commençant par une voyelle
9- l’inverse de (8)
10- commençant par un B, et après il peut y avoir 6 lettre quelconques

133
Recherche des motifs dans un fichiers

Exercice 2: utiliser ls avec grep


vous êtes dans le répertoire rep1 éditer les nom des fichiers
correspondant aux critères suivants :
- Le nom doit être file1 ou File2
- file est en fin de nom
- nom contenant mmm ou MMM

134
Recherche des motifs dans un fichiers

Exercice 3 : soit le fichier file


1- Chercher les lignes contenant une suite d’au maximum 10 caractères,
suivis du motif « jardin », suivis d’une autre suite d’au maximum 15
caractères.
2- Soit un fichier file . Comment connaitre combien de lignes comportent
le motif « jardin »?
3- Combien de lignes contiennent le motif jardin mais pas le motif
parc
4- Combien de lignes contiennent le motif jardin séparé de parc d’au
moins de 10 caractères
Trier un fichier

● sort permet de trier un fichier


syntaxe ;
sort [options] [+pos1 [-pos2] ...] filename

136
Trier un fichier
● Pour spécifier les champs à trier on utilise +pos1 et –pos2
- Le triage s’effectuera à partir du champ +pos1 et s’arrêtera sur le
champ -pos2.
Le champ –pos2 n’est pas inclus dans le triage
- Le séparateur de champs par défaut est la tabulation
- Le comptage des champs commence à 0

● Les options :
–t : permet de désigner le séparateur de champs
-b : Ignore les espaces en début de champ
-f : Pas de différences entre majuscules et minuscules
(conversion en minuscules puis tri)
-r : Reverse, tri en ordre décroissant.
–n : tri par ordre numérique 137
Trier un fichier

Exemple :
sort +0 – 1 file1 == > tri % au 1er champs
sort -n -r +2 -3 liste == > tri numérique sur le champs 3
ls-l | sort -n +4 -5 == > lister +tri suivant la taille du fichier

sort -t : +4 -6 file trier par rapport au 5 ème champs

138
Trier un fichier

Exemple :
file1
Robert M Johnson 344-0909
Lyndon B Johnson 933-1423
Samuel H Johnson 754-2542
Michael K Loukides 112-2535
Jerry O Peek 267-2345
Timothy F O'Reilly 443-2434

$> sort file1


Jerry O Peek 267-2345
Lyndon B Johnson 933-1423
Michael K Loukides 112-2535
Robert M Johnson 344-0909
Samuel H Johnson 754-2542
Timothy F O'Reilly 443-2434
Trier un fichier

Si maintenant on effectue le trie sur le 3ème champs si égalité on


effectue le trie sur le 1 er ensuite sur le 2ème :
$> sort +2 -3 +0 -2 file1
Lyndon B Johnson 933-1423
Robert M Johnson 344-0909
Samuel H Johnson 754-2542
Michael K Loukides 112-2535
Timothy F O'Reilly 443-2434
Jerry O Peek 267-2345
Remplacement de caractères

●La commande tr permet de substituer des caractères à d'autres


● tr n'accepte que des données depuis l'entrée standard, ou par des
fichiers en redirection d'entrée.
Syntaxe :
tr [options] source cible
source et la cible représentent un ou plusieurs caractères

Exemples :
$> cat file1
Preduit prix quantites
$> cat file1 | tr ‘oi’ ‘ea’

$> cat liste | tr ‘[a-z]’ ‘[A-Z]’ == > passage de toutes les minuscules en majuscules

$ > tr '[a-z]‘ '[A-Z]' < file.txt 141


Comparer deux fichiers

 La commande diff permet de comparer le contenu de deux fichiers


pour en connaître les différences. Il compare le fichier sources et
cible ligne par lignes équentiellement

Syntaxe :
diff [option] source cible

Quelques options :
- b : ignore les différences dû à des espaces blancs
- B : ignore les différences dû à des lignes blanches
- i : ignore les différences minuscules/MAJUSCULES
- q : indiquer seulement si les fichiers sont différents sans afficher les différences
- s : indiquer lorsque deux fichiers sont identiques
- r : comparaison récursive des fichiers d'un répertoire, sous répertoires
142
Extractions des noms et chemins

● La commande basename permet d’extraire le nom du fichier dans un


chemin.
basename /home/seb/liste.log
résultat == > liste.log
● La commande dirname effectue l’inverse, elle extrait le chemin.
dirname /home/seb/liste.log
résultat == > /home/seb

143
Les alias

● Un autre nom qu’on donne à une commande


== > invoquer rapide une commande qu’on utilise régulièrement
Syntaxe :

alias nom_alias=‘la_commande’
Exemple :
alias lsl=‘ ls -l’
alias lsd=‘ls -d ’
● Afficher la liste des alias :
alias [nom_alias]

144