Vous êtes sur la page 1sur 116

SYSTÈMES D'EXPLOITATION

« OPEN SOURCE »
SOMMAIRE
Installer et désinstaller des systèmes d'exploitation
Introduction au monde Gnu/Linux
Présentation générale du système Gnu/Linux
Installation d’une distribution Gnu/Linux
Adapter les systèmes en fonction des besoins particuliers
Environnement graphique sous Gnu/Linux (KDE)
Environnement graphique sous Gnu/Linux (GNOME)
Effectuer les opérations de base concernant l’exploitation des fonctions
du système d’exploitation.
Commandes Gnu/Linux de base
Les systèmes de fichiers sous Gnu/Linux
Utilisation du shell Bash
L’Editeur de texte vii
Réaliser des tâches d’administration du système d’exploitation
Gestion des utilisateurs et de la séurité sous Gnu/Linux
Planification des tâches sous Gnu/Linux
Installer une imprimante
Configuration de l’imprimante sous Gnu/Linux
Protéger des données
Sauvegarde des données sous Gnu/Linux
Gérer des paquetages
Installation d’applications sous Gnu/Linux
Documenter les interventions effectuées.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Effectuer les opérations de base
concernant l’exploitation des
fonctions du système d’exploitation
SOMMAIRE
1. Login et déconnexion
2. Arrêt et redémarrage du système
3. Pages de manuel
4. Opérations de base sur les répertoires
5. Notions sur les chemins Unix
6. Opérations de base sur les fichiers
7. Autres commandes utiles
a. Gestion des liens
b. Recherche de fichiers
c. Recherche d'un texte dans un fichier
d. Remplacement de texte dans les fichiers
e. Compression et décompression des fichiers
f. Archivage de fichiers
g. Passage en mode superviseur
h. Changement des droits des fichiers, du propriétaire et du groupe
8. vi, l'éditeur de fichiers de base
9. Utilisation du shell Bash

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Login et déconnexion
Les Utilisateurs
Linux est multi-utilisateurs
nécessité d'avoir un nom particulier aux yeux du système ("login")
ainsi qu'un mot de passe pour la sécurité
2 types d'utilisateurs :
l'utilisateur "root" : super utilisateur -> possède tous les droits sur la
machine
les autres utilisateurs (possèdent des droits restreints)
Chaque utilisateur est caractérisé par :
un nom ("login") et un numéro d'utilisateur ("UID")
un groupe et un numéro de groupe ("GID")
un mot de passe ("passwd")
un type de shell (= interpréteur de commandes)
un répertoire utilisateur qui lui appartient ("home directory")
(Rq : toutes ces informations sont stockées dans le fichier /etc/passwd)
SYSTÈMES D'EXPLOITATION « OPEN SOURCE »
Les opérations de base
Login et déconnexion
Autres commandes utiles

Saisie du nom
d'utilisateur

saisie du mot de
passe

type de session X (KDE ou gnome)

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Login et déconnexion
Mot de passe
le mot de passe est personnel :
ne pas le divulguer
éviter les mots de passe triviaux (e.g. votre nom…)
utiliser des lettres (majuscules et/ou minuscules) et
des chiffres (éventuellement des caractères spéciaux)
doit faire 8 lettres au minimum

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Login et déconnexion
L'environnement X-Windows
On arrive sous l'environnement X-Windows (KDE ou gnome = interface graphique
rendant l'interaction avec le système plus conviviale) :

icône

bureau

ouverture
d'un shell
barre de tâches

bouton de menu

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Login et déconnexion
Déconnexion
L'arrêt du système est une opération qui est du ressort de l'administrateur.
On ne peut donc le réaliser que sous le compte root. Plusieurs commandes
sont disponibles, les plus simples sont données ci-dessous :
halt, qui permet d'arrêter le système.
reboot, qui permet de le redémarrer.
logout
exit
CTRL+d
Ces commandes sont en fait des scripts permettant d'effectuer les opérations
d'arrêt et de redémarrage du système rapidement. Si elles ne sont pas
disponibles sur votre distribution, vous devrez sans doute utiliser la
commande générique suivante :
shutdown [-r] now où l'option -r permet de demander un redémarrage et non
un arrêt simple.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Login et déconnexion
Déconnexion
Il est également possible que votre gestionnaire de bureau vous donne le moyen
d'arrêter l'ordinateur par l'intermédiaire de l'interface graphique. La technique à
utiliser dépend évidemment de l'environnement que vous aurez installé

click droit sur "le bureau"


dans la barre de menu "logout"

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Login et déconnexion
Les terminaux
Linux fournit, pour l'utilisateur local, plusieurs terminaux virtuels. Cela signifie qu'il
est possible de se connecter plusieurs fois dans le système dans des terminaux
différents.
Pour passer d'un terminal virtuel à un autre, il suffit de taper les combinaisons de
touches ALT+DROITE ou ALT+GAUCHE, où DROITE et GAUCHE sont
respectivement les flèches du curseur droite et gauche.
Il est également possible d'accéder à un terminal donné à l'aide de la combinaison
de touches ALT+Fn, où Fn est l'une des touches de fonction F1, F2, F3, etc.
La plupart des distributions utilisent au moins quatre terminaux virtuels, plus un
terminal X.
Pour basculer d’un terminal X vers les terminaux en mode texte on utilise la
combinaison de touches CTRL+ALT+Fn.
Pour revenir au mode graphique, il faut en général utiliser la combinaison Alt+F7.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Login et déconnexion
Les terminaux
Afin de pouvoir accéder au terminal, vous devez au préalable vous identifier
grâce à un couple login/mot de passe. En fonction de cela, vous aurez accès
à plus ou moins de programmes sur le système.
Un symbole de l'invite de commande vous permet de déterminer le type de
compte que vous utilisez.
Accès simple utilisateur :
[ user@localhost ~ ] $
Accès root :
[ root@localhost ~ ] #

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Le shell
Le rôle du Shell est d'assurer la correspondance entre ce que l'utilisateur tape et le
système. Il en existe de nombreuses versions. Le plus connus d'entre eux, bash est
celui que nous utiliserons pendant ce cours.
Chacun des shells existant dispose de ses propres avantages et points faible.
L'intérêt d'avoir un shell plutôt qu'un autre dépend des fonctionnalités offertes par
celui-ci, et donc de l'utilisation que l'on souhaite en avoir.
Les principaux shells ainsi que leurs caractéristiques :
Bash (Bourne Again Shell) offre l'édition de la ligne de commande et le rappel
des commandes précédentes
Csh (C Shell) développé à Berkeley, compatible avec le shell Bourne. Pas
d'édition de la ligne de commande ni d'historique des commandes
Ksh (Korn Shell) offre l'édition de la ligne de commande (touches compatibles
Emacs)
Sh le shell original, pas d'édition de la ligne de commande.
Tcsh version améliorée du csh, avec un support de l'édition de la ligne de
commande avec correction des commandes tapées
Zsh shell similaire au Korn shell, avec plus de dynamisme lors des
affichages et gère la non redondance des commandes.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Le shell

invite ("prompt")

le shell est prêt à


recevoir des commandes
rentrées au clavier

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Commandes internes et externes
Le shell distingue deux sortes de commandes :
les commandes internes
les commandes externes.
commandes internes
Une commande interne est une commande dont le code est implanté au sein de
l’interpréteur de commande. Cela signifie que, lorsqu’on change de shell courant ou
de connexion, par exemple en passant de bash au C-shell, on ne dispose plus des
mêmes commandes internes.
Exemples de commandes internes : cd , echo , for , pwd
Commandes externes
Une commande externe est une commande dont le code se trouve dans un fichier
ordinaire. Le shell crée un processus pour exécuter une commande externe. Parmi
l’ensemble des commandes externes que l’on peut trouver dans un système, nous
utiliserons principalement les commandes unix (ex : ls, mkdir, vi, sleep)
Remarque : pour connaître le statut d’une commande, on utilise la commande interne
type.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Syntaxe générale des commandes UNIX
syntaxe générale :

commande [options] [arguments]


exemple : ls –al

Les options (souvent très nombreuses) permettent de modifier le


comportement de la commande; en général elles sont précédées du
signe '-' (e.g. ls -l)
Certaines commandes utilisent des arguments (e.g. nom de fichier)

IMPORTANT :
Linux est sensible à la casse ( a != A): ls != LS ou de Ls
Unix utilise l'espace comme séparateur de commandes
(e.g. utiliser man date et non mandate)

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Utilisation de l'aide
Les pages de manuel ou man pages
Sur un système Unix / Linux, la plupart des logiciels sont installés avec un manuel
accessible par la commande man.
La syntaxe est la suivante :
man fonction_ou_commande
La commande : man man donne des informations sur l'utilisation du manuel en
général.
La commande man peut également être utilisée pour rechercher un terme dans
l'ensemble des pages de manuel, grâce à l'option -K
user@localhost $ man -K "disk space"
Celle-ci me retourne :
/usr/share/man/man1p/df.1p.gz? [ynq]
Correspondant à une occurrence de "disk space" dans la liste des manuels
disponibles sur le système.
Afin de se déplacer dans les résultats, les commandes suivantes sont disponibles :
y : Afficher le manuel du résultat
n : L'occurrence continue d'être recherchée dans la liste des manuels
q : Retour au shell

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Utilisation de l'aide
Aide simplifiée
Nous venons de voir qu'il était possible de connaître la définition d'une
commande par le manuel de celle-ci, mais il est aussi possible d'en avoir un
résumé via l'option --help
user@localhost $ df --help
Usage: df [OPTION]... [FILE]...
Show information about the filesystem on which each FILE resides,
or all filesystems by default.
Mandatory arguments to long options are mandatory for short options too.
-a, --all include filesystems having 0 blocks
-B, --block-size=SIZE use SIZE-byte blocks
-h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G)
-H, --si likewise, but use powers of 1000 not 1024
-i, --inodes list inode information instead of block usage
-k like --block-size=1K
Celle-ci permet donc de voir rapidement ou encore de vérifier l'existence
d'une option.
SYSTÈMES D'EXPLOITATION « OPEN SOURCE »
Les opérations de base
La commande echo
Affichage de texte brut

La commande echo affiche les paramètres qui lui sont passés, sans modification.

