Vous êtes sur la page 1sur 104

Année académique : 2021/2022

3IIR
EMSI - Tanger

Les Systèmes d’exploitation

Introduction à Unix/Linux
Pr. Zaynab El Khattabi
UNIX
▪ Le système d'exploitation Unix est un ensemble de programmes
servant de lien entre l'ordinateur et l'utilisateur.

▪ Les programmes informatiques qui allouent les ressources système et


coordonnent tous les détails des composants internes de l'ordinateur
sont appelés le système d'exploitation ou le noyau.
Le shell

✓ Si les récentes distributions de Linux permettent de faire abstraction de la saisie


d’instructions texte en offrant des environnements graphiques attrayants, Il est
inenvisageable pour un professionnel de Linux de ne pas connaître le fonctionnement
de l’interpréteur de commandes et des principales commandes qui lui sont associées.

✓ L’interpréteur de commandes, permet d’exécuter des instructions que vous saisissez


au clavier ou au sein d’un script et vous en retourne les résultats.

✓ Cet interpréteur est un programme appelé shell. Le shell signifiant coquille, est ce qui
« entoure » le noyau : le moyen de l’utiliser à l’aide de commandes. C’est donc une
interface fonctionnant en mode texte entre le noyau Linux et les utilisateurs (avancés),
voire les applications.
Histoire

▪ Unix a été développé en 1969 par un groupe d'employés d'AT&T Ken Thompson, Dennis
Ritchie, Douglas McIlroy, et Joe Ossanna chez Bell Labs
▪ Il existe différentes variantes Unix disponibles sur le marché. Solaris Unix, AIX, HP Unix et
BSD en sont quelques exemples.
▪ Linux est également une version d'Unix disponible gratuitement.
▪ Plusieurs personnes peuvent utiliser un ordinateur Unix en même temps; Unix s'appelle donc
un système multi-utilisateur.
▪ Un utilisateur peut également exécuter plusieurs programmes en même temps. Unix est donc
un environnement multitâche.
Histoire
Les familles d’Unix
▪ Du point de vue de l’utilisateur, les divers UNIX se ressemblent beaucoup.
▪ Du point de vue de l’administration, les divers UNIX ont chacun des spécificités (les
commandes liées au hardware varient, on trouve des extensions propres à chaque
constructeur).
▪ Il existe principalement deux versions de base d'Unix:
▪ AT&T System V
▪ Berkeley Software Distribution (BSD)

▪ La grande majorité de toutes les variantes d'Unix est construite sur une de ces deux
versions. Les principales différences entre les deux sont les utilitaires disponibles et
la structure d’implémentation des fichiers.
Histoire
Linux
▪ En 1991 Linus Torvalds, un étudiant finlandais, a commencé à travailler sur un système
Unix-like, appelé Linux.
▪ Linux n'est que le noyau, tandis que les pièces avec lesquelles la plupart des gens
reconnaissent les outils, Shell et système de fichiers, sont les créations du GNU.
▪ La force de Linux réside dans son homologation progressive, qui permet aux logiciels d'être
librement distribuables sans condition.
▪ La seule exigence pour l'utilisateur final est que toutes les modifications apportées au logiciel
de base, doivent être rendues disponibles pour d'autres gens de la Communauté, ce qui
permet au logiciel d'évoluer à un rythme incroyablement rapide.
▪ La licence sous la quelle est distribué Linux s'appelle la GNU Public License(GPL),
disponible à http://gnu.org/licenses/licenses.html.
Histoire
Unix vs Linux
▪ UNIX est protégé par un copyright, seules les grandes entreprises sont autorisées à
utiliser le nom UNIX, IBM AIX, Sun Solaris et HP-UX sont tous des systèmes
d’exploitation UNIX.
▪ La plupart des systèmes UNIX sont de nature commerciale.
▪ Linux est un clone d’Unix écrit à partir de zéro par Linus Torvalds avec l’aide d’une
équipe de hackers à travers le net.
▪ Linux est juste un noyau entouré par plusieurs applications et systèmes de gestion,
par contre les systèmes d’exploitation UNIX sont considérés comme des systèmes
d’exploitation complets.
▪ Linux est gratuit. Vous pouvez le télécharger à partir d’Internet ou de le redistribuer
sous licences GNU.
▪ De l’autre côté. La plupart des systèmes UNIX d’exploitation ne sont pas libres.
Histoire
Unix vs Linux

▪ « Logiciel libre » [free software] désigne des logiciels qui respectent la liberté des
utilisateurs. En gros, cela veut dire que les utilisateurs ont la liberté d'exécuter,
copier, distribuer, étudier, modifier et améliorer ces logiciels.

▪ Il ne s’agit pas de gratuité:


▪ Vous pouvez avoir payé pour obtenir une copie d'un logiciel libre ou vous
pouvez l'avoir obtenu gratuitement. Mais quelle que soit la manière dont vous
vous l'êtes procuré, vous avez toujours la liberté de copier et de modifier le
logiciel et même d'en vendre des copies.
Histoire
Unix vs Linux
Les quatre libertés essentielles:
Un programme est un logiciel libre s’il a les quatre libertés essentielles :

✓ la liberté de faire fonctionner le programme comme vous voulez, pour n'importe quel usage
(liberté 0) ;
✓ la liberté d'étudier le fonctionnement du programme, et de le modifier pour qu'il effectue vos
tâches informatiques comme vous le souhaitez (liberté 1) ; l'accès au code source est une
condition nécessaire ;
✓ la liberté de redistribuer des copies, donc d'aider les autres (liberté 2) ;
✓ la liberté de distribuer aux autres des copies de vos versions modifiées (liberté 3) ; en faisant
cela, vous donnez à toute la communauté une possibilité de profiter de vos changements ;
l'accès au code source est une condition nécessaire.
Histoire
Unix vs Linux
Des exemples de systèmes UNIX:
1.HP-UX
2.IBM AIX
3.SolairsSun
4.Mac OS X
5.IRIX

Des exemples de distributions Linux:


1.RedhatEnterprise Linux
2.Fedora Linux
3.Debian Linux
4.Suse Enterprise Linux
5.Ubuntu Linux
Histoire: Unix
Histoire: Linux
Architecture d’Unix
Architecture d’Unix

