Vous êtes sur la page 1sur 163

Système d’exploitation « Open Source »

Le contenu
1- Introduction au Système d’exploitation (OS)
- Pourquoi un OS ?
- Qu'est ce que un OS?
2- Système d’exploitation open source
3. Système de fichiers et Gestion de fichiers et répertoires
- Manipulation des fichiers et répertoires - les liens –recherche des fichiers(find ,-exec) -
- Compression et archivage
4. Gestion des droits d’accès aux fichiers et répertoires (chmod) et l’éditeur vi
5. Extraire , trie et filtres et d’autre opération sur les fichiers :
’’wc, grep, cat, sort,uniq,cut,sed,split comm,diff’’’
6. Mécanismes de redirection et les Tubes(’ <’ , ‘<<‘, ‘>,’>>, ’|’’ pipe et double pipe ‘||’).
7- Gestion de processus
8. Automatisation des tache,
- date, at , crontab
9- le Shell et les Scriptes ( programmation sous linux)
- Commandes d’entée et sortie ( echo , read)
- Variables
- Structure de test et de contrôle(if), boucles (for , while) et expression
- Paramètres de scriptes ( $0, $#,$? ) ,($1, $2 ….$n)
INTRODUCTION :Rôles du OS

Le maître d’orchestre: essentiel pour utiliser les ressources de la


machine par :
gestion de la mémoire centrale
gestion des processeurs: temps de calcul entre plusieurs programmes q
s’exécutent simultanément
gestion des périphériques: E/S
gestion des fichiers: sur les mémoires de masses
gestion des ressources: attribution des ressources nécessaires
exécution du programme
gestion des utilisateurs: pas d’interférence entre eux
INTRODUCTION

Rappel Système D’exploitation

Définition d’un système d’exploitation:


Un système d’exploitation est un ensemble de programmes qui
coordonnent le fonctionnement des différents composants matériels et
logiciels d’un système informatique.

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


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.
Système Open sources
logiciel Libre / logiciel propriétaire

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

On ne peut donc pas le modifier ou regarder comment il fonctionne à


l'intérieur.)
Système Open sources

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 pour dire qu’un Système est open source:

• 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 ;
Système Open sources

Historique

UNIX est un système d'exploitation, créé en 1969 par Ken Thompson et


Dennis Ritchie. Sa conception a été particulièrement soignée, et apportait
plusieurs innovations, notamment le choix d'utiliser plusieurs outils simples
et spécialisés, plutôt que des logiciels complexes à tout faire.Il est l'un des
systèmes d'exploitation les plus populaires au monde, en raison du grand
nombre d'architectures qu'il supporte .

Project GNU:

Est un projet lancé par Richard Stallman, un chercheur du MIT.


Le but est de dévellopper un OS complet, libre et qui se base sur Unix
afin de contrer le dévellopement croissant des logiciels propriaitaires( le
prix Unix devenait de plus en plus payant).

Cependant, en 1991, le projet GNU n'avait toujours pas de noyau et


tournait sur des Unix propriétaires.(Stallman avait créer les programmes
de base:(programme de copie de fichier, suppression de fichier, éditeur de
texte).
Système Open sources

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.
Système Open sources

Les distributions de Linux

Il existe une très grande variété de distributions, ayant chacune des objectifs
et une philosophie particulière.

Les éléments différenciant principalement les distributions sont :

 la convivialité (facilité de mise en œuvre).

 l'intégration (taille du parc de logiciels validés distribués).

La notoriété (communauté informative pour résoudre les problèmes),


l'environnement de bureau (Gnome, KDE, ...).

Le point commun est le noyau ( kernel) et un certain nombre de commandes.


Système Open sources

Les distributions Commerciales

Il Red Hat: http://www.redhat.com/ La plus populaire. Fiable, sûre, conviviale et


facile à installer, prise en charge par tous les fournisseurs de logiciel et de
matériel.

Suse (Novell): http://www.suse.com/ L'alternative principale. Facile à installer,


conviviale et stable. Obtiens le support des fournisseurs de logiciel et de
matériel.

Mandriva (anciennement Mandrake): http://mandrivalinux.com/ Conviviale,


facile à installer, plus innovante, mais moins stable. Cible principalement les
utilisateurs individuels. Peu pris en charge par les fournisseurs de logiciel et de
Système Open sources

Les distributions Commerciales

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.

Mandriva Community: http://mandrivalinux.com/ Facile à installer, sûre,


conviviale, sortie fréquente de versions complètes, mais moins stable (pas
assez de tests et de prise en compte des retours des utilisateurs et testeurs)..
FONCTIONEMENT DE BASE LINUX
Gestion de fichiers et répertoires

PARTITIONEMENT DISQUE DURE


Systèmes de fichiers

• Le système de fichiers d'un système d'exploitation est un ensemble de


principes et de règles selon lesquels les fichiers sont organisés et
manipulés. Chaque système d'exploitation possède son système de fichier
privilégié, même s'il peut en utiliser d'autres
Gestion de fichiers et répertoires

Systèmes de fichiers
Systèmes de fichiers: c’est une « subdivision du disque » dur
selon un certain format.
Gestion de fichiers et répertoires

Systèmes de fichiers Linux


• Ext2 : c'est le système de fichiers qui a longtemps été utilisé sous Linux. Il a été
développé par un français (Rémy Card) et présente la particularité de ne pas se
fragmenter. Ainsi, sous Linux et depuis longtemps, il n'y a pas besoin de faire de
défragmentation.

• Ext3 : est très proche de l'ext2, à une différence majeure près, la journalisation. En
effet, ext2 n'était pas journalisé, et en cas de crash disque on risquait plus
facilement une perte de données. Ce n'est plus le cas avec l'ext3.

Concrètement, un système de fichiers journalisé enregistre dans un journal (une


sorte de mémoire tampon) ce qui doit être écrit sur le disque dur. Au cas d’un crash
disque , il va vérifier le contenu du journal, si celui ci est plein, il va le transférer dans
le disque dur- donc évite la perte de données.

A noter que l'ext2 et l'ext3 sont parfaitement compatibles entre eux, dans un sens
comme dans l'autre.
Gestion de fichiers et répertoires
PARTITIONEMENT DISQUE DURE
Appellation des disques Dures

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

C:
Windows D:
E:

hda
Linux hdb
hdc
sda

Gestion de fichiers et répertoires

PARTITIONEMENT DISQUE DURE


Appellation des disques Dures
L’appellation "à la Linux" est un peu plus complexe que celle de Windows.
hd[a-d] #
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 ….

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

exemple: hda1 : 1er partition de disque dur hda


hdb10: 10ème partition de disque dur hdb
Gestion de fichiers et répertoires

Organisation des dossiers


•La racine

un "gros dossier de base qui contient tous les autres dossiers et fichiers".

Sous Windows, il y a en fait plusieurs racines. "C:\" est la racine de votre disque dur
Sous Linux, il n'y a qu'une et une seule racine : "/".

Architecture des dossiers


Sous Windows, un dossier peut être représenté comme ceci :
"C:\Program Files\Winzip".
Sous Linux : Il n'y a pas de "C:", la racine (le début) s'appelant juste "/".
Gestion de fichiers et répertoires

ARBORESCENCES DES FICHIERS

Le système de fichiers sur Linux est similaire à ce que l'on retrouve dans
Windows, i.e. une structure hiérarchique dont une racine et des répertoires qui
s'y rattachent.

Contrairement au système MS-DOS, qui contient plusieurs racine :A: ,C: ,D:
,…
Sous Linux, il y a une seule racine (root) :le slash "/" .
Par exemple, Le CD-ROM est atteint par le répertoire /cdrom.

Chaque Utilisateur possède un répertoire, dit de connexion (home directory),ou


il peut agir en toute liberté et y créer sa propre arborescence, par exemple:

/home/khalil/
Gestion de fichiers et répertoires

ARBORESCENCES DES FICHIERS

/ ( root)

bin
dev var
home tmp root lib

Plusieurs répertoire sont rattaché à la racine.


pippo khalil
ARBORESCENCES DES FICHIERS

/ : Répertoire Racine: contient les répertoires principaux.

/bin : (Commande de base du système) (contient des éxecutables essentiels au


système, employés par tous les utilisateurs ( par exemple, les commandes
ls,rm,cp,chmod,mount,… ).

 /etc :(contient les commandes et les fichiers nécessaires à l’administrateur du


sytème (fichiers passwd,group,inittab,ld.so.conf,lilo.conf…)/ fichiers de configuration de
l’ordinateur.

/ boot: (Images, fichiers de configuration du noyau ….) ( contient les fichires


permettant à Linux de démarrer).

/dev : (contient les points d’entrée des périphériques)

 /lib: (contient des bibliothèques partagées essentielles au système lors du


démarrage)/bibliotèques de base du systèmes ( partagées)
ARBORESCENCES DES FICHIERS

 /mnt : (contient les points de montage des partitions temporaires(cd-


rom,disquette…): /mnt/usbdisk/, /mnt/windows/…

/opt: (contient des pakages d’applications supplémentaires)/ ( outils spécifiques


installés par l’administrateur.

/root: (répertoire de l’administrateur root)

/tmp: (contient les fichiers temporaires)

/usr: (Hiérarchie secondaire)/ programmes utilisateurs ordinaires, non essentiels au


systèmes: /usr/lib, /usr/bin…

/sbin: (contient les binaires système essentiels (par exemple la commande


adduser)/programmes d’administration du système./ commandes réservées à
l’administarteur.

/home: (dossiers de travail des utilisateurs. Ex:/home/pippo)/ Répertoire utilisateur

/var: (données variables( dynamiques)


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
L’INVITE DE COMMANDES

pippo@localhost
P :~$
pippo : le premier élément est votre pseudonyme.

localhost : ça c'est le nom de l'ordinateur sur lequel vous êtes en train de travailler.
La ligne d'invite de commandes se lit donc ’pippo’ chez ‘localhost

: : c'est un séparateur.

~ :c'est le dossier dans lequel vous vous trouvez actuellement., le symbole ~


signifie que vous êtes dans votre dossier personnel, ce qu'on appelle le "Home"
sous Linux. C'est l'équivalent du dossier "Mes documents" de Windows.

$ : ce dernier symbole est très important, il indique votre niveau d'autorisation sur
la machine. Il peut prendre 2 formes différentes :

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

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


L’INVITE DE COMMANDES

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
LES PARAMETRES

Les paramètres sont des options que l'on écrit à la suite de la commande.

pippo@localhost :~$ Commande Paramètre

Exemples de paramètres:

pippo@localhost :~$ ls -a
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 ».
Raccourcis Utiles

:P
Effacer le contenu de la console .

:Message EOF( fin de fichier) à la console( possède la même fonction


que la commande « exit ».
:Ramène le curseur au début de la commande.

:Supprime tout ce qui est à gauche du curseur.

:Supprime tout ce qui est à droite du curseur.

:Supprime le dernier mots situé à gauche du curseur.


ARRET ET REDEMARRAGE DU SYSTEME

halt : permet d’arrêter le système. Reboot : permet de redémarrer le


système.

L’arrêt du système est une Il est égalment possible que votre


opération qui est du ressort de gestionnaire de bureau vous donne
l’administrateur. le moyen d’arrêter l’ordinateur par
On peut la realiser uniquement l’intermediare de l’interface
sur le compte root. graphique.
COMMANDES DE BASES : Répértoires

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)
« pour cacher un fichier sous linux, on le précède d’un « . »)

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


COMMANDES DE BASES : Répertoires

Commande ls

Les principales options:

 ls a («all»: tous) Affiche tous les ls S (“size”: taille) Affiche les fichiers les
fichiers (y compris les fichiers .*) 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 les
plus récents en premier. plus récents à la fin.

 ls d (directory) Affiche du nom du


répertoire et non de son contenu.
COMMANDES DE BASES : Répertoires

Commande cd

La commande cd( change directory) permet de changer le répertoire de travail .


( permet de naviguer dans les répertoires)

cd [réperoire]
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$
COMMANDES DE BASES : Répértoires

Commande cd

 cd : Permet de se placer dans le cd /usr/bin: A va dans le répertoire


répertoire personnel de l’utilisateur bin en écrivant tout l’arboresence.
(home)
 cd : une bonne astuce pour
 cd.. : Ramène dans le répertoire revenir dans le répertoire d’où vous
parent.( remonter d’un répertoire dans veniez précédemment.
l’arborescence)

 cd rep : va dans le répertoire rep


à partir du répertoire où vous êtes.
COMMANDES DE BASES : Répértoires

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 commençent toujours par la racine (/). Vous devez faire
ensuite la liste des dossiers dans lequels vous voulez entrer.
Opérations de base sur les répertoires
• Les chemins relatifs :Un chemin relatif est un chemin qui dépend du
dossier dans lequel vous vous trouvez.
Opérations de base sur les répertoires
Opérations de base sur les répertoires
Opérations de base sur les répertoires
• 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 sois dans /home/mateo21 et que je
souhaite aller dans /usr/games. Avec un chemin absolu :
Opérations de base sur les répertoires
• Les chemins absolus :
Opérations de base sur les répertoires
• Les chemins absolus et chemins Relatifs:

Ici, comme c'est un chemin relatif, on part du dossier dans lequel on se


trouve (/home/mateo21) et on indique à la machine le chemin à suivre à
partir de là pour aller dans le dossier qu'on veut.
Opérations de base sur les répertoires
• Retour au Repertoire home:

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


solutions s'offrent à vous :

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


COMMANDES DE BASES : Répertoires

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 etre utilisée lorsqu’on désire obtenir un chemin absolu sur le
répertoire courant.

Cette commande est également utilisée par les scripts pour déterminer le répertoire à
partir duquel ils sont exécutés.
COMMANDES DE BASES : Répertoires

Commande du

La commande du (disk usage « utilisation du disque ») : Affiche les informations


sur la taille qu’occupe les dossiers sur votre disque.

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

 du -h :Affiche la taille en Ko, Mo, Go.

 du –a : (du –ah) Affiche la taille des dossiers ET des fichiers.

 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, je le combine à –h)
COMMANDES DE BASES : Répertoires

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’éxiste pas.
Si l’un des répertoires intermedaires n’existe pas, la commande mkdir retourne un
code d’erreur (exit status) sans créer le status ( sauf si l’option –p est spécifiée)

mkdir [-p] nouveau_répertoire

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

On devra faire:~$ mkdir -p /tmp/ESTM/GI


COMMANDES DE BASES : Répertoires

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 (exit status). (Pour supprimer
un répertoire, il faut qu’il soit vide)
rmdir [-p] répertoire
-p : permet de détruire tous les sous –répertoires vides.

répertoire : représente le nom du répertoire à détruire. C’est un


argument obligatoire.
Exemple:
~$ rmdir /tmp/ESTM/GI
~$ cd /tmp
~$ rmdir –p /tmp/ESTM/GI
rmdir: ESTM/GI : Whole path removed Nota: voir aussi la commande:
~$ cd ESTM rm –r: pour supprimer des
ESTM : does not exist répertoires contenants des
~$ fichiers.
COMMANDES DE BASES : Gestions de Fichiers 1
Commande cp

La commande cp ( copy) permet de copier le contenu d’un fichier dans un autre.

cp [-i] [-p] fichier1 fichier2


cp [-i] [-p] [-r] source1 [source2...] répertoire

Si destination est un fichier


cp fichier1 fichier2 : Effectue une copie de fichier1 en un nouveau fichier
appelé fichier2.
 Si destination est un répertoire.
cp fichier1 repertoire : Effectue une copie de fichier1 dans le répertoire
appelé repertoire.
cp fichier1 fichier2 fichier3… repertoire : Copie 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.
Si cp-p fichier1 fichier2 : (p : preserve) Copier le fichier1 en préservant tous les
attributs du fichier initial.
COMMANDES DE BASES : Gestions de Fichiers 1

Commande mv

La commande mv( move) : déplace ou renomme les fichiers.

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

mv déplace les fichiers fichiers 1,fichiers 2, etc dans destination.

 Si destination est un fichier -> alors mv a pour action de renommer fichier1 en


destination.
mv fichier1 fichier2

 Si destination est un répertoire -> alors mv déplace fichier1 dans ce repertoire.

mv fichier1 repertoire.

 mv -i : (i:interactif) Demande de confirmation avant l’écrasement du fichier.


COMMANDES DE BASES : Gestions de Fichiers 1
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.


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 écrasement


COMMANDES DE CONSULTATIONS : Fichiers 2
Commande cat

La commande cat (catenate « concaténer »: joindre des ficiers


séquentiellement) : Affiche des fichiers et /ou concatène les fichiers spécifiés sur
la ligne de commande.

cat [fichier...]

Quand elle est appelée sans options e sans nom de fichier, la commande cat répète
sur la sortie standard ce qui est saisi sur l’entrée standard.

Exemple:

~$ cat Fruits
banane
Cerise
Orange
COMMANDES DE CONSULTATIONS : Fichiers 2
Commandes more / less

La commande more : Affiche des fichiers page par page .

more [fichier...]

La commande less : Sa fonction est similaire à la commande more « Affiche des


fichiers page par page », mais elle permet en plus :

1- de revenir en arrière avec une page de moins en tapant « b »

2- de se déplacer vers le haut ou vers le bas avec les flèches de directions


less [fichier...]
Commandes de consultation de fichiers
• cat nom_fichier : afficher le contenu d'un fichier texte à l'écran
(sans pouvoir arrêter le défilement)
• more nom_fichier : afficher le contenu d'un fichier texte à l'écran
en arrêtant le défilement à chaque page (espace pour descendre
d'une page, entrée pour descendre d'une ligne, q pour quitter)
• less nom_fichier : pareil que more, mais dispose d'un peu plus
d'options (entre autre peut revenir en arrière : b pour revenir d'une
page, y pour revenir d'une ligne, il est aussi possible de se déplacer

vers le haut ou vers le bas avec les flèches de direction)


COMMANDES DE CONSULTATIONS : Fichiers 2
Commandes head / tail

La commande head : Affiche les n premières lignes d’un fichier, alors qu 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...]

 -n :Nombre de lignes à afficher depuis le début / la fin de fichier .( - n


suivi du nombre de lignes, par exemple –n 3)
Commandes de consultation de fichiers

• head nom_fichier : afficher uniquement le début du fichier.

-n suivi d'un nombre: permet d'afficher le nombre de lignes que vous


voulez.

Par exemple, si vous ne voulez que les 3 premières lignes, tapez :

head –3 nom fichier

• tail nom_fichier : afficher uniquement la fin du fichier

• tail nom_fichier : afficher uniquement la fin du fichier

• sort nom_fichier : Tri par ordre alphabétique des lignes d'un fichier
texte.
COMMANDES DE CONSULTATIONS : Fichiers 2
Commande touch

La commande touch : est utilisée pour changer les dates d’accès et de


modifications d’un fichier ( d’où le « on touche »le fichier pour faire croire à
l’ordinateur qu’on vient de le modifier alors qu’on n’a rien changé.
Commandes de gestion de fichiers

• touch nom_fichier : créer un ficher texte vide


• rm nom_fichier : supprimer un ficher (rm pour remove)
• rm -i nom_ficher : supprimer un fichier avec demande
de confirmation (i pour interactive)
• rm -r nom_répertoire : supprimer un répertoire et tout
ce qu'il contient (r pour recursive)
• mv fichier_source fichier_destination : renommer ou
déplacer un fichier (mv pour move)
• mv -i fichier_source fichier_destination : renommer ou
déplacer un fichier avec demande de confirmation si un
fichier porte déjà le nom du fichier destination (i pour
interactive)
Système de fichiers

Sous les systèmes UNIX tout élément est représenté sous forme de fichier.
(Un périphérique, un écran, une imprimante, un répertoire…. TOUT EST FICHIER)
Un répertoire est un fichier qui contient la liste des fichiers sensés être stockés dans
ce répertoire.
L'ensemble des fichiers est architecturé autour d'une unique arborescence dont la
base, appelée racine, est notée «/».
La liste des noms de fichiers est stockée à un autre endroit que leur
contenu.

Chaque contenu de fichier se voit attribuer un numéro d'identification appelé


inode.
COMMANDES Gestions de Fichiers
Inodes
A tout fichier est associé une structure de données ( sur le disque)
appellée Inode ( Information node).

Dans chaque inode se trouvent différentes informations:


Type de fichier ( fichier standard, lien symbolique, répertoire…)
Les droits d’accès ( utilisateurs, groupes, …)
Le proprietaire (UID)
Le groupe proprietaire ( GID)
Taille du fichiers en octets
Dates

Pour connaître le numéro d'inode d'un fichier, vous devez taper la


commande suivante :
ls –i nom_du fichier

• ls –li :permet d’afficher, pour chaque fichier, le numéro d’inode.


• ls –ali :permet de voir en plus des fichiers ( et les fichiers
cachés)
COMMANDES Gestions de Fichiers
Inodes

Un fichier est repéré de manière unique par:

 le système de fichier auquel il est attaché


Son inode
COMMANDES DE GESTIONS DE FICHIERS
Liens Physiques/ Liens Symboliques/
Un lien est un couple ( nom_de_fichier, numéro d’inode).
On peut créer 2 type de liens:

Liens Physiques ( hard link) Liens Symboliques ( soft link)


•Création d’un nouveau nom pour le • c’est des fichiers spécial contenant le
même inode. chemin d’accès à un autre fichier (
correspond aux « raccourcis » de
•Impossible de faire un lien physique vers Windows).
un répertoire
• Création d’un nouvel inode de type lien
•Impossible de faire un lien physique vers symbolique.( -> possède sa propre inode)
un autre volume (partition)
•Le bloc de données contient une chaine de
caractères représentant le chemin (relatif
ou absolu) vers un fichier.
COMMANDES DE GESTIONS DE FICHIERS
Commandes ln

La commande ln : permet de créer des entrées multiples dans l’arborescence d’un


système de fichiers pour un même fichier. ( permet de créer des liens entre fichiers).

Sans option, elle permet de créer des liens physiques.


ln Nom-fichier Nom_du_lien_hard

Avec l’option –s elle permet de créer des liens symboliques


ln -s Nom-fichier Nom_du_lien_soft
.
Rappel:
Pour supprimer un lien
rm Nom_du_lien
Exemple : (différence entre liens physique et liens symboliques
1. Création d’un Répertoire TEST
2. .Une fois dans le dossier tests, créer un fichier « fichier » vide de 0bytes
3. Créer un lien physique « lien_pyh», qui partagera le même inode (le même contenu) que « fichier»
4. Créer un lien symbolique « lien_sym », en pointant vers le nom du « fichier »( et non vers l’inode).

1ère colonne de la commande ls indique : numéro inode.


3 ème colonne: le nombre de liens dures( nombre de fichiers partageant le même
inode)
6 éme colonne: dimension du fichier ( on remarque que le lien symbolique est un
fichier sur le disque de 7bytes.
COMMANDES DE GESTIONS DE FICHIERS
Exemple : (différence entre liens physique et liens symboliques

Le fichier d’origine et le lien ont le même type de fichier « fichier régulier »


indiqué par le tiret en tête des permissions, alors que le liens symbolique a
un type différent (l: « lien »).

Le fichier d’origine et le lien physique ont le même horodatage( alors que le


lien symbolique affiche l’heure et la date de sa création.

Enfin on remarque, à la fin de la ligne du lien symbolique, une flèche en


direction du chemin du fichier vers le lien dur.
COMMANDES DE GESTIONS DE FICHIERS
Liens Physiques/ Liens Symboliques/

Schéma qui permet de comprendre les liens symboliques et les liens


physiques.
COMMANDES DE GESTIONS DE FICHIERS
Liens Physiques/ Liens Symboliques/

Liens physiques:

 Bien qu’ils économisent toujours de la place, les liens physiques sont

indiscernables des fichiers d’origine.

Si vous supprimer le fichier d’origine, cela n’affecte pas le contenu du lien
physique.

Le contenu est supprimé quand il n’y a plus aucun fichier ( lien physique) qui y
fait référence.

Liens Symboliques

 La suppression du fichier, ne supprime pas le fichier référencé par le lien !


Commandes de gestion de fichiers

• ln fichier_existant lien : créer un lien dur entre


les deux fichiers (ln pour link)

• ln -ds répertoire_existant lien : créer un lien


symbolique entre les deux répertoires (d pour
directory)

• ln -s fichier_existant lien : créer un lien


symbolique entre deux fichiers (s pour
symbolic)
COMMANDES DE RECHERCHE: Fichiers 3
Commandes find

La commande find : Permet de rechercher des fichiers dans l’arborescence à


partir du point spécifié.( recherche des fichiers dans une hiérarchie de répertoires. )
Commandes de recherche
find recherche les fichiers actuellement présents
La commande find s'utilise de la façon suivante :
find "où" "quoi" "que faire avec«

(seul le paramètre "quoi" est obligatoire)


• Où : c'est le nom du dossier dans lequel la commande va
faire la recherche. Tous les sous-dossiers seront
analysés.
• Quoi : c'est le fichier à rechercher. On peut rechercher
un fichier par son nom, mais aussi en fonction de sa date
de dernière création, de sa taille, etc.

• Que faire avec : il est possible d'effectuer des actions


automatiquement sur chacun des fichiers trouvés .
Par défaut, la commande find affiche les résultats
trouvés et ne fait rien d'autre avec.
Commandes de recherche
• 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


70

Recherche de fichiers et de
répertoires
• Options des sélection des fichiers et répertoires
▫ name : recherche par nom de fichier
▫ type : recherche par type de fichier
▫ user : recherche par propriétaire
▫ group : recherche par l’appartenance à un groupe
▫ size : recherche par taille de fichier
▫ atime : recherche par date de dernier accès
▫ mtime : recherche par date de dernière modification
▫ ctime : recherche par date de création
▫ perm : recherche par autorisations d’accès
▫ links : recherche par nombre de références (links) aux fichiers
71

Recherche de fichiers et de
répertoires
• Option de commande
▫ Les options de commande seront traitées pour chaque fichier
trouvé. En dehors de l’option –print qui montre le chemin
d’accès au fichier, on peut mettre en place l’option -exec

▫ Les commandes dont il est fait état derrière –exec seront


exécutées sans aucune demande de confirmation

▫ L’option –ok demande à l’utilisateur si la commande doit


effectivement être exécutée.
72

Recherche de fichiers et de
répertoires
• Traitement sans confirmation avec –exec
• La spécification d’une commande derrière –exec est
soumise à certaines règles:
▫ L’option –exec doit être la dernière de la commande
find
▫ La commande placée derrière –exec doit être
terminée par le paramètre « ; ». Comme c’est un
caractère spécial, il doit être masqué par un \
73

Recherche de fichiers et de
répertoires suivi de –exec

• Pour accéder à un des fichiers trouvés, dans le


cadre de la commande placée derrière –exec,
utilisez le raccourci {}

 Exemple
• find . –user student –exec ls –l {}\; ( affiche le
format long de la commande ls pour les fichiers trouvés)

• find . –type f –atime +13 –exec rm {} \; (supprime


les fichiers auxquels vous n’avez plus accédé depuis plus
de 2 semaines)
74

Recherche de fichiers et de
répertoires
• Traitement après confirmation avec –ok
▫ Les mêmes explications s’appliquent également à
l’option –ok, mais celle-ci, demande une
confirmation d’exécution de la commande pour
chaque fichier trouvé. Ce n’est qu’en cas de réponse
affirmative (avec y), que la commande placée
derrière –ok sera exécutée.

▫ Exemple :
 find . –ok rm {} \;
Critères de recherche de noms de
fichiers
• Modèles de noms de fichier
▫ * : remplace une chaîne vide ou de longueur variable
▫ ? : remplace un caractère unique quelconque
▫ [] : représente une série ou une plage de caractère
▫ [!…] : inverse la recherche
• Exemples
▫ a* : les fichiers dont le nom commence par a
▫ a?? : fichiers en trois lettres, commençant par a
▫ [aA]* : fichiers dont le nom commence par un a minuscule ou A majuscule.
▫ [a-m]* : fichiers dont le nom commence par une lettre de la plage a-m.
▫ *[1-5] : fichiers dont le nom se termine par un chiffre de la plage 1 à 5.
Archiver et compresser
Compression avec gzip et bzip2
• La compression d'un fichier se fait de manière suivante:
gzip fichier
• gzip renomme le fichier compressé en « fichier.gz ».

• La compression d'un fichier avec bzip2 utilise la même


syntaxe : bzip2 fichier
• bzip2 renomme le fichier compressé en « fichier.bz2 ».
• La décompression d'un fichier se fait à l'aide de la
commande suivante :

• gunzip fichier.gz
ou
• bunzip2 fichier.bz2
gzip et bzip2 ne permettent de compresser qu'un seul fichier à la fois.
tar : assembler des fichiers dans une archive
• tar : permet d'assembler des fichiers dans un seul fichier avant de les
compresser.
1. Pour réunir les fichiers dans un seul gros fichier appelé archive.

 On utilise pour cela le programme tar.

2. Compresser le gros fichier ainsi obtenu à l'aide de gzip ou de bzip2.


• La syntaxe de tar est très simple :
tar options archive [fichiers]

 cvf pour créer une archive ;


 tvf pour lister le contenu d'une archive ; (comme ls pour les
répertoire)
 xvf pour restaurer le contenu d'une archive
Pour archiver le contenu du répertoire courant dans le fichier :
archive.tar tar cvf archive.tar * :
tar : assembler des fichiers dans
une archive
• La commande tar ne compresse pas automatiquement
les fichiers. Vous pouvez compresser les fichiers tar
avec :
▫ tar -czvf foo.tar
 Les fichiers tar compressés se voient attribuer
l'extension .tgz et sont comprimés avec gzip.
• Pour décompresser un fichier tar, entrez :

▫ tar -xzvf foo.tgz


Gestion de Droits des
fichiers et répertoires
Exemple d'affichage de droits
Affichage des caractéristiques: ls -l

Type : ‘d’ pour les repertoire


‘-’ pour les fichiers
Permissions d'accès aux fichiers
• Les droits d'accès sont scindés en trois catégories
d'utilisateurs:

 les droits du propriétaire (user)


 les droits des membres du groupe (group)
 les droits de tous les autres (other)
Pour chaque catégorie, on peut attribuer les droits
suivants:
▫ la lecture ("read", r);
▫ l'écriture ("write", w);
▫ l'exécution ("execute", x).

• Si à la place d'un des caractères nous ne voyons qu'un


tiret "-", c'est que le droit n'est pas autorisé.
Permissions d'accès aux fichiers
Le changement des droits
• chmod : changer les droits d'accès d'un fichier (il faut
être root ou propriétaire du fichier)
• On utilise les signes (+ et -):
+ pour ajouter un droit,
- pour en enlever un,
Suivi des lettres r, w, x (lecture, écriture, exécution):
Exemple :
chmod -w nom_fichier : enlever les droits d'accès en
écriture sur le fichier pour tout le monde
Le changement des droits (suite)
Pour appliquer les changements seulement à certains
"niveaux d'appartenance", il faut utiliser :
-u pour user (propriétaire du fichier),
- g pour group
- o pour other (tous les autres)
-Exemple :
chmod ug +wx nom_fichier : ajouter, pour le
propriétaire et les membres du groupe, les droits en
écriture et en exécution sur le fichier
86

Modification des droits d’accès


• Vous pouvez utiliser des +, - ou = pour ajouter,
supprimer ou fixer des droits à l'une ou l'autre des
catégories u, g, o ou a tous (a) en précisant le type de
droit d'accès, r, w ou x.

▫ chmod g+w fic1


▫ chmod o-x rep
▫ chmod u+rx,g-w fic2
▫ chmod u=rwx,g=rx fic
▫ chmod a+r fic
87

Modification des droits d’accès


* Si le changement de droits s'applique à un répertoire,
vous pouvez changer tous les droits des fichiers et
répertoires inclus dans ce répertoire via l'option -R.

Exemple:

* Si nous souhaitons définir d'un seul mouvement toutes


les permissions d'un fichier :

chmod u=rwx,g=rw,o=r linux-test


Le changement des droits
Il existe une autre façon d'indiquer les permissions :

• On utilise un nombre de 3 chiffres en octale ie compris


entre 0 et 7 :

▫ le 1er pour le-la propriétaire


▫ le 2e pour les membres du groupes, et
▫ le 3e pour tous les autres). Les chiffes veulent dire :
Le changement des droits
90

Modification des droits d’accès

chmod nombre_en_base_8 fichier1 [fichier2 …]

• chmod utilise le codage binaire, fondé sur


l'association de valeurs numériques aux différentes
permissions :

▫ lecture : 4,
▫ écriture : 2,
▫ exécution : 1,
▫ pas de permission : 0.
91

Modification des droits d’accès

• Chaque triplet se code par l'addition de 4, 2, 1, ou


0.
▫ Pour un rwx il faudra ajouter 4+2+1=7,
▫ pour r-x il faudra 4+0+1=5 etc.

• La commande chmod permettant de positionner


rwxr-x--- sur fic1 par la commande suivante :
chmod 750 fic1
Exercices sur les droit d’accés :
Soient les fichiers fich1 , fich2, fich3 et le répertoire REP1 qui contient
deux autre fichiers f_rep1 et f_rep2
1- en utilisant (r,w,x) et { -, +,= } :
1.a- Attribuer les droits en lecture/ écriture pour le propriétaire et
en lecture seule pour le groupe et le reste de monde sur les fichiers
fich1 et fich2
1.b- Attribuer les droits d’exécution sur fich3 pour le groupe seul
1. c- Attribuer les droits en lecture/ execution pour le propriétaire
et en écriture seule pour le groupe sur REP1 et ses fichiers
2 – Refaire les questions ( 1.a , 1.b et 1.c ) en utilisant les chiffres en
base octale
93

Valeur par défaut des droits d’accès


umask nombre_en_base_8
Exemple umask 006
• Par défaut Unix affecte les droits max sur les fichiers
normaux et les répertoires :
▫ Rép 777 (rwxrwxrwx)
▫ Fichier normal 666 (rw-rw-rw-)
• Les droits effectifs sont obtenus par :
droits_max - masque
• Exemple
▫ Si on souhaite un accès en lecture/écriture pour le
propriétaire et en lecture seule pour le groupe et le reste
de monde,  umask 022
L'éditeur vi
• Lançons Vi :
[root@mistra /root]# vi

• vi comprend deux modes : un mode "commande" et un mode


"insertion", après le lancement de vi nous sommes en mode
commande : appuyez sur la touche "Echap" puis sur "a". Vous
voyez en bas de l'écran apparaître la ligne "-- INSERT --". Nous
pouvons commencer notre texte :

• Nous sortons du mode texte en appuyant à nouveau sur la touche


"Echap". La mention "-- INSERT --" disparaît, nous sommes en
mode commande

• Tapez maintenant " :w linux-test"

• Si vous souhaitez quitter sans enregistrez les dernières


modifications, passer en mode commande et taper " : q!".

• Si vous souhaitez quitter sans enregistrez les dernières


modifications, passer en mode commande et taper " :w q!".
L'éditeur vi
• D'autres commandes vi.
A permet d'ajouter du texte à la fin de la ligne.
i permet d'ajouter du texte avant le curseur.
o permet d'ajouter une ligne en dessous du curseur.
O permet d'ajouter une ligne au dessus du curseur.
le retour chariot permet d'aller à la ligne suivante.
dd permet de supprimer la ligne courante.
X permet de supprimer le caractère avant le curseur.
u permet d'annuler la dernière commande effectuée
Extraire, trier et filtrer des
données
grep : filtrer des données
rechercher dans un fichier texte le mot voulu et
affiche la ligne où il se trouve
• Syntaxe : grep [option] modèle_de_critères [fichier1 …]
• Les options du grep les plus utiles sont :
▫ i : pour ne pas tenir compte des majuscules/minuscules,
▫ v : toutes les lignes ne contenant pas le critère,
▫ n : pour avoir les numéros de ligne,
▫ E : pour les expressions régulières plus compliquées,
▫ c : la commande ne retourne que le nombre de lignes
trouvées
▫ r : rechercher dans tous les fichiers et sous-dossier
grep : filtrer des données
• Le modèle de critères peut contenir les caractères
spéciaux suivants :
▫ […] : Plage de caractères permis à cet emplacement
▫ [^…] : Plage de caractères interdits à cet emplacement
▫ .: Un caractère quelconque (y compris un espace)
▫ * : Signe de répétition. Agit sur le caractère placé
devant le *
▫ $ : Matérialise une fin de ligne
▫ | : ou
▫ ^ : début de ligne
▫ \{…\} : Caractère de répétition, entre les accolades
 \{nombre\} nombre exacte
 \{nombre,\} nombre minimum
 \{nombre1,nombre2\} de nombre1 à nombre2
Commandes de recherche
• grep mot nom_fichier : rechercher dans un fichier texte
le mot voulu et affiche la ligne où il se trouve
• grep -l mot nom_fichier : rechercher dans un ou
plusieurs fichiers texte le mot voulu et affiche le nom des
fichiers qui contiennent le mot (utile pour une recherche
sur plusieurs fichiers, voir caractères génériques en fin
de liste)
• grep -c mot nom_fichier : donne le nombre de fois où le
mot voulu a été rencontrée dans le fichier.
• grep -v mot nom_fichier : renvoie dans la sortie
standard le contenue de ‘‘nom_fichier’’ excepté des ligne
où se trouve la chaine de caractère ‘’mot’’
• grep -n mot nom_fichier : renvoie dans la sortie
standard les numéro des ligne où se trouve la chaine de
caractère ‘’mot’’ dans le fichiers ‘‘nom_fichier’’
• grep –i text fichiers : rechercher sans distinguer entre le
majuscule et le minuscule
grep : filtrer des données
▫ liste des lignes commençant par ! Dans le fichier fichier1 :
grep "^!" fichier1

▫ recherche de STOP avec le numéro de la ligne :


grep -n -i stop fichier1

▫ liste des lignes contenant "image" ou "son" dans tous les fichiers du
répertoire courant :
grep -E "(image|son)" *

▫ Liste des lignes contenant un nombre compris entre 0 et 4 :


grep -E [0 4] fichier1

▫ Liste des lignes contenant "alias" ou "Alias" :


grep -E [Aa] lias fichier1
Commande de trie des lignes Sort

La commande sort : Trie les lignes du fichier par ordre alphabétique.

sort [fichier...]

Mais les options suivantes modifient les critères:

 sort –r Fichier : (« reverse »:inverse) trie les lignes du fichier en


ordre inverse.

sort –n Fichier : Effectue un trie numérique.


sort : trier les lignes
• sort nom_fichier : Tri par ordre alphabétique des lignes
d'un fichier texte.
• -o : écrire le résultat dans un fichier
• -r : trier en ordre inverse
• -n : trier des nombres
• -t :définit le caractère séparateur
• -u :n'affiche qu'une seule ligne quand plusieurs lignes sont
identiques
• -k :indique la position de la clé de tri (numéro à partir de 1)
Exemple:
sort -n -t":" -k 3 /etc/passwd
wc : compter le nombre de lignes
• Affiche le nombre de lignes, de mots et d’octets
d’un fichier

• -l : compter le nombre de lignes


• -w : compter le nombre de mots
• -c : compter le nombre d'octets
• -m : compter le nombre de caractères
uniq : supprimer les doublons

• Supprimer les lignes en double dans un


fichier.(nous devons travailler sur un fichier trié )

• -c : compter le nombre d'occurrences

• -d : afficher uniquement les lignes présentes en


double
cut : couper une partie du fichier
• Couper selon le nombre de caractères
Soit le fichier noms.txt contenant

1. Pour conserver uniquement les caractères 2 à 5 de

2. Pour conserver du 1er au 3ème caractère :

3. pour conserver du 3ème au dernier caractère :


cut : couper une partie du fichier
• Couper selon un délimiteur
Soit le fichier notes.csv suivant :
Ces colonnes contiennent, dans l'ordre :
Le prénom
La note
Un commentaire

nous souhaitons extraire de ce fichier la liste des prénoms.


-d : indique quel est le délimiteur dans le
fichier
-f : indique le numéro du ou des champs à
couper

Pour avoir les champs n°1 et n°3 (le prénom et commentaire) :


La commande split

• Cette commande permet de découper un


fichier en plusieurs morceaux.

• Syntaxe: split -n fichier fichiers_resultat

• Exemple: split -10 exemple petitfichiers

• Cette exemple va créer les fichiers petit fichiers aa, ab, ac, …

contenant le contenu du fichier exemple par tranche de 10 lignes.


La commande comm
La commande comm permet d'extraire les lignes
communes et les lignes uniques de 2 fichiers
préalablement triés.
􀂄 Syntaxe: comm [-123] fichier1 fichier2
􀂄 Exemple:

$ comm -12 carnet1 carnet2


marcel:13:0466342233:Marseille
13 les lignes uniques
La commande diff
Cette commande permet de rechercher des différences entre 2
fichiers.
Syntaxe: diff -options fichier1 fichier2
- Exemples d'options:
-b ne pas tenir compte des différences concernant des espaces
blancs
-B ne pas tenir compte des différences concernant des lignes
blanches

􀂄 Exemple:
$ diff carnet1 carnet2

< maurice:29:0298334432:Crozon
< robert:75:0144234452:Paris
---
> myriam:30:0434214452:Nimes
> olivier:29:0298333242:Brest
La commande de sed
sed est éditeur ligne non interactif, il lit les lignes d’un fichier une à une (ou
provenant de l’entrée standard) leur applique un certain nombre de
commandes d’édition et renvoie les lignes résultantes sur la sortie standard.

Il ne modifie pas le fichier traité, il écrit tout sur la sortie standard.

Syntax sed -e ‘’programme sed’’ fichier-a-traiter


ou
sed -f fichier-programme fichier-a-traiter

sed va écrire uniquement les lignes concernées par le traitement (sinon il


écrit tout même les lignes non traitées).

L’option -e n’est pas nécessaire quand on a une seule fonction d’édition.

sed est une commande très riche (pour plus de détails man sed)
La commande de sed
La fonction de substitution : s

• s permet de changer la 1re ou toutes les occurrences d’une chaîne par une
autre.
• Syntaxe :
• sed "s/toto/TOTO/" fichier va changer la 1re occurrence de la chaîne
toto par TOTO

• sed "s/toto/TOTO/3" fichier va changer la 3 me occurence de la chaîne


toto par TOTO

• sed "s/toto/TOTO/g" fichier va changer toutes les occurences de la


chaîne toto par TOTO

• sed "s/toto/TOTO/p" fichier en cas de remplacement imprime les lignes


concernées

• sed "s/toto/TOTO/w resultat" fichier en cas de substitution la ligne en


entrée est inscrite dans un fichier résultat
La commande de sed

• La fonction de substitution peut être utilisée avec une expression

régulière.

sed -e "s/[Ff]raise/FRAISE/g" fichier substitue toutes les chaînes

Fraise ou fraise par FRAISE


La commande de sed
La fonction de suppression : d

• La fonction de suppression d supprime les lignes comprises dans un


intervalle donné.

• Syntaxe : sed "20,30d" fichier : Cette commande va supprimer les lignes


20 à 30 du fichier fichier. On peut utiliser les expressions régulières :
▫ sed "/toto/d" fichier : supprime les lignes contenant la chaîne toto
▫ sed "/toto/!d" fichier : supprime toutes les lignes ne contenant pas la
chaîne toto

• En fait les lignes du fichier d’entrée ne sont pas supprimées, elles le sont au
niveau de la sortie standard.
La commande de sed
Les fonctions : p, l et=

• p (print) affiche la ligne sélectionnée sur la sortie standard. Elle invalide


l’option -n.
• l (list) affiche la ligne sélectionnée sur la sortie standard avec en plus les
caractères de contrôles en clair avec leur code ASCII (deux chiffres en
octal).
• = donne le num de la ligne sélectionnée sur la sortie standard.
• Ces trois commandes sont utiles pour le débogage, (mise au point des
programmes sed)

• sed "/toto/=" fichier : afficher le numéro de la ligne contenant la chaîne


toto.
Autres commandes utiles
 les alias ( commande alias)
Syntaxe : $ alias nom_alias=‘commande’

Exemple : alias liste=‘ ls –lrt’

 le type de fichiers ( commande file )

Syntaxe : file nom_fichier


Mécanismes de redirection et de
Tube(’ <’ , ‘<<‘, ‘>,’>>, ’|’’ pipe
et double pipe ‘||’).
> et >> : rediriger le résultat dans un fichier
• > : rediriger le résultat de la commande dans le fichier de votre
choix

« > » (appelé chevron) redirige la sortie de la commande dans un


fichier appelé "eleves.txt" qui vient d'être créé

Attention : si le fichier existait déjà il sera écrasé sans


demande de confirmation !
• Le double chevron >> sert lui aussi à rediriger le résultat dans un
fichier, mais cette fois à la fin de ce fichier.
2>, 2>> et 2>&1 : rediriger les erreurs
• les commandes produisent 2 flux de données différents :
La sortie standard : pour tous les messages (sauf les erreurs).
La sortie d'erreurs : pour toutes les erreurs.
2>, 2>> et 2>&1 : rediriger les erreurs

• Il est aussi possible d'utiliser 2>> pour ajouter les erreurs à la fin du
fichier

2>&1 : redirige les erreurs au même endroit et de la même façon que


la sortie standard.

il n'est pas possible d'écrire : 2>>&1

Exemple :
cut –d , -f 1 fichiers_inexistant.csv>>eleves 2>$1
< et << : lire depuis un fichier ou le clavier

La console vous propose alors de taper du texte.


écrire des nombres, un par ligne (en appuyant sur la
touche Entrée à chaque fois
Lorsque vous avez fini, tapez FIN pour arrêter la saisie.

Le mot FIN est-il obligatoire ?


vous pouvez utiliser le mot que vous
voulez. Par exemple :
Un tube (pipe) | : chaîner les commandes
• Un tube permet d’établir une liaison directe entre la sortie d'une
commande et l'entrée d'une autre commande.

On peut écrire cette liste triée dans un fichier :


Un tube (pipe) | : chaîner les commandes (2)
Exemple : intérêt des |
cd source
tar cvf archive.tar *
cd destination
tar xvf source/archive.tar
rm source/archive.tar

Malheureusement, cette technique nécessite beaucoup de place disque, puisque


l'archive temporaire est stockée directement sur disque. De plus, elle est assez lente,
car toutes les données à copier sont recopiées sur le disque dur, et relues ensuite,
pour finalement être détruites..
La solution est de réaliser un tube entre les deux processus tar invoqués.
Dans ce cas, le transfert se fait simplement via la mémoire vive :
cd source
tar cvf * | (cd destination ; tar xvf -)
Cette commande est un peu plus compliquée,
car la commande d'extraction des fichiers nécessite un changement de répertoire.
Il faut donc utiliser une commande multiple du shell.
Ces commandes sont constituées de plusieurs autres commandes séparées par des points virgules.
La première commande effectuée ici est le changement de répertoire, et la deuxième est
l'extraction par tar de l'archive qui lui est transférée par le flux d'entrée standard (représenté ici
par '-'). Ces deux commandes sont mises entre parenthèses, car l'opérateur '|' du tube est
prioritaire sur l'opérateur ';' de concaténation des commandes du shell.
, la commande qui utilise le tube consomme deux fois moins d'espace disque et est deux fois plus
rapide que la commande qui n'en utilise pas.
Automatisation
de tâches
date : régler l'heure

Personnaliser l'affichage de la date

Modifier la date

Attention, il faudra être root pour modifier la date


Automatisation de tâches

• Effectuer de tâches à des temps différés:


De manière répétitive (commande crontab)
Ponctuellement (commande at)
Ces tâches peuvent de toute nature (sauvegarde, ...) et sont souvent
décrites dans des scripts shell.
La commande at
•La commande at exécute une commande à un moment donnée.

• Exemple:
La création du répertoire « docs » dans votre répertoire à 15h30

$ at 1530 //le moment d’exécution


at> mkdir /home/<moncompte>/docs // la commande à executer
at> <Ctrl^D> // pour finir

•Si je veux exécuter la commande demain à 14h17

•Et si je veux exécuter la commande le 15 novembre à 14h17


Exécuter une commande après un certain délai
• pour exécuter la commande dans 5 minutes :

ce qui signifie "Dans maintenant (now) + 5 minutes".

exécutera les commandes


dans 2 semaines

Les mots-clés utilisables sont les suivants :


• minutes
• hours (heures)
• days (jours)
• weeks (semaines)
• months (mois)
• years (années)
atq et atrm : lister et supprimer les jobs
en attente
􀂄 atq
Visualisation de ses tâches en attente ou de toutes les
tâches en attente pour l'administrateur.

􀂄 atrm num
Destruction d'une tâche en attente (num est le numéro de la tâche à
supprimer obtenu grâce à la commande atq).
Ecriture d'une crontab 1/2
 L'utilisateur doit écrire une "crontab" pour décrire les tâches qu'il souhaite
automatiser.

 Le format d'une "crontab" est une commande par ligne; une ligne est
composée de:

minute heure jour_mois mois jour_semaine commande

minute: 0-59
heure: 0-23
jour_mois: 1-31
mois: 1-12
jour_semaine: 0-6 (0 = dimanche)

 Pour visualiser sans écrire dans le contab on tape : crontab –l

 Pour éditer et écrire dans le contab on tape : crontab –e


Ecriture d'une crontab (2/2)
Exemples
Chacun des exemples enregistre l'espace disque libre (commande df) dans le
fichier /tmp/df.log à des horaires différents. Afin de conserver l'historique, ces exemples
utilisent la redirection >> qui permet d'ajouter les nouvelles données à la fin du fichier (si
celui-ci existe déjà).
Tous les jours à 23h30 : 30 23 * * * df >> /tmp/df.log

Toutes les heures, passées de 5 minutes : 5 * * * * df >> /tmp/df.log

Tous les premiers du mois à 23h30 : 30 23 1 * * df >> /tmp/df.log

Tous les lundis à 22h28 : 28 22 * * 1 df >> /tmp/df.log

Tous les vendredis et tous les 13 de n'importe quel mois à 11h22 :

: 22 11 13 * 5 df >> /tmp/df.log
Les processus

Définition
Un processus représente à la fois un programme en cours
d'exécution et tout son environnement d'exécution (mémoire, état,
identification, propriétaire, père ...)

important : dans les système Unix l’identifiant de processus est le PID


Voici une liste des données d'identification d'un processus :

Un numéro de processus unique PID (Process ID) : chaque processus Unix est
numéroté afin de pouvoir être différencié des autres

Un numéro de processus parent PPID (Parent Process ID) : chaque processus


peut lui-même lancer d'autres processus, des processus enfants (child process).
Chaque enfant reçoit parmi les informations le PID du processus père qui l'a lancé

Un numéro d'utilisateur et un numéro de groupe : correspond à l'UID et au GID


de l'utilisateur qui a lancé le processus. C'est nécessaire pour que le système
sache si le processus à le droit d'accéder à certaines ressources ou non. Les
processus enfants héritent de ces informations.

Durée de traitement et priorité : la durée de traitement correspond au temps


d'exécution écoulé depuis le dernier réveil du processus

Répertoire de travail actif : A son lancement, le répertoire courant (celui depuis


lequel le processus a été lancé) est transmis au processus. C'est ce répertoire qui
servira de base pour les chemins relatifs.
Les Etats d’un processus
• Durant sa vie (temps entre le lancement et la sortie) un processus peut
passer par divers états ou process state :

 Exécution en mode utilisateur (user mode)


 Exécution en mode noyau (kernel mode)
 En attente E/S (waiting)
 Endormi (sleeping)
 Prêt à l'exécution (runnable)
 Endormi dans le swap (mémoire virtuelle)
 Nouveau processus
 Fin de processus (Zombie)
ps : liste des processus statique
• ps :permet d'obtenir la liste des processus qui tournent au
moment où vous lancez la commande

• PID : c'est le numéro d'identification du processus. Chaque processus


a un numéro unique qui permet de l'identifier.
• TTY : c'est le nom de la console depuis laquelle a été lancé le
processus.
• TIME : la durée d'exécution du processus.
• CMD : le programme qui a généré ce processus.

ps sans arguments affiche seulement les processus


lancés par le même utilisateur
ps : liste des processus statique
• ps –ef :permet d’obtenir la liste de tous les processus lancés par
tous les utilisateurs sur toutes les consoles

Exemple

$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0.0 Aug 11 ?? 0:01.87 /sbin/init -a
root 3 1 0.0 Aug 11 ?? 0:00.27 /sbin/kloadsrv

• ps -u UTILISATEUR : lister les processus lancés par un utilisateur


Les processus :Notion de signal
Dans un système Unix, tous les processus peuvent recevoir des
messages, envoyés soit par l'utilisateur, soit par un autre processus, soit
par le système. Ces messages sont appelés signaux

L'envoi d'un signal se fait avec la commande kill, avec la syntaxe


suivante : kill [-signal] PID

Numéro
Signification
de signal
15 Signal de terminaison de processus.

Signal de destruction inconditionnelle de


9
processus.

19 Signal de suspension de processus.

Signal de reprise d'exécution d'un processus


18
suspendu.
ctrl+c et kill : arrêter un processus
• Ctrl + C : arrêter un processus lancé en console

• kill : tuer un processus

• kill -9 vous demandez à Linux de tuer le


processus sans lui laisser le temps de s'arrêter
proprement
Lancement d’un processus
1. Lancement en arriere plan (commande nohup)
$ nohup nom_processus

2. Lancement et retour au mode console ( &)


$ nom_processus &

1 et 2: $ nohup nom_processus &


Les scripts shells
Les shells sous unix
•Au démarrage d'une session, un utilisateur peut taper et faire exécuter des commandes
lignes grâce à un shell.
􀂄 Les shells standards
􀂄 Bourne Shell (/bin/sh)
Il s'agit du shell UNIX d'origine. Le nom du programme est (sh) et il est connu comme étant
le shell bash des systèmes Linux.
􀂄 C-Shell (/bin/csh)
Ce shell est rarement utilisé car il est assez complexe.
􀂄 Korn Shell (/bin/ksh)
Ce shell a été écrit par David Korn. Il combine les fonctions interactives qui ont fait le succès
du shell C avec la syntaxe de programmation conviviale du shell Bourne.
􀂄 Bourne Again Shell (/bin/bash)
ce shell est une extension améliorée du shell Bourne
•On peut trouver une liste des shells autorisés sur une machine dans le fichier /etc/shells
Les scripts shells
 Le shell peut être utilisé pour exécuter des commandes contenues
dans un fichier texte.

 Les scripts peuvent être créés avec un éditeur de texte.

 Il est conseillé de positionner le droit d'exécution sur les fichiers


scripts.

 Il est également conseillé de préciser sur la 1ère ligne du script sous


quel shell les commandes doivent être exécutées.

Syntaxe: #!/bin/sh ou #!/bin/bash

 L'exécution d'un shell script se fait:


▫ en tapant son nom (si le script dispose du droit x); exemple: script
▫ en préfixant par le nom du shell; exemple: sh script ou bash script

▫ en préfixant par . ; exemple: . Script


Les commandes d'entrée/sortie
• La commande echo permet d'afficher une chaîne de caractères ou le
contenu de variables sur la sortie standard.
Exemple:
echo "La variable vaut $nom"
• La commande read permet de lire une ligne de caractères à partir de
l'entrée standard et place les différents mots dans les variables
transmises en argument.

Exemple:

#!/bin/bash
echo entrez deux nombres:
read nombre1 nombre2
echo La somme vaut $(($nombre1 + $nombre2))
Les variables
• On peut créer des variables V par affectation et les utiliser avec $V
Exemple:
#!/bin/bash
pays=Maroc
echo La variable pays vaut $pays

• Il existe aussi des variables définies automatiquement. Ce sont les


paramètres entrés au lancement du script
Exemple:
#!/bin/bash
pays=$1
#$1 est le premier paramètre, $2 le deuxième etc...
echo La variable pays vaut $pays
• Il existe d’ autres variables automatiques:
• $# qui est le nombre de paramètres
• $0 qui est le nom du programme.
• $* la liste des parametres
Les chaînes de caractères
• ${#variable} : Pour obtenir la longueur d'une chaîne de caractères
contenue dans une variable,
• ${variable#préfixe} ou ${variable##préfixe}: Permet d'extraire la
chaîne de caractères principale, en supprimant le préfixe de la
valeur des variables :
-un seul # pour la chaine la plus courte
-double #(##) pour la chaine la plus longue
Exemple: VAR contient la chaîne de caractères abbbc:
echo ${VAR#a*b} donne bbc, car le plus petit préfixe correspondant
au motif a*b est ab.
echo ${VAR##a*b} donne c car le préfixe le plus long est abbb. Le
Les chaînes de caractères

• Le shell fournit une syntaxe similaire pour extraire des suffixes de


la valeur des variables

echo ${VAR%b*c} affichera la chaîne de caractères abb, alors que la


commande :

echo ${VAR%%b*c} n'affichera que a.


Les chaînes de caractères
• Le shell fournit une syntaxe pour remplacer une chaîne de caractères
contenues dans des variables :
${variable/motif/remplacement}
• Exemple: si la variable VAR contient la chaîne de caractères abab,
la commande suivante :
echo ${VAR/b/d} affichera la chaîne de caractères adab.
• Ce remplacement n'est donc effectué qu'une seule fois.
Si l'on veut que toutes les occurrences du motif soient remplacées par la
chaîne de remplacement, il suffit de doubler le premier / :
• ${variable//motif/remplacement}
• echo ${VAR/b/d} affichera la chaîne de caractères adad
Expressions arithmétiques
Le shell peut évaluer des expressions arithmétiques
délimitees par $(( )) ou par $( echo a+b|bc)

◮ Exemple avec: $(( )) ◮ Exemple avec: $(( ))

$ n=10 $ n=10
$ echo $(( n + 1 )) $q= $( echo $n + 1 |bc )
$ p = $(( n * 5 / 2 )) $p=$(echo $n*5/2 |bc )
$ echo $p $echo q
$echo $p
La commande test ou [ ]
• Cette commande permet de tester l'existence et le statut
d'un fichier.
• Test de fichier:
La commande test ou []

• test de chaînes de caractères

• Ces tests peuvent être combinés:


! négation logique
-a (&&) et logique
-o (||)ou logique
Exemple 1:
test -r essai -a -s essai
Exemple2
if [ $A -lt 10 -a $B -lt 10 ] || [ $A -gt 10 -a $B -gt 10 ]
= si A et B sont <10 ou A et B sont >10
La commande test ou []
structure if :
syntaxe :
if ( condition) then instruction1
elif ( condition2) then instruction1
else dernière instruction
fi Exemple:
#!/bin/bash
if (test $1 -gt $2) then echo $1 est plus grand que $2
elif [ $1 -lt $2 ]
then echo $1 est plus petit que $2
else echo $1 égale $2
fi
Les différents opérateurs de comparaisons numérique sont:
Exercice 1
• Ecrire un scripte bash qui :
admet deux paramètre en entrée
- Teste le nombre de paramètre .
- Si <2 affiche le message suivante« Attention paramètre insuffisants ! »
- Si >2 : affiche le message suivante « trop de paramètre! »
- Si =2 : réalise et affiche la somme

Indication : utiliser le $# pour retourner le nombre de paramètre

Solution : faite dans la classe il faut la noté


Exercice 2 ( IF avec les ou et les et logiques )
a- Ecrire un scripte qui lit 2 valeurs et affiche si leur produit est
positif ou négatif sans le calculer

b- la même chose mais cette fois ci les 2 valeurs son passées en


paramètre du scripte

Exercice sur ( expression arithmétiques)


• Soient a= 6 , b=21 et c=9 à l’aides des expressions
arithmétiques :

• Calculer et afficher la somme de a et b.


• Calculer et afficher la moyenne de de a , b et c.
• Calculer et afficher la moyenne de de a , b et c.
Solution Exercice 2 ( IF avec les ou et les et logiques )

2.a
#!/bin/sh
echo " dooner 2 nombre"
read A B
if [ $A -lt 0 -a $B -lt 0 ] || [ $A -gt 0 -a $B -gt 0 ]
then
echo " produit positif"
else
echo " produit negatif"
fi 2.b
#!/bin/sh
echo " dooner 2 nombre"
if [ $1 -lt 0 -a $2 -lt 0 ] || [ $1 -gt 0 -a $2 -gt 0 ]
then
echo " produit positif"
else
echo " produit negatif"
fi
Substutution d’une commande:
syntaxe : variable= ` commande`

• On peut passer le résultat d’une commande dans des


variables
• Exemples:
$ a=`ls F*|wc`
( a contient le nombre des fichiers qui commence par F

$ b= `wc –l file`
( b contient le nombre des ligne contenue dans le fichier )

$ en_fic= `find. –type f –name *.java`


( en_fic contient la liste des fichiers d’extenssion java )
Choix multiples : case
• La commande case … esac permet de vérifier le contenu d'une
variable ou d'un résultat de manière multiple.

• Syntaxe :
case Valeur in
Modele1) Commandes ;;
Modele2) Commandes ;;
*) action_defaut ;;
esac
La structure while
Syntaxe:

while (conditions)
do
liste de commandes ou d’instruction
Done

Exemple

#!/bin/bash
i=0
while [ $i -lt 100 ]
do
i=$(($i+1))
echo $i
done
La structure for
Syntaxe:

for nom in liste


do
liste de commandes
Done
Exemple 1 : test si un fichier Exemple 2 :suppression des
existe parmi une liste de fichiers fichiers d’extension jpg png
f1 à fn et txt

#!/bin/bash #!/bin/bash
for fichier in f1 f2 f3 f4 ….fn for ext in jpg png txt
do do
if [ -f $fichier ]; then rm *.$ext
echo "$fichier est un fichier done
ordinaire"
fi
done
La structure for
La commande seq
La commande seq permet de parcourir une suite de chiffre successive

Exemple : affichage d’une suite de 1 à 4

$ for i in $(seq 1 4)
> do
> echo $i
> done
Résultat est :
1
2
3
4
Exercice 3 ( case … esac)
• En utilisant case ..esac Ecrire un programme appeler « jour.bash » qui
admet comme paramètre un chiffre de 1 à 7 et qui affiche le jour de la
semaine correspondant
• Exemple d’execution:
jour.bash 2
c’est mercredi !

Exercice 4 ( while)
• Ecrire un scripte shell qui permet de lire une suite de nombre saisis
à partir de clavier.
• Dés fin de la saisi marquée par le chiffre 999 . Afficher les nombre
en ordre croissant
Exercice 5 (for)
• Ecrire un scripte shell qui permet de trouver tous les fichiers
d’extention java dans l'arborescence courante qui contiennent la
chaine de caractères passée en paramètre :
Solution ( case … esac)
Ecercices 3

#!/bin/sh
case $1 in
1 ) echo "c'est lundi" ;;
2 ) echo "c'est mardi" ;;
3 ) echo "c'est mercredi" ;;
4 ) echo "c'est jeudi" ;;
5 ) echo "c'est vendredi" ;;
6 ) echo "c'est samedi" ;;
7 ) echo "c'est dimanche" ;;
*) echo "message" ;;
esac
Solution( while)
Ecercices 4

#!/bin/bash
if (test -f fich_num ) then
rm fich_num
fi
i=0
while (test $i -ne 99)
do
read num
i=$num
echo $num >> fich_num
done
sort -n fich_num
Solution (for)

Ecercices 5
#!/bin/sh
for file in `find . –type f -name "*.java ’’`
do
res=` grep $1 $file | wc –l `
if [ $res –ge 1 ] then
echo $file
fi
done

Vous aimerez peut-être aussi