[ user@localhost ~ ] $ echo Hello World


Hello World
Pour les options de cette commande, elles sont simples, consultez la page de manuel.

Caractère Effet
\n Saut de ligne (newline)
\b Retour arrière (backslash)
\t Tabulation
\c Pas de retour à la ligne (carriage)
\\ Affiche \
\$ Affiche $

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
La commande echo
Affichage de variables d’environnement

[ user@localhost ~ ] $ echo $HOME


/home/user
La commande echo reçoit en fait le texte /home/user , parce que l’interpréteur
de commandes bash a réalisé une opération nommée “interpolation de variables”
avant de procéder à l’exécution de la commande spécifiée.
Une variable est un nom préfixé par le symbole $
Une seconde syntaxe est utilisable :
[ user@localhost ~ ] $ echo ${HOME}_SWEET_HOME
/home/user_SWEET_HOME
Les accolades permettent de spécifier les caractères qui doivent être considérés
comme faisant partie du nom de la variable

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
La commande echo
Bloquer l’interpolation

Et comment faire pour afficher le symbole $ ? Plusieurs méthodes :


[ user@localhost ~ ] $ echo \$HOME
$HOME
OU

[ user@localhost ~ ] $ echo ‘$HOME’


$HOME

Dans le premier exemple, on utilise le caractère d’échappement pour interdire


l’interprétation d’un seul caractère. Dans le second, on masque l’ensemble de la
chaîne à l’aide des quotes simples, le texte est donc passé sans modification à la
commande echo

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Opérations de base sur les répertoires
pwd
Permet d'afficher le chemin complet du répertoire courant (actif )
[ user@localhost ~ ] $ pwd
/home/user

ls [options] [fichier]
où fichier est le nom d'un fichier ou d'un répertoire que l'on désire lister.
Si ce paramètre est absent, ls affichera tous les fichiers du répertoire courant.
Les principales options sont -l, qui permet d'afficher des informations
étendues (notamment les propriétaires, les groupes, les droits, la taille et
éventuellement les liens), et -a, qui permet d'afficher tous les fichiers, y
compris les fichiers cachés (ceux dont le nom commence par un point).

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Opérations de base sur les répertoires
cd [chemin]
où chemin est un chemin de répertoire Unix valide.
Ce chemin est constitué des noms des répertoires et sous-répertoires successifs,
séparés par des barres obliques « / ». Si aucun chemin n'est spécifié, cette commande change le
répertoire courant pour le répertoire personnel de l'utilisateur

cd ~ : Vous place dans le répertoire racine de l'utilisateur (souvent


/home/nom_utilisateur)
cd .. : Répertoire parent
cd / : Répertoire racine
cd rep : Vous place dans le répertoire nommé si celui ci est un répertoire enfant du
répertoire actuel
cd rep1/rep2 : Vous place dans rep2 qui se trouve lui même dans rep1
Exemple :
Vous êtes dans le répertoire /home/autre/essai
pour passer rapidement dans le répertoire sound
qui et lui même dans le répertoire /etc
cd /etc/sound

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Opérations de base sur les répertoires
La commande mkdir (make directory) permet de créer un ou plusieurs répertoires,
ou une arborescence complète.
mkdir chemin
où chemin est le chemin spécifiant le répertoire à créer. Si le chemin ne contient
que le nom du répertoire à créer, celui-ci est créé dans le répertoire courant et
devient donc un sous-répertoire.
$ mkdir documents
$ mkdir documents/texte documents/calcul documents/images

La commande mkdir accepte un paramètre « -p » permettant de créer une


arborescence. Dans l'exemple précédent, si je veux créer documents/texte
et que documents n'existe pas, alors :
$ mkdir -p documents/texte
va créer à la fois documents et texte.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Opérations de base sur les répertoires
La commande rmdir (remove directory) supprime un ou plusieurs répertoires. Elle
ne supprime pas 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.
rmdir rep1 [rep2] ... [repn]
$ cd documents
$ rmdir texte/perso

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Opérations de base sur les fichiers
touch :
permet de créer un fichier s'il n'existe pas, et s'il existe de modifier sa date d'accès et
sa date de modification,

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


répertoire.
cp fic1 fic2
cp fic1 [fic2 ... ficn] rep1
Dans le premier cas, fic1 est recopié en fic2. Si fic2 existe, il est écrasé sans avertissement (sauf
droit particulier). Dans le second cas, fic1, fic2 et ainsi de suite sont recopiés dans le répertoire rep1.
Les chemins peuvent êtres absolus ou relatifs.
mv source destination
Permet le déplacement des fichiers. où source est le nom du fichier source et destination est le
nom du répertoire destination.
Notez que mv est une commande très puissante, puisqu'elle permet également de déplacer
des répertoires et de renommer des fichiers et des répertoires.
Pour renommer un fichier ou un répertoire, il suffit d'indiquer le nouveau nom de ce fichier
ou de ce répertoire à la place de destination

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Opérations de base sur les fichiers
rm chemin
où chemin est le chemin complet permettant d'accéder au fichier à supprimer.
Il est possible de spécifier plusieurs fichiers à la commande rm. Dans ce cas, ils
seront tous supprimés.
rm est également capable de supprimer tous les fichiers d'un répertoire, ainsi que
ses sous-répertoires. Dans ce cas, elle détruit toute une branche de l'arborescence
du système de fichiers. Pour cela, il suffit d'utiliser l'option -rf (pour « récursif »)
avant le chemin du répertoire à supprimer.
Attention ! : La commande rm ne demande aucune confirmation avant de supprimer
les fichiers !
Il peut être judicieux de forcer la commande rm à demander confirmation avant la
suppression des fichiers, à l'aide de son option -i
$ cd
$ rm -rf documents

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Opérations de base sur les fichiers
less fichier
Vous aurez sans doute à afficher le contenu d'un fichier. Pour cela, la commande la plus
appropriée est certainement la commande less
Cette commande affiche le contenu du fichier et vous permet de le faire défiler avec les flèches
du curseur. Lorsque vous désirez terminer la visualisation, il suffit de taper la touche q
La commande less permet également d'effectuer une recherche dans le fichier en cours
d'édition. Pour cela, il suffit de taper une commande de recherche de less. Cette commande
commence par une barre oblique, suivie du texte à chercher. Par exemple, pour rechercher la
chaîne de caractères « local » dans un fichier en cours de visualisation avec less, il suffit de
taper : /local
Lorsque vous voudrez rechercher l'occurrence suivante du motif de recherche, vous pourrez
appuyer sur la touche n (pour « Next » en anglais). Pour rechercher l'occurrence précédente, il
suffit de taper la touche N (en majuscule, cette fois).

more fichier
Cette commande effectue à peu près le même travail que less, mais elle n'affiche le texte
que page par page.
- Pour passer à la page suivante, il faut appuyer sur la barre d'espace
- utiliser la touche b pour revenir à la page précédente
- utiliser la touche q pour quitter

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Autres commandes sur les fichiers
Comptage de lignes d'un fichier : wc
Synthaxe :
wc [options] fichiers
options :
-c : compte le nombre de caractères uniquement
-l : compte le nombre de lignes uniquement
-w : compte le nombre de mots uniquement

Exemple :

$ wc /etc/group
43 43 579 /etc/group

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Autres commandes sur les fichiers
Comparaison de deux fichiers : diff
Synthaxe :
diff [options] fichier1 fichier2
comparaison (fichiers texte) ligne à ligne de fichier2 par rapport à fichier1
options :
-c : compte le nombre de caractères uniquement
-u : compte le nombre de lignes uniquement
Exemple :

$ cat fichier1 cat fichier2 $ diff fichier1 fichier2


option1 = texte1 option1 = texte1 2c2
option2 = texte2 option2 = modification < option2 = texte2
option3 = texte3 option3 = texte3 ---
> option2 = modification
Traduction
2c2 : la ligne 2 de fichier2 est changée par rapport à la ligne 2 de fichier1

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Autres commandes sur les fichiers
Premières lignes d'un fichier : head
Synthaxe :
head [-nombre] fichiers
Extrait les « nombre » premières ligne d'un fichier
« nombre » vaut 10 par défaut

Dernières lignes d'un fichier : tail


Synthaxe :
tail [-nombre] fichiers : affiche les n dernières lignes
tail [+nombre] fichiers : affiche de la nième ligne à la dernière
« nombre » vaut 10 par défaut

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Autres commandes sur les fichiers
Nature d'un fichier : file
Synthaxe :
file fichiers
Détermine le type d'un fichier ou à quelle application elle correspond