Le concept principal qui réunit toutes les versions d'Unix est le suivant:
▪ Kernel:
▪ Le noyau est le cœur du système d'exploitation.
▪ Il interagit avec le matériel et la plupart des tâches telles que la gestion de la mémoire, la
planification des tâches et la gestion des fichiers.

▪ Shell:
▪ Le shell est l'utilitaire qui traite vos requêtes. Lors que vous tapez une commande sur
votre terminal, le shell interprète la commande et appelle le programme souhaité.
▪ Le shell utilise une syntaxe standard pour toutes les commandes.
▪ C Shell, Bourne Shell et KornShell sont les plus célèbres disponibles avec la plupart des
variantes Unix.
Architecture d’Unix

Le concept principal qui réunit toutes les versions d'Unix est le suivant:
▪ Commandes et utilitaires:
▪ Il existe diverses commandes et utilitaires que vous pouvez utiliser dans vos activités
quotidiennes (cp, mv, cat et grep, …).
▪ Il y a plus de 250 commandes standard, plus nombreux autres fournis par des logiciels
tiers.
▪ Toutes les commandes sont accompagnées de différentes options

▪ Fichiers et répertoires:
▪ Toutes les données d'Unix sont organisées en fichiers.
▪ Tous les fichiers sont ensuite organisés en répertoires.
▪ Ces répertoires sont ensuite organisés en une structure arborescente appelée système
de fichiers.
Architecture d’Unix

▪ Les Shells les plus répandus:

shell program description


Bourne shell sh Disponible sur tte plateforme Unix
C shell csh Shell developpé pour BSD
Korn shell ksh Bourne shell amélioré par AT&T
Bourne Again shell bash Shell distribué avec Linux: version améliorée de sh et csh

▪ Par défaut, le shell associé à un compte d'utilisateur dans Ubuntu est Bourne-Again
Shell(Bash);
▪ Toutes les commandes saisies par un utilisateur dans un émulateur de terminal sont traitées
par Bash.
▪ Ubuntu inclut aussi l'interpréteur Bourne Shell(sh). D'autres shells, comme Z Shell (zsh) ou
C-Shell (csh), peuvent être installés facilement à l'aide de son gestionnaire de paquets
CLI :Interface en Lignes de Commandes

Le Shell d'un système d'exploitation peut prendre deux formes distinctes:

▪ Interface en ligne de commande (Eng-CLI:Command Line Interface en anglais):


▪ cela fonctionne à partir d'instructions en mode texte.

▪ Shell graphique fournissant une interface graphique pour l'utilisateur (Eng-GUI:


Graphical User Interface).
CLI :Interface en Lignes de Commandes

✓ C’est l’outil natif pour piloter un système Linux

✓ C’est un outil puissant: On peut tout faire à partir des ligne de commandes, même avec des
manipulations infaisables avec l’interface graphique.

✓ C’est peu gourmand en ressources: Cela ne demande pas de cartes graphiques performantes, ni
d’extrêmes quantités de mémoire.

✓ Les tâches peuvent être automatisées dans des scripts de langage interprété.

✓ Communiquer des manipulations systèmes à distance serait plus facile et sera interprété d’une
façon unique.
✓ ...il y en a plus.
Les modes d’accès au shell

Deux méthodes d'accès au Shell sont possibles en fonction de ressources matériels


disponibles, du système d'exploitation ou du paramétrage utilisé:

▪ Le mode console qui affiche un Shell unique en plein écran, c'est l'interface homme-
machine de base du système d'exploitation (accessible au démarrage du système).

▪ Le mode terminal qui émule une console et qui affiche en général le Shell dans une
portion de l'écran.
Le terminale shell

Tous les Shells se présentent sous la même forme à l’écran lorsqu’ils fonctionnent:
▪ Une chaîne de caractères affiche que le Shell attend que l’utilisateur tape quelque
chose au clavier; c’est le prompt.
▪ Un curseur qui va se déplacer au fur et à mesure de la saisie des commandes
▪ L’invite (prompt) fournit des informations sur le terminal et votre position dans le
système de fichiers.
Le terminale shell

✓ root : c’est le nom de connexion, ou login de l’utilisateur, actuellement connecté au terminal

✓ localhost: c’est le nom d’hôte (hostname), le nom logique de la machine raccordée au


terminal

✓ /home/username : c’est la position actuelle du shell dans le système de fichiers

✓ Le caractère de terminaison peut avoir d’autres significations :

➢ $ indique qu’on exécute les commandes en mode utilisateur et non administrateur


➢ # indique que l’utilisateur est l’administrateur root qui a tous les pouvoirs.
➢ ~ indique qu’on est dans le répertoire personnel.
Les commandes : syntaxe

▪ Une commande Unix= Un ensemble de mots séparé par des blancs, dont la syntaxe est la
suivante:
Commande [Options] [Paramètres]

▪ Commande: Le nom de la commande.

▪ Options: Les options permettent de changer le comportement de la commande, il peut s’agir


d’une seule option ou plusieurs en même temps.

▪ Paramètres: Les informations nécessaires au fonction de la commande.


Les crochets [ et ] (qu’il ne faut pas tapés) signifient que les options ou les paramètres sont
optionnelles. (dans certaines commandes, c’est obligatoire)
Les commandes : syntaxe

▪ Il existe une documentation électronique accessible pendant le fonctionnement du système:


▪ c’est l’aide en ligne. La commande donnant l’aide est man. Elle donne accès aux pages de
manuel des commandes Unix.
▪ Syntaxe de la commande man: man [options] commande avec en particulier comme option:
▪ man [numero de section] commande
▪ man[-s numero de section] commande

▪ Le numéro de section représente les rubriques


de l’aide en ligne
La gestion des fichiers sous Linux

▪ Sur un système Linux, tout est fichier. Cela peut sembler évident à première vue. Un document
texte est évidemment un fichier, tout comme un document OpenOffice, une image, une vidéo
ou un mp3

▪ Mais qu’en est-il des répertoires ? Il s’agit aussi de fichiers, d’un type particulier, qui
contiennent des informations sur d’autres fichiers.

▪ Les lecteurs de disques sont des gros fichiers. Les connexions réseau sont des fichiers. Même
les processus en cours d’exécution sont des fichiers.

▪ Bref, sous Linux... tout est fichier


La gestion des fichiers sous Linux

▪ Sous UNIX, tout élément est représenté sous forme de fichier