Exemple :
$ file *

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Autres commandes utiles
Gestion des liens
ln [-s] source lien
Permet de créer un lien. où source est le nom du fichier ou du répertoire source auquel le lien
doit se référer, et lien est le nom du lien. L'option -s permet de créer un lien symbolique.
Par défaut, ce sont des liens physiques qui sont créés. Rappelons qu'il est impossible de créer
des liens physiques sur des répertoires.
$ touch fic1
$ ln fic1 fic2
$ ls
fic1 fic2
$ ls -l
-rw-r--r-- 2 oracle system 0 Jul 25 11:59 fic1
-rw-r--r-- 2 oracle system 0 Jul 25 11:59 fic2
$ ls -i
484 fic1 484 fic2
L'exemple montre que les hard links n'ont pas de type particulier et sont considérés comme
des fichiers ordinaires. On constate que chacun a 2 liens. Logique puisque deux fichiers
pointent sur le même inode. Enfin nous voyons bien en résultat du ls -i que fic1 et fic2 ont le
même inode, à savoir 484.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Autres commandes utiles
Recherche de fichiers
find répertoire -name nom –print
Permet de rechercher des fichiers selon un critère donné dans toute une
arborescence de répertoires. où répertoire est le répertoire à partir duquel la
recherche doit commencer et nom est le nom du fichier à rechercher. Ce nom peut
contenir des caractères génériques du shell, mais dans ce cas doit être placé entre
guillemets afin d'éviter que ce dernier ne les interprète.
Options les plus fréquentes :
-name : Recherche d'un fichier par son nom
-iname : Même chose que name mais insensible à la casse
-type : Recherche de fichier d'un certain type
-atime : Recherche par date de dernier accès
-mtime : Recherche par date de dernière modification
-print : demande à find d'afficher le résultat
-exec : Exécute la commande donnée aux fichier trouvés
-ok : Même chose que exec mais demande une confirmation

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Autres commandes utiles
Exemples d'utilisation de find
find /home/ -name monfichier -print
Recherche le fichier monfichier dans toute la descendance de /home/
find . -name "*.c" -print
Recherche tous les fichiers ayant une extension .c
find . -mtime -5 -print
Recherche les fichiers du répertoire courant qui ont été modifiés entre maintenant et
il y a 5 jours
find /home/ -mtime -1 /! -type d -print
Recherche uniquement les fichiers (! -type d signifie n'était pas un répertoire) ayant
été modifiés ces dernières 24h
find . ! -user root -print
Affiche tous les fichiers n'appartenant pas à l'utilisateur root
find -name "*.png" -exec ls -l {} \;
trouve les fichiers au format png dans le dossier en cours et affichage du
résultat par la commande ls -l

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Autres commandes utiles
Recherche d'un texte dans un fichier
grep texte fichiers
La recherche d'une chaîne de caractères dans un ou plusieurs fichiers peut se faire
à l'aide de la commande grep. Cette commande prend en premier paramètre le
texte à rechercher, puis la liste des fichiers dans lequel ce texte doit être trouvé
Le texte peut être placé entre guillemets si nécessaire (en particulier, s'il contient
des espaces ou des caractères interprétés par le shell, comme * et ?).
grep accepte un grand nombre d'options, qui ne seront pas décrites ici. Consulter
les pages de manuel pour plus d'information à ce sujet.
-c : Retourne le nombre de lignes au lieu des lignes elles mêmes
-n : Retourne les lignes préfixées par leur numéro
-i : Insensible à la casse
-r : Recherche récursivement dans tous les sous-répertoires
Exemple :
grep -n montexte monfichier
Retourne toutes les lignes ainsi que leur numéro ou montexte apparait dans
monfichier

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Autres commandes utiles
Critères de recherche sur noms de fichier
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 spécial 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
[!...] Inversion de la recherche

Ainsi,
• ls a* : tous les fichiers commençant par a
• ls a?? : tous les fichiers de trois caractères commençant par a
• ls a??* : tous les fichiers d'au moins trois caractères et commençant par a
• ls [aA]* : tous les fichiers commençant par a ou A
• ls [a-m]?*txt : tous les fichiers commençant par les lettres de a à m, possédant au
moins un second caractère avant la terminaison txt.
C'est le shell qui est chargé d'effectuer la substitution de ces caractères avant le passage
des paramètres à une commande

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Autres commandes utiles
Passage en mode superviseur
Si vous êtes prudent, vous avez sans doute créé un compte utilisateur juste après
avoir installé votre système de base, et vous ne travaillez plus que dans ce compte.
Cette technique est prudente, cependant, elle pose un problème évident : vous ne
pouvez pas y faire votre travail d'administrateur. C'est pour cela que la commande su
a été créée. Cette commande permet de changer son identité dans le système :

su [utilisateur]

où utilisateur est l'utilisateur dont on veut prendre l'identité. Par défaut, si aucun
utilisateur n'est spécifié, le changement d'identité se fait vers l'utilisateur root.

Bien entendu, il va de soi que la commande su demande le mot de passe avant


d'obtempérer...

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Autres commandes utiles
Compression et décompression des fichiers
Linux fournit un grand nombre de programmes de compression de fichiers. Le
meilleur est sans doute bzip2, et le plus compatible sans doute compress.
Cependant, le plus utilisé et le plus courant, surtout pour la distribution des
sources, reste incontestablement gzip. Nous allons décrire brièvement comment
compresser et décompresser des fichiers avec gzip et bzip2 dans ce paragraphe.
La compression d'un fichier se fait de manière élémentaire :
gzip fichier
où fichier est le fichier à compresser. Après avoir effectué son travail, gzip
renomme le fichier compressé en « fichier.gz ».
La compression d'un fichier avec bzip2 utilise exactement la même syntaxe,
à ceci près qu'il faut remplacer gzip par bzip2. De plus, le nom du fichier
compressé porte l'extension .bz2 au lieu de .gz. Le fichier obtenu est donc
nommé « fichier.bz2 ».
La décompression d'un fichier se fait à l'aide de la commande suivante :
gunzip fichier.gz
ou
bunzip2 fichier.bz2

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Autres commandes utiles
Archivage de fichiers
La commande tar permet d'archiver ou de désarchiver des répertoires et des
fichiers de façon optimale. Ce programme permet simplement de regrouper tous
les fichiers qu'il doit archiver dans un seul fichier structuré en blocs
La compression d'un fichier se fait de manière élémentaire :
tar options archive [fichiers]
où options sont les options qui indiquent l'opération à effectuer et comment elle doit être
réalisée, archive est le nom de l'archive qui doit être créée ou le nom du fichier de
périphérique du d'archivage, et fichiers est la liste des fichiers à archiver.

La décompression d'un fichier se fait à l'aide de la commande suivante :


cvf pour créer une archive ;
tvf pour lister le contenu d'une archive ;
xvf pour restaurer le contenu d'une archive.
Par exemple, pour archiver le contenu du répertoire courant dans le fichier
archive.tar, vous utiliserez la ligne de commande suivante : tar cvf archive.tar *
De plus, pour extraire le contenu de l'archive archive.tar, vous utiliserez la
commande suivante : tar xvf archive.tar

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
vi, l'éditeur de fichiers de base
Vous serez obligé, lorsque vous effectuerez la configuration de votre système,
d'éditer les fichiers de configuration (classiquement, ces fichiers sont placés dans le
répertoire /etc/). Ces modifications peuvent être réalisées avec n'importe quel éditeur
a priori, et il est même conseillé d'utiliser votre éditeur favori. Cependant, il faut savoir
se servir de vi, parce que c'est le seul éditeur qui sera toujours installé, et qui
fonctionnera en toutes circonstances.
Le prix à payer pour cette fiabilité est un nombre restreint de fonctionnalités.
Pour éditer un fichier avec vi, il suffit de passer le nom de ce fichier en ligne de
commande :
vi fichier
vi est un éditeur qui fonctionne dans plusieurs modes différents :
mode insertion : ce qui est tapé est interprété comme du texte à insérer
mode commande : ce qui est tapé est interprété comme une commande
mode ex : ce qui est tapé est interprété comme une commande ex

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
vi, l'éditeur de fichiers de base
Changement de mode :
au démarrage, vi est en mode commande
pour passer en mode insertion, taper une commande d ’insertion,
par exemple « i » (sans taper RETURN)
pour retourner en mode commande, taper ESC
pour passer en mode ex depuis le mode commande, taper « : »

Déplacement du curseur :
h : un caractère vers la gauche
j : une ligne vers le bas
k : une ligne vers le haut
l : un caractère vers la droite
G : dernière ligne
nG : nième ligne
w : début du mot suivant
b : début du mot précédant

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
vi, l'éditeur de fichiers de base
insertion de texte :
a : ajoute du texte après la position courante
A : permet de placer le curseur en fin de ligne et de passer en mode insertion
i : ajoute du texte avant la position courante
o : crée une nouvelle ligne après la ligne courante
O : crée une nouvelle avant la ligne courante

Effacement de texte :
x : efface le caractère courant
dw : efface entre la position du curseur et le début du mot suivant
dG : efface entre la position du curseur et la fin du fichier
dd : efface la ligne courante
La suppression d'un caractère se fait avec la touche Suppr ou la touche de
retour arrière (dite touche Backspace).
Les commandes de vi peuvent être répétées un certain nombre de fois, en
spécifiant ce nombre avant de les écrire. Ainsi, pour supprimer 3 lignes, il suffira
de taper la commande suivante : 3dd

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
vi, l'éditeur de fichiers de base
Déplacer et copier du texte :
yy : mémorise la ligne courante
Y$ : mémorise ce qui va du curseur à la fin de la ligne
p : insère le contenu mémorisé après la position courante
P : insère le contenu mémorisé avant la position courante
u : permet d'annuler la dernière opération effectuée
U : permet de la ré-exécuter.

Sortie de vi :
:q : quitte sans sauvegarder (mode ex)
:q! : force la sortie sans sauvegarder
:w : sauvegarde l ’édition courante dans un fichier (mode ex)
:wq : sauvegarde et quitte
:wq! : force la sauvegarde et quitte

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Les droits d'accès
Classes d'utilisateurs
User (l’utilisateur)
le propriétaire du fichier (User)
il est désigné par la lettre u

Group (groupe)
le groupe dans lequel appartient le propriétaire (Group)
il est désigné par la lettre g

Others (autres)
regroupe tous les utilisateurs qui ne sont ni le propriétaire ni faisant partir du
même groupe que le propriétaire
ils sont désignés par la lettre o

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Les droits d'accès
Types d'accès
Pour chaque classe d'utilisateurs, il y a 3 types d'accès à un fichier donné :
Read (r) : en lecture
Write (w): en écriture
eXecute (x) : en exécution
Au niveau répertoire, ces droits signifient :
Read (r) : droit de lister les fichiers présents dans ce répertoire
Write (w): droit de créer ou de détruire un fichier qui s'y trouve
eXecute (x) : droit de traverser ce répertoire
3 types d'accès et les 3 classes d'utilisateurs, il y a donc 9 droits d'accès
différents
Par exemple : -rwxr-x--- signifie :
qu'il s'agit d'un fichier régulier ( le 1er caractère est un tiret -)
que le propriétaire a tous les droits (ReadWriteExecute)
que les membres du groupe ont les droits de Lire
que les autres n'ont aucun droit, ni de lecture, ni d'écriture, ni d'exécution

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Les droits d'accès
Affichage des caractéristiques : ls -l

groupe
-rw-r--r-- 1 stagiaire ofppt 58K 16 Jul 09:19 tp1.tex

nb liens propriétaire taille date nom


group
type

-rw-r--r--
user others
SYSTÈMES D'EXPLOITATION « OPEN SOURCE »
Les opérations de base
Les droits d'accès
Changer les permissions
chmod <classe op perm, …> | nnn <fichier>