▪ 4 types de fichiers :
▪ Ordinaire: données, programme
▪ Répertoire: contient d'autres données ou répertoires
▪ Lien symbolique: pointe vers un autre fichier
▪ Spécial: permet l'accès à un périphérique

▪ Chaque fichier est caractérisé par son nom, sa taille, ses droits d'accès, son
propriétaire, ses dates de création, de modification... Structure arborescente de
fichiers
La gestion des fichiers sous Linux

L’arborescence
▪ Le principe de l’arborescence
sous Linux est totalement
différent de celui de Windows.
▪ Le principe est d’avoir une
arborescence qui ne dépend
pas des disques durs et de
leurs partitions.
▪ / : est la racine de cette
arborescence
▪ Les nœuds sont les
répertoires Les fichiers sont
les feuilles
La gestion des fichiers sous Linux
Chemin absolu/relatif

Selon ce schéma, 2 désignations possibles du chemin vers un fichier :


Le chemin absolu
Exemple : monProg.c
▪ Partant de la racine, le chemin serait:
/home/user1/formation/maitre2/monProg.c

Si le nom de répertoire commence par / il s’agit d’une référence absolue, constituée


d’une liste des répertoires à parcourir depuis la racine / pour accéder au fichier.
La gestion des fichiers sous Linux

Le chemin relatif
Exemple : monProg.c
▪ Le chemin relatif à l’emplacement ou on se trouve :
maitre2/monProg.c

Si le nom de répertoire ne commence pas par / il s’agit d’une référence relative par
rapport au répertoire courant.
La gestion des fichiers sous Linux

Chemin du dossier personnel

▪ L’operateur ~ (tilde) :
▪ Il permet de se positionner facilement et directement dans le dossier personnel sans
taper son chemin.
▪ Le répertoire personnel :
▪ Sur les systèmes d'exploitation de type Unix, tilde ~ indique souvent le répertoire
home de l'utilisateur actuel : par exemple, si le répertoire home de l'utilisateur actuel
est /home/user1 on peut utiliser la commande cd ~ à la place de cd /home/user1 ou
cd $HOME
La gestion des fichiers sous Linux

Afficher le dossier courant


▪ Syntaxe: pwd [options]
▪ La commande pwd indique votre position actuelle au sein du système de fichiers.
▪ Elle permet de savoir où vous êtes dans le système de fichiers.
▪ La commande pwd commande n'a pas d'arguments, il suffit de taper pwd sur le Shell
:
La gestion des fichiers sous Linux

Les chemins

✓ Si vous saisissez cd ., vous ne bougez pas.

✓ Le cd .. remonte d’un niveau.

✓ La commande cd sans argument permet de retourner directement dans son


répertoire utilisateur.
La gestion des fichiers sous Linux
Lister les fichiers
Syntaxe: ls [options] [paramètres]
La commande ls permet de lister le contenu d’un répertoire (catalogue) en lignes ou colonnes.
Elle supporte plusieurs paramètres dont voici les plus pertinents.
Paramètre Signification
-l Pour chaque fichier ou dossier, fournit des informations détaillées.
-a Les fichiers cachés sont affichés (ils commencent par un point).
-d Sur un répertoire, précise le répertoire lui-même et non son
contenu.
-F Rajoute un caractère à la fin du nom pour spécifier le type : / pour
un répertoire, * pour un exécutable, @ pour un lien symbolique,
etc.
-R Si la commande rencontre des répertoires, elle rentre dans les
sous-répertoires, sous-sous-répertoires, etc., de manière
récursive.
-t La sortie est triée par date de modification du plus récent au plus
ancien. Cette date est affichée.
-r L’ordre de sortie est inversé.
La gestion des fichiers sous Linux

Lister les fichiers


Syntaxe: ls [options] [paramètres]
✓ Le paramètre qui vous fournit le plus d’informations est le -l : il donne un certain nombre
de détails sur les fichiers.

ls -l
La gestion des fichiers sous Linux

Lister les fichiers


Syntaxe: ls [options] [paramètres]

✓ La ligne total indique la taille totale en kilo-octets du contenu du répertoire. Cette taille est celle de
l’ensemble des fichiers ordinaires du répertoire et ne prend pas en compte les éventuels sous-
répertoires et leur contenu

✓ Le premier caractère représente le type de fichier


➢ - : ordinaire,
➢ d : répertoire,
➢ l : lien symbolique...

✓ les autres, par blocs de trois, les droits pour


➢ l’utilisateur (rw-),
➢ le groupe (r--) et
➢ tous (r--). Les droits sont expliqués au chapitre Les disques et le
système de fichiers.
La gestion des fichiers sous Linux

Lister les fichiers


Syntaxe: ls [options] [paramètres]

✓ La ligne total indique la taille totale en kilo-octets du contenu du répertoire. Cette taille est celle de
l’ensemble des fichiers ordinaires du répertoire et ne prend pas en compte les éventuels sous-
répertoires et leur contenu

✓ Un compteur de liens (chapitre Les disques et le système de fichiers).


La gestion des fichiers sous Linux

Lister les fichiers


Syntaxe: ls [options] [paramètres]

✓ La ligne total indique la taille totale en kilo-octets du contenu du répertoire. Cette taille est celle de
l’ensemble des fichiers ordinaires du répertoire et ne prend pas en compte les éventuels sous-
répertoires et leur contenu

✓ Le propriétaire du fichier, généralement celui qui l’a créé.


La gestion des fichiers sous Linux

Lister les fichiers


Syntaxe: ls [options] [paramètres]

✓ La ligne total indique la taille totale en kilo-octets du contenu du répertoire. Cette taille est celle de
l’ensemble des fichiers ordinaires du répertoire et ne prend pas en compte les éventuels sous-
répertoires et leur contenu

✓ Le groupe auquel appartient le fichier.


La gestion des fichiers sous Linux

Lister les fichiers


Syntaxe: ls [options] [paramètres]

✓ La ligne total indique la taille totale en kilo-octets du contenu du répertoire. Cette taille est celle de
l’ensemble des fichiers ordinaires du répertoire et ne prend pas en compte les éventuels sous-
répertoires et leur contenu

✓ La taille du fichier en octets.


La gestion des fichiers sous Linux

Lister les fichiers


Syntaxe: ls [options] [paramètres]

✓ La ligne total indique la taille totale en kilo-octets du contenu du répertoire. Cette taille est celle de
l’ensemble des fichiers ordinaires du répertoire et ne prend pas en compte les éventuels sous-
répertoires et leur contenu

✓ La date de dernière modification (parfois avec l’heure),


La gestion des fichiers sous Linux

Lister les fichiers


Syntaxe: ls [options] [paramètres]

✓ La ligne total indique la taille totale en kilo-octets du contenu du répertoire. Cette taille est celle de
l’ensemble des fichiers ordinaires du répertoire et ne prend pas en compte les éventuels sous-
répertoires et leur contenu

✓ Le nom du fichier.
La gestion des fichiers sous Linux

Créer un fichier:

✓ Créer des fichiers vides

touch fictest

▪ Si vous relancez la même commande sur fichier existant , la date de modification change.

✓ Créer des répertoires

mkdir [-p] rep1 [rep2] ... [repn]

▪ La commande mkdir (make directory) permet de créer un ou plusieurs répertoires, ou une


arborescence complète, utilisez le paramètre -p.
La gestion des fichiers sous Linux

Créer un fichier:

mkdir Documents
mkdir Documents/Photos
mkdir -p Archives/vieilleries
ls -R
.:
Archives Documents fictest

./Archives:
vieilleries

./Archives/vieilleries:

./Documents:
Photos

./Documents/Photos:
La gestion des fichiers sous Linux

Supprimer un repértoire

rmdir rep1 [rep2] ... [repn]

La commande rmdir (remove directory) supprime un ou plusieurs répertoires.

Elle ne peut pas supprimer une arborescence!

Si des fichiers sont encore présents dans le répertoire, la commande retourne une erreur.

Le répertoire ne doit donc contenir ni fichiers ni répertoires et ceci même si les sous-répertoires
sont eux-mêmes vides.

rmdir Documents/
rmdir: Documents/: Le répertoire n’est pas vide.
rmdir Documents/Photos
La gestion des fichiers sous Linux

Copier des fichiers

cp fic1 [fic2 ... ficn] Destination

✓ La commande cp (copy) copie un ou plusieurs fichiers vers un autre fichier ou


vers un répertoire.

✓ Dans le premier cas, fic1 est recopié en Destination. Si Destination existe, il est
copié sans avertissement selon le paramètre passé et selon les droits.

✓ Dans le second cas, fic1, fic2 et ainsi de suite sont recopiés dans le répertoire
destination.
La gestion des fichiers sous Linux
✓ Les chemins peuvent êtres absolus ou relatifs. Les options suivantes :

Paramètre Signification
-i Demande de confirmation de copie pour chaque fichier.
-r Récursif : copie un répertoire et tout son contenu.
-p Les permissions et dates sont préservées.
-f Forcer la copie.

ls -d rep2
ls: ne peut accéder rep2: Aucun fichier ou répertoire de ce type
cp -r rep1 rep2
ls
rep1 rep2
cp -r rep1 rep2
ls rep2
rep1
La gestion des fichiers sous Linux

Déplacer et renommer un fichier

✓ La commande mv (move) permet de déplacer, de renommer un fichier, ou les deux en


même temps.

✓ Elle fonctionne comme la commande cp. Les paramètres -f et -i ont le même effet.

touch txt1 txt2 txt3


mv txt1 txt1.old
mv txt2 rep1/txt2
mv txt3 rep1/txt3.old

✓ paramètre -u : si le fichier de destination existe avec une date plus récente, cela vous
évite de l’écraser.
La gestion des fichiers sous Linux
Supprimer un fichier ou une arborescence

• La commande rm (remove) supprime un ou plusieurs fichiers, et éventuellement


une arborescence complète, suivant les options. La suppression est définitive.

rm [Options] fic1 [fic2...]

Paramètre Signification
-i La commande demandera une confirmation pour chacun
des fichiers à supprimer. Suivant la version d’Unix, le
message change et la réponse aussi : y, Y, O, o, N, n,
parfois toutes.
-r Le paramètre suivant attendu est un répertoire. Dans ce
cas, la suppression est récursive : tous les niveaux
inférieurs sont supprimés, les répertoires comme les
fichiers.
-f Force la suppression.
La gestion des fichiers sous Linux

Supprimer un fichier ou une arborescence

rm fic1
rm -r rep1
rm -rf /home/public/depots
La gestion des fichiers sous Linux

Les liens symboliques

Vous pouvez créer des liens, qui sont un peu comme des raccourcis. Un lien est un fichier
spécial contenant comme information un chemin vers un autre fichier.

✓ Il existe deux types de liens : le lien dur (hard link), et le lien symbolique (soft link) qui
correspond à la définition donnée.

✓ Il est possible de créer des liens symboliques vers n’importe quel type de fichier, quel qu’il
soit et où qu’il soit.

✓ Il est même possible de créer des liens sur des fichiers qui n’existent pas.

ln -s fichier lien
La gestion des fichiers sous Linux

Les liens symboliques

✓ Le lien se comporte à l’identique du fichier pointé avec les mêmes permissions et les mêmes
propriétés :

➢ si le fichier pointé est un programme, lancer le lien lance le programme

➢ si le fichier pointé est un répertoire, un cd sur le lien rentre dans ce répertoire

➢ si le fichier pointé est un fichier spécial (périphérique), le lien est vu comme périphérique

✓ La suppression d’un lien symbolique n’entraîne que la suppression de ce lien, pas du fichier
pointé.

✓ La suppression du fichier pointé n’entraîne pas la suppression des liens symboliques associés.
La gestion des fichiers sous Linux

touch fic1
ln -s fic1 lienfic1
ls -l
-rw-r--r-- 1 seb users 0 mar 4 19:16 fic1
lrwxrwxrwx 1 seb users 4 mar 4 19:17 lienfic1 -> fic1
ls -F
fic1 lienfic1@
echo titi > fic1
cat lienfic1
titi

✓ Attention, les droits indiqués sont ceux du fichier spécial et n’ont pas de signification autre
: ils ne veulent pas dire que tout le monde à tous les droits sur le fichier pointé. Lors de
son utilisation, ce sont les droits du fichier ou du dossier pointés qui prennent le dessus!
La gestion des fichiers sous Linux

Caractères de substitution

✓ 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,