classe:
u : user
g : group
chaque perm = 1 valeur:
o : others
a : all r 4

op: w 2
= : affectation x 1
- : suppr. rien 0
+ : ajout
déf. des permissions (par addition)
perm: pour chaque classe
r : lecture
w : écriture
x : exécution

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Les droits d'accès
Changer les permissions
exemples:
chmod u=rwx,g=rx,o=r tp1.tex
chmod a+x script.sh
chmod 755 script.sh

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Les droits d'accès
Umask
La commande umask ne change pas les droits sur les fichiers et répertoires
existants mais sur les fichier et répertoires à créer

Par défaut, tous les fichiers créés ont comme droit 666 et les dossiers 777.
l'umask est un masque qui va réduire ces droits.

Lors de la création d'un fichier, le système va soustraire l'umask aux droits par
défaut.

Par l'umask est à 0022 on a donc 666 - 022 = 644.

Ainsi, dans certains cas, il est plus intéressant de changer la valeur de umask
que de faire des chmod à répétition ensuite

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Les droits d'accès
Changement de propriétaire et de groupe
Le changement de propriétaire d'un fichier ne peut être réalisé que par
l'administrateur du système. Cette opération se fait à l'aide de la commande
suivante :
chown utilisateur fichier
où utilisateur est le nom de l'utilisateur qui doit devenir propriétaire du fichier, et
fichier est le fichier devant changer de propriétaire.

Le changement de groupe peut être réalisé par n'importe quel utilisateur, mais on
ne peut donner un fichier qu'à l'un des groupes dont on est membre. Cette
opération se fait à l'aide de la commande suivante :
chgrp groupe fichier
où groupe est le nom du groupe qui doit être affecté au fichier, et fichier est le
fichier devant changer de groupe. Bien entendu, l'administrateur peut affecter un
fichier à n'importe quel groupe d'utilisateur.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Les droits d'accès spéciaux (étendus )
Lorsque vous exécutez une commande, celle-ci se lance avec votre uid. Cette
commande aura donc accès seulement aux fichiers où vous possédez des droits.
Certaines commandes posent le problème suivant : pour s’exécuter, elles
doivent donner des permissions qu’un utilisateur ne devrait normalement pas
avoir. L’exemple le plus évident est celui de la commande « passwd » qui permet
de modifier le mot de passe. Cette commande modifie le fichier « /etc/passwd »
(ou le fichier « /etc/shadow ») qui contient entre autres les mots de passe cryptés
de tous les utilisateurs, alors que l’utilisateur normal n’a pas les permissions
d’écriture sur ce fichier.
$ ls -l /etc/passwd
-rw-r--r-- 1 root system 4010 Jun 6 12:26 /etc/passwd
Nous voyons que ce fichier appartient à root, et que seul root peut y écrire.
Un utilisateur simple ne peut lire que son contenu sans interagir.
La commande passwd ne devrait donc pas pourvoir modifier les fichiers
Voyons la commande passwd (/bin/passwd ou /usr/bin/passwd) :
$ ls -l /usr/bin/passwd
-rws--x--x 3 root bin 16384 Apr 12 1999 /usr/bin/passwd

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Les droits d'accès
Les droits spéciaux
SUID :
Un fichier dont le SUID bit est positionné est un fichier exécutable avec les droits
de son propriétaire.
-rwsr-xr-x
SGID :
Un fichier dont le SGID bit est positionné est un fichier exécutable avec les droits
du groupe de son propriétaire.
-rwxr-sr--
Sticky bit :
Pour un répertoire, permet d’interdire la suppression des fichiers qu’il
contient à tout utilisateur autre que le propriétaire. Néanmoins, il est toujours
possible pour un utilisateur possédant les droits d’écriture sur ce fichier de le
modifier.
Pour un fichier, le bit collant (sticky bit) indique alors que ce fichier doit
encore rester en mémoire vive après son exécution.
-rwxr-xr-t

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les opérations de base
Les droits d'accès
Les droits spéciaux
La commande chmod permet de placer les SUID-Bit et SGID-Bit.
chmod u+s commande
chmod g+s commande
Les valeurs octales sont 4000 pour le SUID-Bit et 2000 pour le SGID-Bit.
chmod 4755 commande
chmod 2755 commande
La commande chmod permet de placer le Sticky bit.
chmod o+t fichier
En octal, on utilisera la valeur 1000.
chmod 1755 commande
Prenons comme exemple le répertoire /tmp.
$ ls -ld /tmp
drwxrwxrwx 6 root system 16384 Aug 14 13:22 tmp
$ chmod o+t /tmp ou $ chmod 1777 /tmp
$ ls -ld /tmp
drwxrwxrwt 6 root system 16384 Aug 14 13:22 tmp

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Gestion des utilisateurs et des groupes
Les utilisateurs et les groupes
Le fichier /etc/passwd
Le compte d'un utilisateur est représenté par le login et un mot de passe associé.
Les utilisateurs sont identifiés par le système grâce à un UID (identifiant d'utilisateur)
unique qui est une valeur numérique.
Les informations sur les comptes utilisateurs disponibles sur une machine Unix sont
regroupées dans le fichier /etc/passwd.
Chaque ligne de ce fichier correspond à un compte.
Une ligne est composée de 7 champs séparés par des :. Les champs sont les
suivants :
login:mot-de-passe:UID:GID:info-utilisateur:répertoire-principal:shell
Login : c'est l'identifiant que doit entrer l'utilisateur pour s'authentifier.
Mot de passe : il est évident que le mot de passe soit crypter
UID : il s'agit de l'identifiant unique de l'utilisateur ( root possède l'UID 0 et les UID
inférieurs à 100 sont réservés aux comptes système )
GID : l'identifiant du groupe principal de l'utilisateur
Info utilisateur : des informations sur l'utilisateur. chaque information est séparée par une
virgule (le nom complet, numéro de poste ...).
répertoire personnel : Il s'agit du répertoire dans lequel sont stockés les fichiers
appartenant à l'utilisateur. En général de la forme /home/login.
shell : c'est l'interpréteur de commandes qui sera lancé après l'authentification.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Gestion des utilisateurs et des groupes
Les utilisateurs et les groupes
Le fichier /etc/shadow
Le fichier /etc/passwd est accessible à tout le monde. en effet, certaines commandes
ont besoin de connaître la liste des utilisateurs ou la correspondance login/UID.
La présence du mot de passe dans /etc/passwd, même crypté, pose un problème de
sécurité. La solution à ce problème est de stocker les mots de passe dans un fichier
différent : /etc/shadow. Pour garantir la sécurité, seul l'administrateur peut le lire.
Une ligne dans le fichier /etc/shadow est composé de neuf champs séparés par le
caractère :.
Login : c'est l'identifiant que doit entrer l'utilisateur pour s'authentifier.
Mot de passe : Une * dans ce champ indique le compte ne peut être connecté (cas du compte
bin par exemple). Un mot de passe commençant par !! indique que le compte est verrouillé.
Age : Le nombre de jour écoulé depuis le 1er janvier 1970 et la date de mise à jour du mot de
passe.
Période de changement : Le nombre minimum de jours entre deux changement de mots de
passe. Un 0 indique que l'utilisateur peut changer le mot de passe à n'importe quel moment.
Durée de validité : Le nombre maximum de jours pendant lesquels le mots de passe est
valide. La valeur 99999 indique que le mot de passe est toujours valide.
Durée de validité restant : Nombre de jours avant l'expiration.
Durée d'invalidation : Nombre de jour après l'expiration provoquant la désactivation
du compte. Un champ vide indique qu'il n'y a aucune désactivation
Date d'expiration : Exprimée en nombre de jour depuis la date de référence (1/1/70)

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Gestion des utilisateurs
Commandes de gestion des utilisateurs
Changer le mot de passe d'un utilisateur
La commande passwd permet de changer le mot de passe d'un utilisateur.
L'administrateur peut changer n'importe quel mot de passe. Un utilisateur normal
ne peut changer que son propre mot de passe.
passwd [options] [login]
Si l'argument login n'est pas spécifié, le changement de mot de passe s'applique
sur l'utilisateur courrant.

Afficher des informations sur un utilisateur


Pour connaître l'identité de l'utilisateur courant (bien que cela soit affiché dans la
majorité des prompts par défaut) on utilise la commande whoami.
Elle affiche le login de l'utilisateur courant. Les commandes who, users et w
permettent de connaître les utilisateurs actuellement connectés sur la machine.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Gestion des utilisateurs
Commandes de gestion des groupes
Créer un groupe
La commande groupadd permet de créer un nouveau groupe :
groupadd option groupe

Suppression d'un groupe


Pour supprimer un groupe, on utilise la commande groupdel :
groupdel GID
Note:
on ne peut pas supprimer un groupe si c'est le groupe principal d'un utilisateur.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Gestion des utilisateurs
Commandes de gestion des groupes
Modifier les groupes secondaires d'un compte
Pour modifier les groupes secondaires d'un utilisateur, on utilise la commande
usermod qui est similaire à useradd et supporte les mêmes options :
# usermod -G toto,users,fileshare,dev toto
Ceci permet d'ajouter l'utilisateur "toto" dans les groupes "toto", "users", "fileshare" et
"dev".
On peut aussi ajouter et enlever des utilisateurs d'un groupe grâce à la commande
gpasswd (Consulter les pages de manuels pour voir les option de cette commande)

Afficher des informations sur les groupes


Pour connaître les groupes auxquels appartient un utilisateur, on utilise la
commande groups. Sans argument, elle affiche les groupes de l'utilisateur courant.
Pour connaître les groupes d'un utilisateur particulier, il suffit de passer son login en
argument de la commande :
# groups
# groups toto

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les systèmes de fichiers sous Gnu/Linux
Présentation
Une unité de stockage (disque dur interne ou externe, clé USB, CDROM, DVDROM,
disquette, …), pour être utilisée par un ordinateur doit être formatée. Cela signifie
qu'on doit lui assigner un système de fichiers, indiquant les caractéristiques
possibles des répertoires et fichiers tels que le nom, la hiérarchisation, la taille
maximale, les droits d'accès et d'autres options.

Rappel sur la désignation des partitions