✓ Par exemple avec la commande ls. Au lieu d’afficher toute la liste des fichiers, on peut filtrer
l’affichage à l’aide de divers critères et caractères spéciaux.

Caractère(s) Rôle
* Remplace une chaîne de longueur variable, même vide.
? Remplace un caractère unique quelconque.
[...] Une série ou une plage de caractères.
[a-b] Un caractère parmi la plage indiquée (de a à b inclus).
[!...] Inversion de la recherche.
La gestion des fichiers sous Linux

Caractères de substitution
Exemple:

ls
afic afic2 bfic bfic2 cfic cfic2 dfic dfic2
afic1 afic3 bfic1 bfic3 cfic1 cfic3 dfic1 dfic3

ls a*
afic afic1 afic2 afic3

ls a???
afic

ls b??*
bfic bfic1 bfic2 bfic3

ls *[12]
afic1 afic2 bfic1 bfic2 cfic1 cfic2 dfic1 dfic2
La gestion des fichiers sous Linux

Caractères de substitution
Exemple:

ls [a-c]?*[12]
afic1 afic2 bfic1 bfic2 cfic1 cfic2

ls *[ !3]
afic afic1 afic2 bfic bfic1 bfic2 cfic cfic1 cfic2 dfic
dfic1 dfic2

✓ C’est le shell qui est chargé d’effectuer la substitution de ces caractères avant le passage
des paramètres à une commande.
La gestion des fichiers sous Linux

Recherche des fichiers

✓ La commande find permet de rechercher des fichiers au sein de l’arborescence du système de


fichiers à l’aide de critères et donne la possibilité d’agir sur les résultats retournés.

find chemin critères options

✓ La commande find étant récursive, il suffit d’indiquer un répertoire de base pour que toute
l’arborescence depuis ce répertoire soit développée.
La gestion des fichiers sous Linux

Recherche des fichiers:

Critères de recherche

✓ Les paramètres permettent de définir les critères de recherche.

✓ -name permet une sélection par noms de fichiers. Le critère est idéalement placé entre
guillemets.

find . -name "fic*" -print


./fic1
./fic2
./fic3
./fic4
La gestion des fichiers sous Linux

Critères de recherche

✓ -type permet une sélection par type de fichier. (ex, liens, répertoires et fichiers
simples, etc...)

Code Type de fichier


b Fichier spécial en mode bloc
c Fichier spécial en mode caractère
d Répertoire (directory)
f Fichier ordinaire
l Lien symbolique
p Tube nommé (pipe)
s Socket (Connexion réseau)

find . -name "re*" -type d -print


./rep1
./rep2
La gestion des fichiers sous Linux
Critères de recherche

✓ user et group permettent une recherche sur le propriétaire et le groupe d’appartenance


des fichiers. Il est possible de préciser le nom (utilisateur, groupe) ou l’ID (UID, GID).

find . -type f -user seb -group users -print


./fic1
./fic3

✓ -size permet de préciser la taille des fichiers recherchés. Sa syntaxe est particulière car elle
travaille par défaut en blocs si vous ne précisez rien.

Caractère Signification
b Par défaut si non précisé, c’est un bloc de 512 octets.
c C’est un caractère, au sens ASCII, donc 1 octet.
w C’est un mot (au sens ancien) de 2 octets.
k 1 Ko (1024 octets).
La gestion des fichiers sous Linux

Critères de recherche

✓ La valeur peut être précédée d’un + ou d’un - signifiant "plus de" ou "moins de". Sans cette indication,
la taille recherchée doit correspondre EXACTEMENT.

-Size 5 : recherche les fichiers d’une taille de 5 blocs (512 octets par bloc, soit ici 2560 octets).
-size 152c : recherche les fichiers d’une taille de 152 caractères (octets).
-size 10k : recherche les fichiers d’une taille de 10 Ko (10*1024 octets = 10240 octets).
-size +5000k : les fichiers de plus de 5000 Ko.
-size 100k : les fichiers de moins de 100 Ko.

find -size +100k


La gestion des fichiers sous Linux

Commandes de recherche

✓ -ls Le critère affiche des informations détaillées sur les fichiers trouvés correspondant au critère au lieu
du simple nom de fichier. La sortie correspond à une commande ls avec les paramètres d, l et s (taille
en blocs de 1 Ko).

find -size +500000k -ls


2342935 584388 -rw-r--r-- 1 seb users 597817344 fév 24 11:52 ./eeexubuntu-
7.10.3-desktop-i386.iso
La gestion des fichiers sous Linux

Commandes de recherche

✓ -exec va exécuter la commande située juste après pour chaque occurrence trouvée.
➢ -exec doit obligatoirement être la dernière option de la commande find.
➢ La commande exécutée par -exec doit se terminer par un « ; ». Ce caractère spécial doit s’écrire \;
pour ne pas être interprété par le shell.
➢ Pour passer comme paramètre pour la commande le fichier trouvé par find, il faut écrire {} (substitution
du fichier).

find . -type f -name "*.mp3" -exec rm -f {} \;


La gestion des fichiers sous Linux

Critères AND / OR / NOT

✓ Il est possible de combiner les options de critère de sélection. Sans aucune précision c’est le ET logique
qui est implicite.

Critère Action
a, and AND, ET logique, par défaut
o, or OR, OU logique
! Négation du critère

✓ Exemple avec tous les fichiers ne contenant pas fic dans leur nom

find . ! -name "*fic*" -print


.
./rep1
./liste
La gestion des fichiers sous Linux

Critères AND / OR / NOT

✓ Exemple avec tous les fichiers n’étant ni normaux ni des répertoires.

find . ! \( -type f -o -type d \) -ls


409 0 lrwxrwxrwx 1 oracle system 4 Aug 14 15:21 ./lien_fic1 -> fic1
634 0 lrwxrwxrwx 1 oracle system 4 Aug 14 15:21 ./lien_fic2 -> fic2
La gestion des fichiers sous Linux

Retrouver des exécutables

✓ La commande which recherche une commande dans le PATH (chemin des exécutables) et vous fournit
la première qu’elle trouve :

which date
/bin/date

✓ Il arrive que des commandes de même nom existent dans plusieurs chemins, vous pouvez dès lors
préciser le paramètre -a pour que which continue sa recherche.

✓ c’est la première qui sera exécutée par défaut si vous la lancez.

which -a passwd
/usr/bin/passwd
/usr/bin/X11/passwd
La gestion des fichiers sous Linux
Principe des redirections

✓ Les redirections donnent la possibilité de rediriger l’affichage de l’écran vers un fichier, une imprimante ou
tout autre périphérique, les messages d’erreur vers un autre fichier, de remplacer la saisie clavier par le
contenu d’un fichier.

✓ Tout flux de données en entrée ou en sortie de commande passe par un canal. Il est possible de
dévier le cours des données vers une autre destination ou depuis une autre source.
✓ Linux utilise des canaux d’entrées/sorties pour lire et écrire ses données. Par défaut le canal d’entrée
est le clavier, et le canal de sortie, l’écran. Un troisième canal, le canal d’erreur, est aussi redirigé vers
l’écran par défaut.

✓ Il est possible de rediriger ces canaux vers des fichiers, ou du flux texte de manière transparente pour les
commandes Linux.
La gestion des fichiers sous Linux

Redirection en sortie:

✓ On se sert du caractère > pour rediriger la sortie standard (celle qui va normalement sur l’écran). On
indique ensuite le nom du fichier où seront placés les résultats de sortie.

ls -l > resultat.txt
cat resultat.txt
total 1
-rw-r--r-- 1 Administ ssh_user 0 Jul 4 12:04 ABC
-rw-r--r-- 1 Administ ssh_user 0 Jul 25 15:13 resultat.txt
-rw-r--r-- 1 Administ ssh_user 171 Jul 25 15:13 test.txt

✓ Si le fichier n’existe pas, il sera créé. S’il existe, son contenu sera écrasé, même si la commande tapée est
incorrecte.

✓ Le shell commence d’abord par créer le fichier puis exécute ensuite la commande.
La gestion des fichiers sous Linux

Redirection en sortie:
✓ Pour rajouter des données à la suite du fichier, donc sans l’écraser, on utilise la double redirection >> . Le
résultat de la commande est ajouté à la fin du fichier.

ls -l > resultat.txt
date >> resultat.txt
cat resultat.txt
total 1
-rw-r--r-- 1 Administ ssh_user Thu Jul 25 15:20:12 2002
-rw-r--r-- 1 Administ ssh_user 0 Jul 4 12:04 ABC
-rw-r--r-- 1 Administ ssh_user 0 Jul 25 15:13 resultat.txt
171 Jul 25 15:13 test.txt
La gestion des fichiers sous Linux

Redirection en entrée

✓ Les commandes qui attendent des données ou des paramètres depuis le clavier peuvent aussi en
recevoir depuis un fichier, à l’aide du caractère <.

✓ Un exemple avec la commande wc (word count) qui permet de compter le nombre de lignes, de mots et
de caractères d’un fichier.

wc < resultat.txt
4 29 203
La gestion des fichiers sous Linux

Les canaux standards

✓ On peut considérer un canal comme un fichier, qui possède son propre descripteur par défaut, et dans
lequel on peut lire ou écrire.

➢ Le canal d’entrée standard se nomme stdin et porte le descripteur 0.

➢ Le canal de sortie standard se nomme stdout et porte le descripteur 1.

➢ Le canal d’erreur standard se nomme stderr et porte le descripteur 2. On peut rediriger le canal
d’erreur vers un autre fichier.

rmdir dossier2
rmdir: `dossier2’: No such file or directory
rmdir dossier2 2>error.log
cat error.log
rmdir: `dossier2’: No such file or directory
La gestion des fichiers sous Linux

✓ Vous pouvez rediriger les deux canaux de sortie dans un seul et même fichier, en les liant. On utilise pour
cela le caractère >&.

ls -l > resultat.txt 2>&1

✓ La sortie 2 est redirigée vers la sortie 1, donc les messages d’erreurs passeront par la sortie standard.
Puis le résultat de la sortie standard de la commande ls est redirigé vers le fichier resultat.txt.
✓ Vous pouvez utiliser les deux types de redirection à la fois :

wc < resultat.txt > compte.txt


cat compte.txt
4 29 203
La gestion des fichiers sous Linux
Ouverture de canaux

✓ Les canaux standards sont au nombre de trois et numérotés de 0 à 2.

➢ Ainsi 0< équivaut à <


➢ et 1> à >.

✓ exec permet d’ouvrir 7 autres canaux numérotés de 3 à 9 (dix canaux Max).


exec 3>dump.log
ls -l >&3
cat dump.log
total 3952
-rw-r--r-- 1 seb users 167212 oct 9 09:27 battlestar_1280.jpg
drwxr-xr-x 2 seb users 4096 mar 4 08:51 bin

✓ Tous ce qui sera écrit dans le canal 3 sera écrit dans le fichier dump.log. Pour fermer le canal (canal de
fermeture - ).
exec 3>&-
La gestion des fichiers sous Linux

Filtre : définition

✓ Un filtre (ou une commande filtre) est un programme sachant écrire et lire des données par les canaux
standards d’entrée et de sortie. Il en modifie ou traite éventuellement le contenu.

➢ wc est un filtre.

➢ more (affiche les données page par page),

➢ sort ( tri des données),

➢ grep (critères de recherche).

✓ Les utilitaires sans être obligatoirement des filtres permettent un certain nombre d’actions sur des fichiers
ou leur contenu comme le formatage ou l’impression.
La gestion des fichiers sous Linux

Pipelines / tubes

✓ Les tubes ou pipes permettent de rediriger directement le canal de sortie d’une commande vers le canal
d’entrée d’une autre. On utilise le caractère |

ls -l | wc

✓ Il est possible de placer plusieurs | sur une même ligne.

ls -l | wc | wc
1 3 24
La gestion des fichiers sous Linux

Extraction des noms et chemins

✓ La commande basename permet d’extraire le nom du fichier dans un chemin.

basename /tmp/seb/liste
Liste

✓ La commande dirname effectue l’inverse, elle extrait le chemin.

dirname /tmp/seb/liste
/tmp/seb
La gestion des fichiers sous Linux

Expressions régulières
La gestion des fichiers sous Linux

Expressions régulières
La gestion des fichiers sous Linux
Ancres
La gestion des fichiers sous Linux
La gestion des fichiers sous Linux

Recherche de lignes