Le système voit les périphériques au travers d'une arborescence située dans le
répertoire système /dev/* dont la dénomination dépend du type de périphérique
et de l'ordre de branchement. (exemples pour les périphériques de stockages:
/dev/hda /dev/hdb /dev/sda /dev/sdb …)
Les partitions sont désignées par leur numéro dans le disque.
(exmples : /dev/hda1 /dev/hda2 …)

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les systèmes de fichiers sous Gnu/Linux
Création des systèmes de fichiers
Pour chaque système de fichiers, une commande spécifique est fournie afin de
le créer. Toutefois, une commande générique de création de systèmes de fichiers
permet d'uniformiser la manière de créer les systèmes de fichiers, rendant ainsi
inutile la connaissance de ces commandes spécifiques.

Cette commande générique est la commande mkfs. Elle prend en paramètre le


type de système de fichiers à créer, que l'on peut spécifier à l'aide de l'option -t

Ainsi, pour créer un système de fichiers JFS (système de fichiers journalisé créé
par IBM) sur la première partition du premier disque SCSI, il suffit d'exécuter la
commande suivante :
mkfs -t jfs /dev/sda1

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les systèmes de fichiers sous Gnu/Linux
Montage des systèmes de fichiers
Comme il l'a été vu dans le chapitre expliquant les généralités sur Unix, les
systèmes de fichiers ne sont donc pas accessibles directement. Ils doivent en effet
subir une opération que l'on nomme le montage avant de pouvoir être utilisés.
Le montage est donc l'opération qui consiste à associer un répertoire au point
d'entrée d'un système de fichiers. Une fois monté, les données d'un système de
fichiers sont accessibles à partir de ce répertoire
L'opération permettant de monter un disque suit la syntaxe suivante :
mount [-t type] fichier base
fichier est le fichier contenant le système de fichiers à monter (en général, il
s'agit d'un fichier spécial de périphérique
base est le point de montage, c'est-à-dire le répertoire à partir duquel le
système de fichiers doit être accédé
L'option -t permet d'indiquer le type du système de fichiers
Exemple :
mount /dev/hda3 /dev/stock
Rq : Le type de fichier peut être détecté automatiquement par mount par une
analyse des premiers bits de la partition demandée, néanmoins dans
certains cas il peut être nécessaire de lui imposer un format.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les systèmes de fichiers sous Gnu/Linux
Démontage des systèmes de fichiers
Il est nécessaire de signaler au système d'exploitation que l'on désire arrêter un
système de fichiers avant de couper le courant, ou que l'on désire retirer un lecteur
amovible avant de le faire, afin qu'il puisse effectuer les synchronisations
nécessaires. Ne pas le faire risquerait de provoquer des pertes de données
irrémédiables. Cette opération s'appelle simplement le démontage.
La commande permettant de démonter un système de fichiers est beaucoup plus
simple que celle permettant de les monter, car aucune option n'est nécessaire. Il
suffit en effet d'exécuter l'une des commandes suivantes :
umount fichier
ou :
umount base
fichier représente le fichier contenant le système de fichiers à démonter
base est le répertoire dans lequel ce système de fichiers est monté.
Rq : qu'il est impossible de démonter un système de fichiers qui est en cours
d'utilisation par quelqu'un

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les systèmes de fichiers sous Gnu/Linux
Configuration du montage des systèmes de fichiers
Sous Linux, toutes les partitions utilisées par le système doivent être listées dans
/etc/fstab.
Fstab est un fichier de configuration qui contient les informations sur les partitions et
les périphériques de stockages du système. C’est via ce fichier que l’on peut
informer le système sur où et comment les partitions et les périphériques de
stockages doivent être montés. C’est un simple fichier texte que l’on peut éditer avec
son éditeur de texte préféré.
voici un exemple de fichier fstab :
/dev/sda2 / ext2 defaults 1 1
/dev/sdb1 /home ext2 defaults 1 2
/dev/cdrom /media/cdrom auto ro,noauto,user,exec 0 0
/dev/fd0 /media/floppy auto rw,noauto,user,sync 0 0
proc /proc proc defaults 0 0
/dev/sda1 swap swap pri=42 0 0

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les systèmes de fichiers sous Gnu/Linux
Configuration du montage des systèmes de fichiers
Colonne 1 : Nom du périphérique
Linux utilise un système particulier pour nommer les périphériques. Le premier
disque dur dans son ensemble est nommé /dev/sda, le second /dev/sdb. La
première partition du premier disque dur est nommée /dev/sda1, la seconde
/dev/sda2 etc…
Pour les lecteurs de disques, le nommage est aussi simple. /dev/cdom ou /dev/dvd
pour un lecteur de cdrom/dvd, /dev/fd0 pour un lecteur de disquette.
Colonne 2 : Les points de montage
Comme expliqué plus haut, c’est le dossier par lequel on pourra accéder à la
partition.
/ : c’est la racine du système d’exploitation. C’est ici qu’on trouvera /bin, /etc,
/home, /mnt etc…
/home : si vous utilisez une partition différente pour votre /home vous devez le
renseigner ici.
/media/cdrom : le point de montage du lecteur optique. Lorsque vous insérez
un cdrom, vous pourrez y acceder en lecture dans ce dossier.
/media/floppy : idem pour une disquette.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les systèmes de fichiers sous Gnu/Linux
Configuration du montage des systèmes de fichiers
Colonne 3 : Système de fichier
On indique ici le type de FS de la partition concernée. Beaucoup de systèmes de
fichiers sont supportés dont ext2, ext3, swap, vfat (pout le fat32), ntfs (pour ntfs en
lecture seul) ntfs-3g (pour du ntfs en lecture écriture si le paquet ntfs-3g est installé
sur votre machine) et bien d’autres. Lorsque auto est renseigné ici, cela signifie
qu’on laisse le système détecter lui même le système de fichier. Ceci est
particulièrement utilisé pour les cdroms et les disquettes
Colonne 4 : Les options
auto et noauto : Le système de fichier est (n’est pas) monté automatiquement
au démarrage de la machine.
user et nouser : user permet aux utilisateurs normaux de monter le
périphérique. nouser leur enlève cette possibilité.
exec et noexec : permet d’exécuter (ne pas exécuter) des binaires sur la
partition concernée.
ro : montage en lecture seule.
rw : montage en lecture écriture.
sync et async : Les entrées sorties se font en mode synchrone / asynchrone.
defaults : utilise les options par défaut, c’est à dire rw,exec,auto,nouser,async.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les systèmes de fichiers sous Gnu/Linux
Configuration du montage des systèmes de fichiers
Colonne 5 et 6 : option dump et fsck
Dump est un outil de sauvegarde et fsck un outil de vérification du système de
fichier.
La cinquième colonne définie donc l’option de dump. Dump utilise ce chiffre
pour savoir s’il doit faire un backup des données (1) ou pas (0).
La sixième colonne pour fsck. Il utilise ce chiffre pour savoir, sur un disque
donné, dans quel ordre il doit effectuer les vérifications.
Pour le système de fichiers racine, la valeur devrait être 1. Pour les autres
systèmes de fichiers, la valeur devrait être 2 (ou 0 s'il n'est pas nécessaire de
vérifier le système de fichiers).

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les systèmes de fichiers sous Gnu/Linux
Configuration du montage des systèmes de fichiers
Monter ses partitions Windows
Préparer le montage d'une partition fat
Le système de fichiers de type FAT (FAT 16 ou FAT 32) est utilisé par Windows
95/98/ME et parfois par Windows 2000/XP. Le pilote Linux pour ce type de
système de fichiers permet d'y avoir accès en lecture et en écriture.
Supposons que votre partition Windows de type FAT soit /dev/hda1 (première
partition primaire sur le disque dur ide maître de la première nappe). Nous
allons la monter dans le répertoire /mnt/win1 qu'il faut créer au préalable :
# mkdir /media/win1
Ensuite, éditez en root le fichier /etc/fstab et rajoutez la ligne suivante :
/dev/hda1 /media/win1 vfat defaults,user 0 0

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les systèmes de fichiers sous Gnu/Linux
Configuration du montage des systèmes de fichiers
Monter ses partitions Windows
Préparer le montage d'une partition NTFS
Le système de fichiers de type ntfs est souvent utilisé par Windows 2000, XP et
Vista. Pour pouvoir lire et écrire sur ces systèmes, il faut d'abord installer un
pilote particulier, ntfs-3g.
Supposons que votre partition Windows de type ntfs soit /dev/sda5 (premier
lecteur logique sur le premier disque dur sata). Nous allons la monter dans le
répertoire /media/win2 qu'il faut créer au préalable :
# mkdir /media/win2
Ensuite, éditez en root le fichier /etc/fstab et rajoutez la ligne suivante :
/dev/sda5 /media/win2 ntfs-3g defaults,user 0 0
Note
Le noyau Linux comporte déjà un pilote pour le système de fichiers ntfs, mais celui-ci ne permet
pas de créer de nouveaux fichiers. ntfs-3g, qui est un pilote qui permet un accès complet en
lecture et en écriture.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les systèmes de fichiers sous Gnu/Linux
Configuration du montage des systèmes de fichiers
Monter les partitions
Vous avez rajouté les entrées nécessaires dans le fichier /etc/fstab : vos partitions
Windows seront donc dorénavant montées automatiquement dès le démarrage. Mais
pour éviter de redémarrer, vous allez simplement demander au système de monter
les partitions citées dans fstab et non déjà montées avec la commande suivante :
# mount -a
Si aucun message d'erreur n'apparaît, vous devez maintenant pouvoir voir le
contenu de votre ou vos partition(s) Windows dans l'arborescence de votre système.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les systèmes de fichiers sous Gnu/Linux
Configuration du montage des systèmes de fichiers
Monter sa clé usb
Si vous avez une clé usb (ou n'importe quel périphérique compatible avec la
norme de stockage de masse usb), commencez par créer le répertoire dans
lequel vous monterez la clé :
# mkdir /media/clef0
Identifiez le nom de périphérique correspondant à votre clef usb : affichez la
liste des partitions disponibles avec la commande cat /proc/partitions, puis
introduisez votre clef, et, après quelques secondes, affichez à nouveau le
contenu de /proc/partitions, dans lequel votre clef à dû apparaître.
Ensuite, éditez en root le fichier /etc/fstab et rajoutez la ligne suivante :
/dev/sda6 /media/clef0 vfat defaults,user 0 0
Vous pouvez alors monter votre clé usb :
# mount /media/clef0
Attention
N'oubliez pas de démonter votre clé usb avant de la débrancher, sous peine de corrompre
les données qui y sont stockées : umount /media/clef0

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Contrôle des processus
Définition et environnement
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 ...).
Durant sa vie (temps entre le lancement et la sortie) un processus peut passer par
divers états ou process state :
Actif: le processus utilise le processeur et est donc en train de réaliser des actions pour
lequel il a été conçu.
Exécutable : le processus est en exécution mais il est en attente de libération du processus
qui est utilisé par un processus actif. Pour l'utilisateur, ceci est invisible car l'opération est
très rapide.
Endormi: comme son nom l'indique, le processus est endormi, il ne fait rien.
Par exemple, un processus peut attendre un événement pour redevenir Actif, comme par
exemple, que l'on appuie sur une touche lors de l'affichage d'un message.
Zombie: un processus zombi est un processus terminé mais le système ou le processus
parent n'en a pas été informé
le système étant multi-tâches un certain nombre de processus tournent déjà sur la
machine sans que nous le voyons. De même le shell que nous utilisons est lui-
même un processus. Quand une commande est saisie, le shell créé un nouveau
processus pour l'exécuter, ce processus devient un processus enfant du shell

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Contrôle des processus
Liste des processus
La commande ps (process status) permet d'avoir des informations sur les processus
en cours. Lancée seule, elle n'affiche que les processus en cours lancés depuis
l'utilisateur et la console actuels :
$ ps
PID TTY TIME CMD
2663 pts/2 00:00.00 bash
7082 pts/2 00:00.00 ps
Pour avoir plus d'informations, on peut utiliser l'option -f.
$ ps -f
UID PID PPID C STIME TTY TIME CMD
root 2663 2656 0 jan08 pts/2 00:00.00 /bin/bash
root 7198 2663 0 03:20 pts/2 00:00.00 ps -f
Colonne Définition
UID User ID, nom de l'utilisateur
PID Process ID, numéro du processus
PPID Parent Process ID, numéro du processus père
C Facteur de priorité, plus la valeur est grande plus la priorité est élevée
STIME Heure de lancement du processus
TTY Nom du terminal depuis lequel le processus a été lancé.
TIME Durée de traitement du processus
CMD Commande exécutée

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Contrôle des processus
Liste des processus
Options de la commande ps
Les options les plus utiles sont :
a : ( autres ) présente également les processus des autres utilisateurs
x : affiche les processus qui n’ont pas de terminal de contrôle (système)
u : présente le nom de l’utilisateur et l’heure de lancement
ps –aux : affiche tous les processus d’un système

Autres commande d’affichage des processus


La commande pstree permet d’afficher les processus sous forme d’arborescence
La commande top : outil semi-graphique présentant un grand nombre
d’informations en temps réel sur les processus...

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Contrôle des processus
Arrière plan / Avant plan
Lorsque vous lancez un programme, le shell prend en compte l'exécution du
processus, ainsi il faut attendre la fin de celui-ci avant d'avoir à nouveau le prompt.
On dit que le processus est en "Avant Plan" dans cet état il peut recevoir directement
des signaux par les combinaisons de touches Ctrl-?.

Il existe un autre mode dans lequel le processus est dit en "Arrière plan",
contrairement au mode "Avant Plan" lors de l'exécution du programme, le shell
affiche le prompt directement sans attendre la fin du processus.

Afin de mettre le processus dans ce mode il suffit de placer un "&" à la fin de la


commande, il est ainsi vu comme un job possédant un numéro, attaché au terminal
(tty) ou pseudo terminal (pts/?) dans lequel il a été lancé. Dans cet état aucun
caractère de contrôle (Ctrl-?) n'est possible.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Contrôle des processus
Arrêt d'un processus / signaux
Lorsqu'un processus tourne en tâche de fond il ne peux pas être arrêté par une
quelconque combinaison de touches. Pour cela il faut employer la commande kill.
Contrairement à ce que son nom semble indiquer, le rôle de cette commande n'est
pas forcément de détruire ou de terminer un processus mais d'envoyer des signaux
aux processus.
Le signal est l'un des moyens de communication entre les processus. Lorsqu'on
envoie un signal à un processus, ce dernier doit l'intercepter et réagir en fonction de
celui-ci. Les signaux sont numérotés et nommés.
kill -Num_signal PID [PID2...]
où signal est une option qui permet de préciser le signal qui doit être envoyé, et PID
est le numéro du processus qui doit le recevoir. Les numéros de signaux les plus
importants sont décrits dans le tableau ci-dessous :
Numéro de signal Signification
15 Signal de terminaison de processus.
9 Signal de destruction inconditionnelle de processus.
19 Signal de suspension de processus.
18 Signal de reprise d'exécution d'un processus suspendu.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Contrôle des processus
Arrêt d'un processus / signaux
Tout processus lancé en ligne de commande peut être arrêté immédiatement sous
Linux. Pour cela, deux méthodes sont disponibles.
La première consiste à taper la combinaison de touches CTRL+C lorsque le
processus est en cours d'exécution interactive (c'est-à-dire lorsqu'il n'a pas été
lancé en arrière-plan). S'il a été lancé en arrière-plan, on peut soit le ramener en
avant-plan (avec la commande fg, que l'on verra plus loin) avant d'utiliser
CTRL+C,
soit lui envoyer le signal de terminaison à l'aide de la commande kill vue
précédemment. Dans le cas d'une ligne de commande, le signal de terminaison
est transmis au processus maître de la ligne de commande, et est ensuite
propagé à l'ensemble des processus fils de ce processus. Cela signifie que tous
les processus invoqués dans le cadre de cette commande sont également
arrêtés

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Contrôle des processus
Gel d'un processus
Il est possible de « geler » un processus en cours d'exécution, c'est-à-dire de le
suspendre, sans pour autant l'arrêter définitivement. Cela peut être utilisé pour
libérer un peu les capacités de calcul, lorsque ce processus consomme trop de
ressources par exemple. Pour cela, deux méthodes sont possibles :
soit on utilise la combinaison de touches CTRL+Z, lorsque le processus est en
avant-plan ;

soit on envoie le signal 19 au processus (signal « STOP ») à l'aide de la


commande kill.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Contrôle des processus
Relancement d'un processus
Un processus suspendu peut être relancé soit en avant-plan, soit en arrière-plan.
Pour relancer un processus en avant-plan, il faut utiliser la commande fg, qui
est l'abréviation de l'anglais « foreground », Cette commande s'utilise de la
manière suivante :
fg [PID]
où PID est le PID du processus à relancer en avant-plan. Si ce paramètre n'est pas
spécifié, le dernier processus stoppé sera relancé en arrière-plan

Pour lancer un processus en arrière-plan, il faut utiliser la commande bg, qui est
l'abréviation de l'anglais « background ». Cette commande s'utilise de la même
manière que la commande fg :
bg [PID]
Le relancement d'un processus suspendu peut également se faire en lui envoyant le
signal 18 à l'aide de la commande kill.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Contrôle des processus
Exemple :
Prenons un exemple, vous devez avoir sur vôtre système une commande yes, qui ne fait rien
d'autre que d'afficher des Y à l'écran : Testez la : # yes
Interrompez son exécution avec la combinaison des touches [ Ctrl ]+[ C ]
Maintenant nous redirigeons son affichage, dans le néant (vers null part ?). # yes > /dev/null
Mais l'invite ne réapparaît pas ?...Alors : [ Ctrl ]+[ C ] pour stopper l'exécution.
Utilisons le processus en tâche de fond pour yes. # yes > /dev/null &
Maintenant yes s'exécute en tâche de fond.
Pour vérifier cela : # ps ou # jobs
Le chiffre [1] est le numéro de job suivi du numéro du pid (process id), ce numéro varie en
fonction du nombre de processus déjà lancés.
Pour arrêter l'exécution de yes, il faut utiliser la commande kill avec le numéro de pid
correspondant à l'application qui s'exécute en tâche de fond et que l'on veut stopper. # kill PID
Vérifiez : # jobs ou ps
Relancez yes. # yes > /dev/null
Et pour récupérer l'invite ?... Nous n'allons pas stopper l'exécution mais seulement la
suspendre, avec [ Ctrl ]+[ Z ].
Pour continuer l'exécution de yes : # fg
Suspendons la de nouveau avec [ Ctrl ]+[ Z ].
Nous allons la relancer cette fois en tâche de fond : # bg
Voilà vous pouvez vérifier : # jobs ou # ps
Stopper l'exécution de yes avec [ Ctrl ]+[ C ] ou kill.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Redirections
Présentation
Un processus Unix possède par défaut trois voies d’interaction avec l’extérieur
appelées entrées / sorties standard identifiées par un entier positif ou nul appelé
descripteur de fichier. Ces entrées / sorties standard sont :
une entrée standard (stdin), de descripteur 0
une sortie standard (stdout), de descripteur 1
une sortie standard (stderr) pour les messages d’erreurs, de descripteur 2.
Toute commande étant exécutée par un processus, nous dirons également qu’une
commande possède trois entrées / sorties standard.

De manière générale, une commande de type filtre (ex : cat) prend ses données sur
son entrée standard qui correspond par défaut au clavier, affiche ses résultats sur
sa sortie standard, par défaut l’écran, et affiche les erreurs éventuelles sur sa
sortie standard pour les messages d’erreurs, par défaut l’écran également.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Redirections
Redirections élémentaires
On peut rediriger séparément chacune des trois entrées/sorties standard d’une
commande. Cela signifie qu’une commande pourra :
lire les données à traiter à partir d’un fichier et non du clavier de l’utilisateur
écrire les résultats ou erreurs dans un fichier et non à l’écran.

Redirection de la sortie standard : > fichier ou 1> fichier


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

Ex : $ pwd
/home/etudiant
$ pwd > fich
$ => aucun résultat affiché à l’écran !
$ cat fich => le résultat a été enregistré dans le fichier fich
/home/etudiant

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Redirections
Redirections élémentaires
Redirection de la sortie standard :
Pour concaténer (c’est à dire ajouter à la fin) la sortie standard d'une commande au
contenu d'un fichier, une nouvelle forme de redirection doit être utilisée : >> fichier

Ex : $ pwd
/home/etudiant
$ pwd > fich
$
$ date >> fich
$ cat fich
/home/etudiant
mer jan 14 17:22:27 UTC 2010

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Redirections
Redirections élémentaires
Redirection de la sortie standard pour les messages d'erreur : 2> fichier
Par défaut les messages d'erreur s'affichent à l'écran (sortie standard par défaut). On
peut sauvegarder dans un fichier les messages d'erreur, pour analyse ultérieure

Ex : $ rmdir dossier2
rmdir: `dossier2': No such file or directory
$ rmdir dossier2 2>error.log
$
$ cat error.log
rmdir: `dossier2': No such file or directory

Comme pour la sortie standard, il est possible de concaténer la sortie standard pour
les messages d’erreur d'une commande au contenu d'un fichier : 2>> fichier

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Redirections
Redirections élémentaires
Redirection de la sortie standard pour les messages d'erreur : 2> fichier
Pour rediriger la sortie standard pour les messages d’erreur vers la sortie
standard (c.a.d vers le fichier de descripteur 1), on utilisera la syntaxe : 2>&1
Cela est souvent utilisé lorsqu’on désire conserver dans un même fichier toutes les
sorties.

Ex :
$ ls vi test >trace 2>&1
$ cat trace
ls: vi: Aucun fichier ou répertoire de ce type
test

La sortie standard est redirigée vers le fichier trace puis la sortie standard pour les
messages d’erreur est redirigée vers la sortie standard, c.-à-d. également vers le
fichier trace.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Redirections
Redirections élémentaires
Redirection de la sortie standard pour les messages d'erreur : 2> fichier
La syntaxe &> fichier est équivalente à la syntaxe > fichier 2>&1

Ex :
$ ls vi test &> trace
$ cat trace
ls: vi: Aucun fichier ou répertoire de ce type
test
Attention : Les redirections étant traitées de gauche à droite, l’ordre des redirections
est important.

Que fait la commande : ls vi test 2>&1 > trace

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Redirections
Redirections élémentaires
Redirection de l'entrée standard : < fichier
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

On peut aussi utiliser à la fois les deux types de redirection.


Ex :
$ wc < resultat.txt > compte.txt
$ cat compte.txt
4 29 203

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Redirections
Les tubes (pipes)
Le mécanisme de tube ( symbolisé par le caractère | ) permet d’enchaîner l’exécution
de commandes successives en connectant la sortie standard d’une commande à
l’entrée standard de la commande suivante :
stdin stdout stdin stdout
commande commande

stderr stderr

Ex 1 : combien de fichiers dans le rep. courant ?


sans pipe:
ls > temp ; wc -l < temp ; rm temp
avec un pipe:
ls | wc -l

Ex 2 : ls -l /bin | more
les informations affichées par ls -l sont envoyées vers l’entrée de la commande
more qui les affiche écran par écran.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Redirections
Pipelines
On appelle pipeline, une suite non vide de commandes connectées par des tubes :
cmd1 | ... | cmdn
Chaque commande est exécutée par un processus distinct, la sortie standard de la
commande cmdi-1 étant connectée à l’entrée standard de la commande cmdi.

Ex 1 : ls -l /bin | more
$ date | tee trace1 trace2 | wc -l Ex 2
1 ls -l /etc | grep csh | sort
$ cat trace1
mer jan 14 17:22:27 UTC 2010
$ cat trace2
mer jan 14 17:22:27 UTC 2010

La commande unix tee écrit le contenu de son entrée standard sur sa sortie standard tout
en gardant une copie dans le ou les fichiers dont on a passé le nom en argument.
Dans l’exemple ci-dessus, tee écrit le résultat de date dans les fichiers trace1 et trace2
ainsi que sur sa sortie standard, résultat passé à la commande wc -l.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Redirections
Insertion de documents
Il existe un opérateur de redirection, qui n'est utilisé en pratique que dans les scripts
shell.
Cet opérateur permet d'insérer directement un texte complet dans le flux d'entrée
standard, sans avoir à placer ce document dans un fichier à part. Cette technique
permet donc de stocker des données avec le code des scripts shell, et de n'avoir ainsi
qu'un seul fichier contenant à la fois le script et ses données.
Cet opérateur est l'opérateur '<<', il s'utilise selon la syntaxe suivante :

<<EOF
texte
.
.
.
EOF
où texte est le contenu du texte à insérer, et EOF est un marqueur
quelconque qui sera utilisé seul sur une ligne afin de signaler la fin du texte.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Redirections
Insertion de documents
Par exemple, il est possible de créer un fichier test.txt de la manière
suivante :
cat <<fin >test.txt
Ceci est un fichier texte saisi directement dans le shell.
On peut écrire tout ce que l'on veut, et utiliser les fonctions d'éditions
de ligne du shell si l'on veut.
Pour terminer le fichier, il faut taper le mot "fin" tout seul, au début
d'une ligne vide.
fin

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Redirections
La commande tee
La commande tee est un petit programme permettant d'enregistrer les
données qu'il reçoit dans son flux d'entrée standard dans un fichier et
de les renvoyer simultanément vers son flux de sortie standard. Elle
est couramment utilisée, en conjonction avec les tubes, pour dupliquer
un flux de données. Sa syntaxe est la suivante :
tee fichier
où fichier est le nom du fichier dans lequel le flux d'entrée standard doit être
enregistré

Ex :
Supposons par exemple que l'on désire rediriger tous les messages (d'erreur ou
non) de la commande ls /proc/ dans un fichier result.txt, tout en continuant à
les visualiser sur l'écran. Pour cela, on utilisera la commande suivante :
ls -l /proc 2>&1 | tee result.txt
Voir le man !!

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Redirections
La commande xargs
La commande xargs permet d'appeler une autre commande, en passant en paramètre
les données qu'elle reçoit dans le flux d'entrée standard.
Sa syntaxe est la suivante :
xargs commande
où commande est la commande que xargs doit exécuter. xargs construira une ligne de
commande complète pour cette commande, en utilisant comme paramètres les
données issues du flux d'entrée standard. Une fois cette ligne de commande construite,
xargs l'exécutera

Par exemple, la commande suivante : ls -l


peut être exécutée également de la manière suivante : xargs ls
et en tapant la chaîne de caractères « -l » suivie du caractère de fin de fichier CTRL+D.
Ex :
find -name "*.txt" | xargs grep -l "test"
Cette commande est plus simple et plus efficace que la commande équivalente :
find -name "*.txt“ -exec grep -l "test" {} \;
parce que grep n'est exécuté qu'une seule fois (alors que l'option -exec de la
commande find l'exécute pour chaque fichier trouvé).

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les filtres
Recherche de lignes
grep
Il s'agit d'extraire des lignes d'un fichier selon divers critères, la syntaxe de la
commande grep est :
grep [Options] modèle [Fichier1...]
Le modèle se compose de critères de recherche
Les options les plus utiles sont :
-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.

Ex : $ grep -i ^[o] fichier1

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les filtres
Colonnes et champs
La commande cut permet de sélectionner des colonnes et des champs
(découpage vertical) dans un fichier.

Colonnes
La syntaxe est la suivante :
cut -cColonnes [fic1...]
Le format de sélection de colonne est le suivant :
La numérotation des colonnes démarre à 1.
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)
les trois en même temps (ex -c1-3,5,6,12-)

Ex : $ cat liste $ cut -c1-5 liste $ cut -c1-3,10-12,15 liste


Produit prix quantites Produ Prorx quantites
souris 30 15 souri sou0 15
disque 100 30 disqu dis0 30
ecran 300 20 ecran ecr0 20
clavier 45 30 clavi cla530

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les filtres
Colonnes et champs
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 l'option -d permet de sélectionner un autre
caractère (espace, ; ...). La sélection des champs est identique à celle des colonnes.
Leur numérotation démarre à 1.

La syntaxe est la suivante :


cut -dc -fChamps [fic1...]

Ex 1 : $ cat liste $ cut -f1 liste $ cut -f1,3 liste


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

Ex 2 : $ cut -d: -f1,3 /etc/group

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les filtres
Compter les lignes
La commande wc (word count) permet de compter les lignes, mots et caractères.
wc [-l] [-c] [-w] fic1
-l : compte le nombre de lignes
-c : compte le nombre d'octets
-w : compte le nombre de mots

Ex : $ wc liste
12 48 234 liste
Le fichier liste contient 12 lignes, 48 mots et 234 caractères.

Voir le man !!

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les filtres
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. Le
séparateur de champs par défaut est la tabulation ou au moins un espace. S'il y a
plusieurs espaces, le premier est le séparateur, les autres des caractères du champ.
La numérotation des champs démarre à 0.
sort [options] [+pos1 [-pos2] ...] [fic1...]
+pos1 est le premier champ, -pos2 le dernier.
-n : Tri numérique, idéal pour le colonnes de chiffres
-f : Pas de différences entre majuscules et minuscules (conversion en minuscules puis tri)
-r : Reverse, tri en ordre décroissant.
-t : utiliser pour indiquer le caractère qui sépare les champs (par défaut c’est l’espace)
+N : trier à partir du Nième champs

Ex :
Soit le fichier carnet-addresse suivant : Sort carnet-addresse
ali:29:02:rabat Sort -t: +3 carnet-addresse
said:13:04:casablanca
nabil:75:01:fes Sort -t -n +1 carnet-addresse
rachd:92:03:kénitra Sort -t: +1 -2 carnet-addresse

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les filtres
Remplacement de caractères
La commande tr permet de substituer des caractères à d'autres et n'accepte que des
données depuis le canal d'entrée standard, ou par des fichiers en redirection d'entrée.
tr [options] original destination
L'original et la destination représentent un ou plusieurs caractères.
Les options sont les suivantes :
• -c : Les caractères qui ne sont pas dans la chaîne d'origine sont convertis selon
les caractères de la chaîne de destination
• -d : destruction des caractères appartenant à la chaîne d'origine
• -s : si la chaîne de destination contient une suite contiguë de caractères
identiques, cette suite est réduite à un caractère unique
Ex :
Pour remplacer le : par un #, du fichier carnet-addresse :
tr ":" "#" < carnet-addresse
cat carnet-addresse | tr ":" "#"
Voir le man !!
Pour remplacer les minuscules par des majuscules :
tr [a-z] [A-Z] < carnet-addresse
Pour remplacer le o par le e et le i par le a.
cat carnet-addresse | tr "oi" "ea"

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les filtres
Extraction de lignes communes de deux fichiers : comm
La commande comm permet de sélectionner les lignes entre deux fichiers :
comm [-123] fic1 fic2
1 : lignes de fic1 (∉ fic2)
2 : lignes de fic2 (∉ fic1)
3 : lignes communes

Comparer deux fichiers : cmp


La commande cmp indique si deux fichiers sont identiques. En tapant :
cmp fichier1 fichier2
Si les deux sont identiques, la commande ne génère aucune sortie, s'ils sont différents
la commande indique la position de la première différence (ligne et caractère), avec
une sortie du genre :
fichier1 fichier2 differ : char 34, Line2
Voir le man !!

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les filtres
Edition des différences entre deux fichiers : diff
La commande diff permet de rechercher les différences entre deux fichiers. La syntaxe
est la suivante :
diff fichier1 fichier2
diff fait en sorte de vous donner des indications pour que le fichier1 soit identique au
fichier2

Commande : uniq
La commande uniq détruit les lignes consécutives dupliquées
cmp [-options] fichier1
-u : affiche les lignes "uniques"
-d : affiche les lignes "dupliquées"
Voir le man !!

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les commandes grep et find
Les expressions régulières
Les expressions régulières sont des suites de caractères permettant de faire des
sélections. Elles fonctionnent avec certaines commandes comme grep.
Les différentes expressions régulières sont :
^ début de ligne
. un caractère quelconque
$ fin de ligne
[...] plage de caractères permis
[^...] plage de caractères interdits
Exemple :
^a va identifier les lignes commençant par le caractère a.
a$ va identifier les lignes se terminant par le caractère a.
^chaine$ identifie les lignes qui contiennent strictement la chaîne chaine.
^$ identifie une ligne vide
[a–z] retrouve n’importe quelle lettre en minuscule
[A–Z] retrouve n’importe quelle lettre en majuscule
[0–9] retrouve n’importe quel chiffre
[aeiouAEIUO] retrouve n’importe quelle voyelle
[ˆaeiouAEIOU] retrouve n’importe quel caractère sauf une voyelle

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les commandes grep et find
Commande : grep
La commande grep permet de rechercher une chaîne de caractères dans un fichier.
Les options sont les suivantes :
grep [options] modèle fichier1
-v : affiche les lignes ne contenant pas la chaîne
-c : compte le nombre de lignes contenant la chaîne
-n : chaque ligne contenant la chaîne est numérotée
-x : ligne correspondant exactement à la chaîne
-l : affiche le nom des fichiers qui contiennent la chaîne

Exemple avec le fichier carnet-adresse :


grep ^[a-d] carnet-addresse

Voir le man !!

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Les commandes grep et find
Commande : find
La commande grep de retrouver des fichiers à partir de certains critères.
La syntaxe est la suivante :
find <répertoire de recherche> <critères de recherche>
Les critères de recherche sont les suivants :
-name recherche sur le nom du fichier,
-perm recherche sur les droits d'accès du fichier,
-links recherche sur le nombre de liens du fichier,
-user recherche sur le propriétaire du fichier,
-group recherche sur le groupe auquel appartient le fichier,
-type recherche sur le type (d=répertoire, c=caractère, f=fichier normal),
-size recherche sur la taille du fichier en nombre de blocs (1 bloc=512octets),
-atime recherche par date de dernier accès en lecture du fichier,
-mtime recherche par date de dernière modification du fichier,
-ctime recherche par date de création du fichier.
Voir le man !!
Exemple :
find / -size 2000 -print (2000 blocs de 512Ko)
find / -type f -user etudiant -perm 755 -print

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Outils divers
Espace disque et mémoire
La commande df (disk free) permet d’afficher à l’écran la taille de l’espace
disque occupée et la taille de l’espace disque libre.
Ce n’est pas lisible, puisque la taille des données est affichée en octet. On
utilise alors l’option -h
La commande du (disk usage) permet d’afficher la taille d’un répertoire et de
tous les sous répertoires récursifs qu’il contient
Évidemment comme pour la commande df, la taille occupée est en octet, on
utilise donc l’option -h.

Voir le man !!

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Exercices
Contenu de répertoires et de fichiers
Exercice 1
1. Déterminer le répertoire par défaut dans la hiérarchie des répertoires?
2. Y a t-il des fichiers, des répertoires dans ce répertoire?
3. Entrer du texte dans un fichier nommé "Mon_fichier".
4. Lister le contenu de "Mon_fichier".
5. Lister le répertoire courant.
6. Lister les répertoires /bin et /dev.
7. Créer sous votre répertoire deux sous-répertoires : "Source" et "Data".
8. Se positionner sous "Source".
9. Listez le répertoire courant.
10. Revenir sous le répertoire de départ et détruire "Source".
11. Créer un deuxième fichier nommé "Mon_fichier_2".
12. Copier chaque fichier en nom_de_fichier.old.
13. Créer un répertoire "Old".
14. Déplacer les fichiers avec l'extension old vers le répertoire "Old".

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Exercices
Critères pour les noms de fichier
Exercice 1 suite
1. Copiez les fichiers sans extension dans le repertoire "Data".
2. Sous votre répertoire de départ, créez un lien physique "Mon_lien" équivalent à
"Mon_fichier_2".
3. Lister les deux fichiers "Mon_lien" et "Mon_fichier_2" en affichant leur numéro
d'inode. Que remarquez vous?
4. Supprimer "Mon_lien". "Mon_fichier_2" a-t-il disparu?
5. Sous votre répertoire de départ, créez un lien symbolique "Mon_nouveau_lien"
sur "Mon_fichier_2".
6. Lister les deux fichiers "Mon_nouveau_lien" et "Mon_fichier_2".
Que remarquez vous?
7. Supprimer "Mon_fichier_2". "Mon_nouveau_lien" a-t-il disparu?
8. Quelle est la taille totale des fichiers contenus dans votre répertoire?
9. Effacer tous les fichiers crées.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Exercices
Critères pour les noms de fichier
Exercice 2 :
Dans votre répertoire courant, créez en une commande les fichiers suivants:
annee1 Annee2 annee4 annee45 annee41 annee510
Exercice 3 :
Créer le répertoire Year dans votre répertoire courant, en une commande déplacez les
fichiers précédemment créés dans le répertoire Year.

Exercice 4 :
Lister tous les fichiers
se terminant par 5
commençant par annee4
commençant par annee4 et de 7 lettres maximum
commençant par annee avec aucun chiffre numérique
contenant la chaîne ana
commençant par a ou A

Exercice 5 :
Copier les fichiers dont l'avant dernier caractère est un 4 ou 1 dans le répertoire
/tmp en une seule commande.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Exercices
Grep
Exercice 6 :
Créer un répertoire essai-grep dans votre home directory. Dans ce répertoire créer les
fichiers suivants:
tomate poire pomme cerise Fraise fraise courgette POMME3 afraise
Éditez les fichiers (sortie de la commande ls redirigée vers grep) avec les critères sur
leur nom suivant:
Exercice 7 :
Créer un répertoire essai-grep dans votre home directory. Dans ce répertoire créer les
fichiers suivants:
tomate poire pomme cerise Fraise fraise courgette POMME3 afraise
Éditez les fichiers (sortie de la commande ls redirigée vers grep) avec les critères
sur leur nom suivant:
Critère 1 : Le nom doit être Fraise ou fraise
Critère 2 : se est en fin de nom
Critère 3 : ai est présent dans le nom
Critère 4 : Nom contenant un chiffre numérique
Critère 5 : Nom contenant la chaîne mm ou MM

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Exercices
Grep
Exercice 8 :
Copiez le fichier /etc/passwd dans votre home directory.
Éditez la ligne commençant par votre nom de login.
éditez les lignes commençant par des noms de login ne contenant pas de chiffre.
Éditez les lignes du fichier passwd commençant par des noms de login de 3 ou 4
caractères.

Les filtres
Exercice 9 :
Dans le fichier passwd qui est dans votre home directory éditez uniquement les champs
contenant le login et la home directory.
Exercice 10 :
Triez passwd sur le nom

Exercice 11 :
Extraire les nom de login et UID puis triez suivant les UID, le tout en une seule
commande, vous redirigerez le tout vers un fichier

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Exercices
Les filtres
Exercice 15 :
Dans le fichier passwd qui est dans votre home directory remplacer les ":" par des " "
(espace).

Exercice 16 :
Éditez les cinq dernières lignes du fichier.
Éditez les cinq premiers caractères du fichier.

Exercice 17 :
Afficher par ordre alphabétique les utilisateurs définis dans le fichier /etc/passwd.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Exercices
find
Exercice 18 :
Cherchez dans toute l'arborescence les fichiers dont :
le nom se termine par .c
le nom commençant par X ou x.
les noms ne contiennent pas de chiffre
Et redirigez les erreurs vers le fichier poubelle /dev/null
Exercice 19 :
Rechercher tous les fichiers du répertoire /etc contenant la chaîne de caractères
"root".
Rechercher la localisation du fichier "stdio.h" dans le système de fichier de votre
installation.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Exercices
find
Exercice 20 :
Chercher dans /usr les fichiers dont la taille dépasse 1Mo (2000 blocs de 500Ko) et
dont les droits sont fixés à 755 (-rwxr-xr-x).

Exercice 21 :
Combien il y a de fichiers dans toute l'arborescence vous appartenant et ayant les
droits fixés à 666 (-rw-rw-rw-).

Exercice 22 :
Trouver tous les fichiers test dans l'arborescence et supprimez les après confirmation.

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »


Effectuer les opérations de base concernant l’exploitation des
fonctions du système d’exploitation

MERCI DE VOTRE ATTENTION

SYSTÈMES D'EXPLOITATION « OPEN SOURCE »

Vous aimerez peut-être aussi