✓ Il s’agit d’extraire des lignes d’un fichier selon divers critères. Pour cela vous disposez de trois
commandes grep, egrep et fgrep qui lisent les données soit depuis un fichier d’entrée, soit depuis le
canal d’entrée standard.

grep [Options] modèle [Fichier1...]

cat fic4
Cochon
Veau
Boeuf
rat
Rat
boeuf
La gestion des fichiers sous Linux

Recherche de lignes

✓ La commande grep peut aussi prendre quelques options intéressantes.

➢ -v effectue la recherche inverse : toutes les lignes ne correspondant pas aux critères sont affichées.
➢ -c ne retourne que le nombre de lignes trouvées sans les afficher.
➢ -i ne différencie pas les majuscules et les minuscules.
➢ -n indique le numéro de ligne pour chaque ligne trouvée.
➢ -l dans le cas de fichiers multiples, indique dans quel fichier la ligne a été trouvée.

grep "^[bB]" fic4 grep -i "^b" fic4


Boeuf Boeuf
boeuf boeuf
La gestion des fichiers sous Linux

Colonnes et champs

✓ La commande cut permet de sélectionner des colonnes et des champs dans un fichier.

cut -cColonnes [fic1...]

✓ Une colonne est la position d’un caractère dans la ligne. Le premier caractère est la colonne 1, le
deuxième la colonne 2, et ainsi de suite.

✓ Une ligne de 80 caractères dispose de 80 colonnes.

✓ C’est la méthode idéale pour des fichiers plats et à format fixe où chaque champ débute et finit à des
positions données.
La gestion des fichiers sous Linux

Colonnes

✓ Le format de sélection de colonne est le suivant :

➢ une colonne seule (ex. -c2 pour la colonne 2)

➢ une plage (ex. -c2-4 pour les colonnes 2, 3 et 4)

➢ une liste de colonnes (ex. -c1,3,6 pour les colonnes 1, 3 et 6)


La gestion des fichiers sous Linux

Exemples

cat liste
Produit prix quantites
souris 30 15
disque 100 30
ecran 300 20
clavier 45 30

cut -c1-5 liste cut -c1-3,10-12,15


Produ Prorixu
souri sou 15
disqu dis0 3
ecran ecr 20
clavi cla5 3
La gestion des fichiers sous Linux

Champs

✓ La commande cut permet aussi de sélectionner des champs.

✓ Ces champs doivent être par défaut délimités par une tabulation,

✓ mais le paramètre -d permet de sélectionner un autre caractère (espace, …).

cut -dc -fChamps [fic1...]


La gestion des fichiers sous Linux

Exemples
cat liste
Produit prix quantites
souris 30 15
dur 100 30
disque 100 30
ecran 300 20
clavier 45 30
Carte 45 30

cut -f1 liste cut -f1,3 liste


Produit Produit quantites
souris souris 15
dur dur 30
disque disque 30
ecran ecran 20
clavier clavier 30
carte carte 30
La gestion des fichiers sous Linux

Exemple:
✓ Voici comment isoler les noms d’un groupe et leurs identifiants respectifs :

cat /etc/group
at:!:25:
audio:x:17:
avahi:!:106:
beagleindex:!:107:
bin:x:1:daemon

cut -d: -f1,3 /etc/group


at:25
audio:17
avahi:106
beagleindex:107
bin:1
La gestion des fichiers sous Linux

compter le nombre de lignes

✓ La commande wc (word count) permet de compter les lignes, les mots et les caractères.

wc [-l] [-c] [-w] [-w] fic1

➢ -l : compte le nombre de lignes


➢ -c : compte le nombre d’octets
➢ -w : compte le nombre de mots
➢ -m : compte le nombre de caractères

wc liste
12 48 234 liste

✓ Le fichier liste contient 12 lignes, 48 mots et 234 caractères.


La gestion des fichiers sous Linux

Tri de lignes

✓ La commande sort permet de trier des lignes. Par défaut le tri s’effectue sur tout le tableau et en
ordre croissant. Le tri est possible sur un ou plusieurs champs. La numérotation des champs commence
à 1.

sort [options] [-k pos1[,pos2]] [fic1...]


sort -k 1 liste
carte son 45 30
carte video 145 30
clavier 105 45 30
clavier 115 55 30
disque souple 10 30
disque zip 12 30
dur 30giga 100 30
dur 70giga 150 30
ecran 15 150 20
ecran 17 300 20
ecran 19 500 20
souris optique 30 15
La gestion des fichiers sous Linux

Tri de lignes
Quelques paramètres:

Option Rôle
-d Dictionnary sort (tri dictionnaire). Ne prend comme critère
de tri que les lettres les chiffres et les espaces.
-n Tri numérique, idéal pour les colonnes de chiffres.
-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.
La gestion des fichiers sous Linux

✓ Exemple, tri numérique sur le prix par produits en ordre décroissant :

sort -n -r -k 3 liste
ecran 19 500 20
ecran 17 300 20
ecran 15 150 20
dur 70giga 150 30
carte video 145 30
dur 30giga 100 30
clavier 115 55 30
clavier 105 45 30
carte son 45 30
souris optique 30 15
disque zip 12 30
disque souple 10 30

✓ Il est aussi possible de démarrer le tri à partir d’un certain caractère d’un champ. Pour cela vous devez
spécifier le « .pos » : -k1.3 commencera le tri à partir du troisième caractère du champ 1.
La gestion des fichiers sous Linux

Suppression des doublons

✓ La commande uniq permet de supprimer les doublons dans des flux en entrée ou des fichiers triés.
✓ Par exemple, voici comment sortir uniquement la liste des GID réellement utilisés comme groupe principal
des utilisateurs :
cut -d: -f4 /etc/passwd | sort -n | uniq
0
1
2
7
8
12
13
51
62
...
La gestion des fichiers sous Linux

Découpage d’un fichier en morceaux

✓ Découper: split, permet de découper un gros fichier en plusieurs morceaux d’une taille donnée.

split [-l n] [-b n[bkm] [fichier [préfixe]]

✓ La commande peut fonctionner selon deux modes :

➢ découpage par lignes avec -l : les fichiers en sortie auront tous n lignes de texte (sauf
éventuellement le dernier)

➢ découpage à taille fixe avec -b : les fichiers auront tous une taille fixe de n octets. Le suffixe b
indique une taille de n blocs (512 octets), k indique n ko (1024 octets) et m indique n Mo (1024 ko).
La gestion des fichiers sous Linux

✓ Voici un fichier de 1 Go à découper en tranches de 150 Mo. Le préfixe est fic. Chaque fichier en sortie
s’appelle ficaa, ficab, ficac, ficad, et ainsi de suite.
ls -l grosfichier
-rw-r--r-- 1 seb users 1073741824 mar 12 19:47 grosfichier
split -b 150m grosfichier fic
ls -l fic*
-rw-r--r-- 1 seb users 157286400 mar 12 20:15 ficaa
-rw-r--r-- 1 seb users 157286400 mar 12 20:15 ficab
-rw-r--r-- 1 seb users 157286400 mar 12 20:15 ficac
-rw-r--r-- 1 seb users 157286400 mar 12 20:16 ficad
-rw-r--r-- 1 seb users 157286400 mar 12 20:16 ficae
-rw-r--r-- 1 seb users 157286400 mar 12 20:16 ficaf
-rw-r--r-- 1 seb users 130023424 mar 12 20:16 ficag

✓ pour reconstruire un fichier splité à l’aide des redirections :


cat fic* > newfic
ls -l newfic
-rw-r--r-- 1 seb users 1073741824 mar 12 20:47 newfic
La gestion des fichiers sous Linux

Remplacement de caractères

Liste de caractères

✓ La commande tr permet de substituer des caractères à d’autres et n’accepte que des données
provenant du canal d’entrée standard, pas les fichiers.

tr [options] original destination

✓ L’original et la destination représentent un ou plusieurs caractères.

✓ Les caractères originaux sont remplacés par les caractères de destination dans l’ordre indiqué. Les
crochets permettent de définir des plages.
La gestion des fichiers sous Linux

Remplacement de caractères

cat liste | tr "oi" "ea"


Preduat ebjet prax quantates
Seuras eptaque 30 15
dur 30gaga 100 30
dur 70gaga 150 30
Dasque zap 12 30

✓ Avec cette commande vous pouvez convertir une chaîne en majuscules ou en minuscules.

cat liste | tr "[a-z]" "[A-Z]"


PRODUIT OBJET PRIX QUANTITES
SOURIS OPTIQUE 30 15
DUR 30GIGA 100 30
DUR 70GIGA 150 30
DISQUE ZIP 12 30
La gestion des fichiers sous Linux

Supprimer les répétitions

✓ tr admet deux paramètres, -s (squeeze) et -d (delete), qui permettent de supprimer des caractères
en doublons ou non. C’est parfait dans le cas de séparateurs multiples.

✓ Voici un exemple pratique où l’on cherche à isoler l’adresse IP d’une machine.

ifconfig eth0 | grep "inet " | tr -s " " ":" | cut -d: -f3
La gestion des fichiers sous Linux

ifconfig eth0 | grep "inet " | tr -s " " ":" | cut -d: -f3
La gestion des fichiers sous Linux

Visualisation de texte

✓ En pleine page

➢ page par page : more, less


➢ en bloc : cat
➢ à l’envers : tac
➢ numéroter les lignes : cat -n

✓ Début d’un fichier

head [-nblignes] [fic1...]

head -3 liste
Produit objet prix quantites
souris optique 30 15
dur 30giga 100 30
La gestion des fichiers sous Linux

Visualisation de texte

✓ Fin d’un fichier

Pour voir les dernières lignes d’un fichier, utilisez la commande tail.

tail -5 liste
ecran 19 500 20
clavier 105 45 30
clavier 115 55 30
carte son 45 30
carte video 145 30
La gestion des fichiers sous Linux

Comparaison de fichiers

✓ Les deux commandes permettant de comparer le contenu de deux fichiers, ou d’un fichier et d’un flux
sont les commandes diff et cmp.

✓ La commande diff indique les modifications à apporter aux deux fichiers en entrée pour que leur
contenu soit identique.

diff [-b] [-e] fic1 fic2

➢ APPEND : ligne1 a ligne3,ligne4, ex 5 a 6,8 veut dire : à la ligne 5 de fic1 il faut raccrocher les lignes
6 à 8 de fic2 pour que leurs contenus soient identiques.

➢ DELETE : ligne1,ligne2 d ligne3, ex 7,9 d 6 veut dire : les lignes 7 à 9 de fic1 doivent être
supprimées, elles n’existent pas derrière la ligne 6 de fic2.

➢ CHANGE : ligne1,ligne2 c ligne3,ligne4, ex 8,12 c 9,13 veut dire : les lignes 8 à 12 de fic1 doivent
être échangées contre les lignes 9 à 13 de fic2.
La gestion des fichiers sous Linux

✓ Dans tous les cas, le signe " < " indique les lignes de fic1 concernées, et le signe " > " les lignes de fic2
concernées.

✓ Le fichier liste est l’original. Dans liste2, la deuxième ligne a été modifiée, une ligne écran a été ajoutée
et les deux dernières lignes ont été supprimées.
La gestion des fichiers sous Linux

diff liste liste2


2c2
< souris optique 30 15
> souris boutons 30 15
9a10
> ecran 21 500 20
12,13d12
< carte son 45 30
< carte video 145 30

➢ 2c2 : les lignes 2 de liste et liste2 doivent être échangées (elles doivent concorder soit en optique, soit en
boutons).

➢ 9a10 : après la ligne 9 de liste (écran 19) il faut ajouter la ligne 10 (écran 21) de liste2.

➢ 12,13d12 : les lignes 12 et 13 de liste (carte son et vidéo) doivent être supprimés car elles n’existent pas
après la ligne 12 de liste2.
La gestion des fichiers sous Linux

✓ La commande cmp compare les fichiers caractère par caractère. Par défaut la commande s’arrête dès la
première différence rencontrée et indique la position de l’erreur.
cmp liste liste2
liste liste2 differ: char 38, line 2
✓ Le paramètre -l détaille toutes les différences en trois colonnes. La première colonne représente le
numéro de caractère, la deuxième la valeur ASCII du caractère concerné de fic1 et la troisième la valeur
ASCII du caractère concerné de fic2.
cmp -l liste liste2
38 157 142
39 160 157
40 164 165
41 151 164
42 161 157
...
La gestion des fichiers sous Linux

Vous aimerez peut-être aussi