Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Mars 2017
1
avant propos
Linux est devenu en quelques années une alternative sérieuse aux
systèmes d’exploitation Microsoft pour les ordinateurs personnels
(PC). Linux est la version PC la plus répandue du système
d’exploitation Unix utilisé dans l’informatique professionnelle sur
stations de travail et grands ordinateurs.
Le succès actuel de Linux est dû à ses multiples avantages :
-libre et ouvert, diffusé gratuitement ou à faible coût ;
-évolutif, mais très stable dans son fonctionnement ;
-doté d’une interface graphique conviviale et personnalisable ;
-etc.
Tous ces avantages ont un prix : pour tirer le meilleur de Linux, il
faut comprendre sa philosophie et apprendre à se servir de ses
outils de base. C’est le but de cet ouvrage.
Ce livre s’adresse aux stagiaires en ISTA ainsi qu'à toute personne
ayant quelques connaissances en informatique et désirant se
convertir au monde Linux.
Cet ouvrage n’est pas un manuel de référence : la documentation
technique disponible en ligne est exhaustive et irremplaçable. Il
s’agit bien d’un manuel de cours et le lecteur pourra avec profit le
lire « à côté du clavier », en essayant immédiatement les exemples et
exercices présentés.
Abdechafik EL GHATTAS
2
table des matieres
Chapitre 1 : présentation de linux …....................................................................... 7
1. Introduction............................................................................................................. 7
2. Historique d'Unix..................................................................................................... 7
3. Logiciels libres et Open Source…........................................................................... 7
3.1. Logiciel libre..................................................................................................... 7
3.2. Open source...…................................................................................................ 8
4. GNU/Linux............................................................................................................... 8
4.1. Présentation de GNU/Linux.............................................................................. 8
4.2. Avantages de Linux........................................................................................... 9
4.3. Distributions Linux........................................................................................... 9
4.4. Les LiveCD.......................................…............................................................ 11
5. Installation de Linux................................…...........….............................................. 11
6. Environnement de bureau.......................…...........…............................................... 21
7. Présentation de la CLI de Linux ............…........….................................................. 22
Je teste mes acquis ................................................….................................................. 23
Chapitre 2 : utilisation du shell................................................................................. 24
1. Le shell..................................................................................................................... 24
2. L’invite de commande.............................................................................................. 24
3. Utiliser le shell.............................................................................................…….... 25
3.1. La saisie........................................................................................................…. 25
3.2. Syntaxe générale des commandes.................................................................… 25
3.3. Commandes internes et externes .................................................................… 25
3.4. Obtenir de l'aide ...............……....................................................................… 26
3.5. Rappel de l’historique .....…............................................................................. 27
4. Variables d’environnement...................................................................................… 27
Je teste mes acquis ............................…....................................................................... 29
Chapitre 3 : gestion des fichiers................................................................................ 30
1. Le système de fichiers.............................................................................................. 30
2. Hiérarchie root.......................................................................................................... 31
3. Les divers types de fichiers...................................................................................... 31
4. Nomenclature des fichiers........................................................................................ 32
5. Les chemins........................................................................................................….. 32
5.1. Structure et nom de chemin........................................................................….. 32
5.2. Répertoire personnel......................................................................................... 32
5.3. Chemin relatif.......…...................................................................................….. 33
5.4. Le tilde............................................................................................................... 33
5.5. La commande cd............................................................................................... 33
Je teste mes acquis .......................................................................................…............ 34
3
Chapitre 4 : les commandes de base......................................................................... 35
1. Lister les fichiers et les répertoires........................................................................... 35
2. Gérer les fichiers et les répertoires.......................…............................................… 36
2.1. Créer des fichiers vides ...............................................................................…. 36
2.2. Affichage du contenu d’un fichier.................................................................... 36
2.3. Affichage page à page....................................................................................... 36
2.4. Créer des répertoires.....................................................................................… 36
2.5. Afficher le répertoire courant........................................................................... 36
2.6. Supprimer des répertoires................................................................................. 37
2.7. Supprimer un fichier ou une arborescence....................................................... 37
2.8. Copier des fichiers............................................................................................ 37
2.9. Déplacer et renommer un fichier...................................................................... 38
2.10. Les liens symboliques.................................................................................... 38
2.11. Les liens physiques......................................................................................... 39
3. Wildcards : caractères de substitution...................................................................... 39
4. Verrouillage de caractères........................................................................................ 39
5. Rechercher des fichiers............................................................................................ 40
6. Manipulation des données d’un fichier.................................................................... 40
6.1. Trier les lignes d’un fichier............................................................................... 40
6.2. Recherche d’une chaîne de caractères.............................................................. 42
6.3. Compter les caractères, les mots et les lignes.................................................. 42
6.4. Extraction avec la commaned cut ................................................................... 42
6.5. Comparaison du contenu de deux fichiers....................................................... 44
6.6. Extraire le début ou la fin d’un fichier............................................................. 44
7. Archivage................................................................................................................. 44
8. Pipes et Redirections................................................................................................ 46
8.1. Redirection....................................................................................................... 46
8.2. Pipes.................................................................................................................. 47
9. Les groupes de commandes..................................................................................... 48
10. L'éditeur vi.......................................................................................................….. 48
Je teste mes acquis ..........................................................................…......................... 50
Chapitre 5 : administration des utilisateurs............................................................ 55
1. Principe..................................................................................................................... 55
1.1. Les utilisateurs.................................................................................................. 55
1.2. Les groupes.........................................................................….......................... 55
2. Les fichiers............................................................................................................... 56
2.1. /etc/passwd........................................................................................................ 56
2.2. /etc/group.......................................................................................................... 56
2.3. /etc/shadow.......................................................................................…............. 56
3. Gestion des utilisateurs............................................................................................. 57
3.1. Ajouter un utilisateur...................................................….................................. 57
3.2. Changer le mot de passe d'un utilisateur........................................................... 58
3.3. Afficher des informations sur un utilisateur..................................................... 58
3.4. Modifier un compte utilisateur.......................................................................... 58
3.5. Suppression d'un utilisateur.............................................................................. 59
4
4. Gestion des groupes................................................................................................. 59
4.1. Création d’un groupe......................................................…............................... 59
4.2. Modification d’un groupe................................................................................. 59
4.3. Suppression d’un groupe.................................................................................. 59
4.4. Afficher des informations sur les groupes........................................................ 59
5. Changer d'identité...............................................................................................….. 59
Je teste mesacquis ......................................................…............................................. 61
Chapitre 6 : gestion des droits d'accès...................................................................... 63
1. Lire les droits............................................................................................................ 63
2. Modifier les droits …............................................................................................... 64
3. Umask....................................................................................................................... 65
4. Les droits spéciaux................................................................................................... 66
4.1. SUID et SGID................................................................................................... 66
4.2. Sticky................................................................................................................. 67
5. Changer de propriétaire et de groupe....................................................................... 67
Je teste mes acquis ........................................................................................….......... 68
Chapitre 7 : gestion des processus............................................................................ 69
1. Définition et caractéristiques................................................................................... 69
2. Visualiser les processus............................................................................................ 69
3. Commandes de gestion des processus..................................................................... 70
3.1. Changer la priorité d'un processus.................................................................... 70
3.2. Arrière plan et Avant plan.................................................................................. 70
3.3. kill/killall........................................................................................................... 71
4. Planification de tâches.......................................................................................…... 72
4.1. at : exécuter une commande plus tard............................................................... 72
4.2. crontab : exécuter une commande régulièrement............................….............. 73
Je teste mes acquis ...............................….................................................................... 77
Chapitre 8 : gestion des disques................................................................................ 78
1. Disques, partitions et systèmes de fichiers....…....................................................... 78
1.1. Disques..........................................................…................................................ 78
1.2. Partitions.....................................................…................................................... 78
1.3. Systèmes de fichiers sous Linux..................…................................................. 78
2. Manipuler une partition.....................................................................…................... 79
2.1. L’outil fdisk....................................................................................................... 79
2.2. Formater une partition...................................................................................... 80
2.3. L’outil fsck........................................................................................................ 80
3. Accès aux périphériques........................................................................................... 81
3.1. Les commandes mount et umount..................................................................... 81
3.2. Le fichier /etc/fstab............................................................................................ 81
4. Occupation disque.................................................................................................... 83
4.1. La commande df................................................................................................ 83
4.2. La commande du............................................................................................... 84
Je teste mes acquis ...........................................................................…....................... 85
Chapitre 9 : installation des paquets….........................................…....................... 86
1. Des paquets et des dépôts......................................................................................... 86
2. Paquets DEB et paquets RPM.................................................................................. 86
3. L’installation sous Ubuntu....................................................................................... 87
3.1. Interface graphique............................................................................................ 87
3.2. Ligne de commande...................................................................................…... 87
5
4. L’installation sous Fedora ........................................................................................ 89
4.1. Interface graphique.........................….........................................................… 89
4.2. Ligne de commande......................................................….............................. 90
4.2.1. L’outil YUM...................................................…................................... 90
4.2.2. L’outil RPM.............................................…......................................... 90
5. Décompresser des archives...................................................................................... 91
6. Compiler un programme......................................................................................… 92
Je teste mesacquis ...................................................................................................... 93
Chapitre 10 : intiation à l’impression....................................................................... 94
1. L’ impression sous Linux.......................................................................................... 94
2. Installation de lpr et de CUPS ................................................................................. 94
2.1. Présentation de lpr et de CUPS......................................................................... 94
2.2. Installation de lpr et de CUPS.......................................................................... 94
2.3. Utilisation de lpr................................................................................................ 95
2.4. Commandes associées ...................................................................................... 96
Je teste mes acquis ..........................................................................................…...….. 97
Chapitre 11 : configuration réseau........................................................................... 98
1. ifconfig.........................................................................................................…...…. 98
2. iwconfig........................................................................................................…...…. 98
3. arp.................................................................................................................…...…. 98
4. ping..........................…......................................................................................…... 99
5. netstat...........................................................................................................…...…. 99
6. traceroute......................................................................................................…...…. 99
7. Nom d'hôte (hostname)............................................................................................ 99
8. Configuration automatique au démarrage............................................................... 99
9. Résolution de noms d'hôte....................................................................................... 100
Je teste mes acquis ..........................................................................................…...….. 101
Chapitre 12 : scripts de base..................................................................................... 102
1. Premiers scripts Shell..................................................................................…...….. 102
2. Variables et opérations.................................................................................…...….. 102
3. Tests de conditions......................................................................................…...….. 104
4. Structures conditionnelles...........................................................................…...….. 106
5. Boucles........................................................................................................…...….. 108
6. Passage de paramètres.................................................................................…...….. 109
7. Fonctions.................................................................................................................. 109
Je teste mes acquis .........................................................................…......................... 111
Webographie.............................................................................................................. 113
6
chapitre 1
presentation de linux
1. Introduction
Unix est un système d'exploitation non propriétaire basé sur le langage de programmation C,
avec une interface de commande utilisateur. Certains systèmes d'exploitation répandus sont
basés sur Unix, comme Linux, Mac OS X, Android et iOS.
Les systèmes d'exploitation Linux sont utilisés dans presque toutes les plates-formes : montres,
téléphones portables, ordinateurs, serveurs, ... Bien que Linux soit de plus en plus largement
utilisé, Android, une version modifiée de Linux, est sans aucun doute responsable de la diffusion
de ce système d'exploitation sur le marché grand public.
Linux est reconnu comme un système d’exploitation stable, robuste et performant. Il est utilisé
dans plus du tiers des serveurs dans le monde et dans la moitié des serveurs web. Il a conquis le
monde de l’entreprise, le monde universitaire. Il a surtout su conserver son indépendance,
garantie par la communauté et le nombre de contributeurs, face aux géants de
l’informatique. La prochaine grosse cible de Linux, c’est le poste de travail, et pourquoi
pas, l’usage familial en remplacement de Windows. Il reste encore un peu de chemin, mais
nombreux sont ceux qui ont déjà franchi le pas.
2. Historique d'Unix
L'histoire d'Unix débute dans les années 60 et peut être résumée de la façon suivante :
- 1966 : les laboratoires Bell (filiale d'AT&T) ont besoin pour leur usage interne, d'un système
d'exploitation pour le traitement de textes et le développement d'applications. Ken Thomson et
son équipe sont chargés de ce travail.
- 1969 : apparition de la 1ère version d'Unix . Le nom Unix provient de UNICS (UNiplexed
Information and Computing System), système d'exploitation qui a succédé à Multics dans les
laboratoires Bell.
- 1973 : nécessité de rendre Unix portable sur d'autres ordinateurs. Denis Ritchie réécrit alors
entièrement Unix en langage C qui a d'ailleurs été créé dans ce but précis. Ceci explique les
liens profonds entre le langage C et Unix.
- 1974 : AT&T propose les 1ères licences aux universités ce qui apporta un enrichissement en
extensions et en utilitaires variés à Unix (en particulier, l'Université de Berkeley). Cette date
correspond au début de la popularité et de la diversité d'Unix .
- 1978 : AT&T présente à l'industrie les 1ères versions commerciales.
-années 80 : AT&T autorise le clonage d' Unix par d'autres constructeurs. De nombreuses autres
versions ont vu le jour. Voici quelques exemples :
• HP/UX de Hewlett-Packard (stations);
• Solaris de Sun MicroSystems (stations Sun et PC) ;
• GNU/Linux .
Ces versions constructeur dérivent toutes des 2 versions présentes à l'époque et qui sont :
- System V pour des configurations moyennes et petites ;
- BSD (Berkeley Software Distribution) pour des configurations importantes dans le domaine
scientifique.
À noter qu'il existe quelques différences de syntaxe entre certaines commandes Unix de type
System V et celles de type BSD.
3. Logiciels libres et Open Source
3.1. Logiciel libre
Les logiciels libres font de plus en plus parler d'eux, qu'il s'agisse de Linux ou de programmes
disponibles sous Windows comme Firefox et OpenOffice.
7
Un logiciel libre est un logiciel qui peut être utilisé, modifié, étudié, dupliqué et redistribué
librement par la personne à qui le logiciel a été distribué. Ces libertés sont légalement encadrées
et techniquement admises à condition que le code source du logiciel soit facilement accessible
ou qu’il soit communiqué par son développeur. Il ne faut pas confondre le logiciel libre avec les
gratuiciels ou freewares qui ont la particularité d’être gratuits. En effet, le terme « free » de free
software (« logiciel libre » en anglais) ne signifie pas « gratuit » mais plutôt « liberté » car le
logiciel libre offre des libertés que n’offrent pas les logiciels type propriétaires (Windows par
exemple).
3.2. Open source
Un logiciel Open Source est un programme informatique dont le code source est distribué sous
une licence permettant à quiconque de lire, modifier ou redistribuer ce logiciel. Il se distingue
cependant du logiciel libre, au sens où l'Open Source est davantage tourné vers un objectif de
développement collaboratif que vers la défense des libertés individuelles. Dans la pratique, cette
nuance est rarement prise en compte, et l'usage a tendance à assimiler "logiciel libre" et "logiciel
Open Source". Open Source ne signifie pas non plus "gratuit". Il existe de nombreux freewares
dont le code source est propriétaire (il n'est pas permis d'y accéder, de le modifier ou de le
redistribuer).
Il existe des milliers, voire des millions de projets de développement logiciel Open Source. Le
plus emblématique d'entre eux est Linux, le noyau de nombreux systèmes d'exploitation, dont
sont issus des distributions comme Debian, Ubuntu, Fedora ou Red Hat.
4. GNU/Linux
4.1. Présentation de GNU/Linux
Au sens strict du terme, “Linux” ne désigne que le noyau, un bout de code basé sur Unix,
permettant de gèrer la mémoire vive et les accès au matériel. Il a été développé par un étudiant
finlandais du nom de Linus Torvalds en 1991.
Au début des années 1990, le projet GNU, lancé en 1983 par Richard M. Stallman, possède
une version utilisable de presque tous les éléments d'un système d'exploitation avec une
interface en mode texte : un shell, des bibliothèques logicielles, les commandes Unix, les outils
de développement.... Mais il manque l'élément central, le noyau de système d'exploitation.
Linux sera le noyau qui manque au système d’exploitation GNU d'où l'appellation GNU/Linux.
Pour faire simple: GNU/Linux est un système d'exploitation.
Aujourd'hui GNU/Linux
connaît un grand succès, tant
chez les utilisateurs particulier
(en tant qu’alternative à
Windows) que sur pour les
serveurs Internet/Intranet.
Linux est diffusé par
différentes sociétés ou
organisations, sous formes de
distributions qui utilisent le
même noyau (ou presque) et
organisent de diverses façons
le système (packages, mises à
jour, etc). Les distributions les
plus répandues sont Red Hat,
Debian, Suse, … s’adressent Figure : GNU/Linux
chacune à différents types
d’utilisateurs.
8
4.2. Avantages de Linux
Les principaux avantages de Linux sont :
• Le prix : les différentes distributions Linux sont généralement gratuites, à l’exception de
celles conçues pour les professionnels (gros serveurs…) ;
• Les mises à niveau de la distribution seront également gratuites. De plus, la mise à
niveau est transparente pour l’utilisateur, les fichiers de données et de configuration ne
sont pas modifiés, et les logiciels sont mis à jour ;
• Des environnements graphiques différents selon les besoins de l’utilisateur ou la
puissance de la machine ;
• La documentation : le code source étant ouvert, de nombreux utilisateurs partagent leurs
connaissances sur le système. Même si certaines procédures peuvent paraître assez
compliquées - installation d’un pilote d’une carte graphique pour les jeux , par exemple -
tout est détaillé pas à pas ;
• La sécurité : de par les mises à jour fréquentes, le nombre de développeurs ayant accès
au code source - ouvert - étant important, les erreurs et failles sont très vite corrigées,
presque toutes avant la publication de la distribution en version "stable" ;
• Par ailleurs, Linux dispose d’un certain nombre d’outils de sécurité comme le
pare-feu iptables ou encore SELinux pour limiter les angles d’attaque.
• Des outils d’audit, de détection et suppression de virus (pour les partages avec les
machines Windows) et autres rootkits existent également.
• En cas de problème, notamment d’une application graphique, il est possible de
passer par un terminal, ou au pire en mode de dépannage avec un accès normal au
système, mais sans l’environnement graphique.
• La logithèque : les différentes distributions Linux ont accès à un ensemble de logiciels -
également gratuits - assez fourni, pour tous les usages, à un niveau "familial". Les
applications dédiées à un usage professionnel pourront être payantes.
• Parmi la logithèque, on peut remarquer la présence de logiciels pour
l’accessibilité de l’ordinateur : loupe, lecteur d’écran, clavier virtuel... et même
gestionnaire de table braille.
• de même pour les pilotes matériels, fournis par la distribution ou le constructeur,
bien que tous les constructeurs ne fournissent pas de pilote pour Linux.
• Linux est même capable de faire fonctionner des applications Windows (pas
toutes) avec Wine ou PlayOnLinux (entre autres).
4.3. Distributions Linux
Il est impossible de nommer toutes les distributions tant elles sont nombreuses. Néanmoins nous
présentons ici quelques grandes distributions.
Debian
Le projet Debian a été fondé en 1993. Debian a longtemps été la seule distribution
entièrement et uniquement composée de logiciels libres et Open Source.
Les avantages de Debian sont nombreux :
• Un nombre gigantesque de packages qui se chiffre en milliers ;
• Un logiciel d’installation appelé APT très pratique et performant ;
• Une distribution 100% open source ;
• Une stabilité à toute épreuve pour un environnement de production.
Tous ces éléments font de Debian une distribution idéale pour les informaticiens, les
ingénieurs et administrateurs système et réseau, les environnements de production en
entreprise, les puristes du libre.
9
Ubuntu
Ubuntu (prononcer « Ou-boun-tou »), créé en 2005, est un système d’exploitation open source
basé sur Debian et sponsorisé par la société Canonical. Le mot Ubuntu est un mot du langage
africain bantou signifiant « humanité aux autres » ou encore « je suis ce que je suis grâce
à ce que nous sommes tous ».
De nouvelles versions de RHEL sont livrées tous les 18 à 24 mois. Quand Red Hat fournit une
nouvelle version de RHEL, les clients peuvent mettre à jour leur version gratuitement à
condition d'avoir un abonnement en cours.
10
SUSE
Apparue en mars 1994, la distribution SuSE (pour Software und System-Entwicklung en
Allemand, ou Logiciel et Système de Développement dans la langue de Molière) était alors
basée sur Slackware et SLS. Cette distribution Linux n'a cessé d'évoluer depuis, devenant avec
Red Hat et Debian une des plus reconnues tant par les entreprises que par les particuliers. Entre
temps, la société SuSE est rachetée par Novell en 2003, ce dernier en a d'ailleurs fait la
promotion notamment depuis la signature d'un partenariat avec IBM en 2005 et plus récemment
en signant un accord avec Microsoft.
Aujourd'hui, il existe trois versions de SuSE :
• openSuSE
• SuSE Linux Entreprise Server (SLES)
• SuSE Linux Entreprise Desktop (SLED)
openSuSE
Apparu en août 2005, il s'agit d'un projet communautaire dont le contenu est totalement Open
Source, mais qui n'exclut pas pour autant d'ajouter des logiciels propriétaires. Cette distribution
est gratuite.
SuSE Linux Entreprise Desktop (SLED)
Basée sur openSuSE, cette version conçue pour les entreprises inclut beaucoup moins de
paquetages afin de fournir un système le plus stable et le plus performant possibles, certains
paquetages ne sont d’ailleurs pas Open Source. SLED est payante.
SuSE Linux Entreprise Server (SLES)
Apparue fin octobre 2000, cette version se destine comme son nom l'indique aux serveurs, cette
version est payante et nettement orientée entreprises, cette version intègre des logiciels
propriétaires. SLES est payante. Une nouvelle version sort environ toutes les années et demie
mais cela peut varier jusqu’à deux ans.
4.4. Les LiveCD
Le LiveCD est une catégorie surprenante. Vous êtes certainement très nombreux à vouloir
essayer Linux pour voir à quoi ça ressemble ou pour vérifier s’il fonctionne correctement avec
votre matériel. Plutôt que de l’installer sur votre disque dur pensez d’abord à tester Linux sans
l’installer. Le LiveCD sert principalement à ça : c’est une installation complète de Linux qui est
fortement compressée et qui tient sur un seul cd ou dvd (dans ce cas on parle de liveDVD).
Pour utiliser un liveCD c’est très simple : insérez le CD ou le DVD dans votre lecteur et
redémarrez votre ordinateur en ayant bien vérifié dans la configuration de votre machine
que votre lecteur CD ou DVD est le premier à démarrer. Après quelques secondes (ou minutes
parfois) de chargement, voici que le bureau apparaît et tous les programmes les plus
connus sont accessibles alors que strictement rien n’est installé sur votre disque dur.
5. Installation de Linux
En raison du grand nombre de distributions de Linux, on s’interesse par la suite uniquement à la
distribution Ubuntu.
Choisir sa version
Avant de commencer l'installation, il faut choisir sa version d'Ubuntu, en fonction des
paramètres suivants :
• « desktop », pour un ordinateur standard ;
• « server », pour un serveur Ubuntu ;
• « core », pour les développeurs ;
• ...
Vous pouvez vous procurer votre version d'Ubuntu en le téléchargeant sur internet, par exemple
sur le site http://www.ubuntu.com/download/.
On va ensuite mettre cette image ISO sur un support, typiquement un DVD vierge ou une clef
USB.
11
Pour une utilisation tranquille d'Ubuntu, nous vous conseillons d'avoir un ordinateur
relativement récent, c'est à dire une configuration minimale de 1 Ghz pour le processeur, 10 Go
d'espace sur le disque dur et 4 Go de mémoire vive (RAM).
Installation
Insérez le CD ou le DVD (ou la clef USB, carte mémoire etc.) d'Ubuntu (ici Ubuntu 14.04 LTS)
dans votre lecteur. Redémarrez votre ordinateur. Si le BIOS est configuré pour booter en
premier sur le lecteur de CD/DVD - c'est généralement le cas -, vous devriez voir apparaître un
écran d'accueil violet le temps que l'installeur se charge.
Au bout de quelques instants, vous obtenez la fenêtre suivante :
12
Figure : Ecran de bienvenue de l’nstallation d’Ubuntu
Étape 2 : Préparation de l'installation
Le second écran vous demande de vérifier que vous disposez bien du nécessaire pour poursuivre
l'installation : espace libre sur votre disque dur (prévoyez au moins 15 Go si possible),
alimentation secteur, et connexion internet. Si vous débutez, il est recommandé de cocher les
cases du dessous, elles permettent :
• de télécharger les mises à jour
• d'installer de quoi lire les formats propriétaires les plus courants (mp3, etc.)
13
Étape 3 : Type d’installation
(Cette étape est intitulée "Allouer de l'espace disque" pour Ubuntu Precise 12.04.)
Ce troisième écran permet de choisir si vous souhaitez conserver le système d'exploitation
installé (Windows généralement) ou pas.
14
Vous pouvez bien sûr le modifier à votre convenance, servez-vous du curseur de la souris pour
déplacer le séparateur et ainsi modifier l'espace alloué. Vous pouvez aussi si vous possédez plus
d'un disque dur, choisir le disque dur de votre choix dans la liste proposée.
Une fois validé, l'installateur redimensionnera pour vous la partition existante, créera
automatiquement les partitions nécessaires à Ubuntu puis paramétra le multi-amorçage.
ii. Effacer le disque et installer Ubuntu
Cette option vous permet de réinitialiser un disque dur entier et d'installer Ubuntu sur l'ensemble
de ce disque.
Attention: Cette option efface toutes les données et toutes les partitions (systèmes d'exploitation
compris) actuellement présents dans ce disque dur. Si vous choisissez cette option, assurez-vous
de disposer de copies de sauvegarde de tout fichier important se trouvant dans votre ordinateur.
Si vous possédez plus d'un disque dur, choisissez le disque dur de votre choix dans la liste
proposée.
iii. Utiliser le plus grand espace disponible
Cette option apparaît si vous disposez d'espace libre non alloué dans votre disque dur. Par
défaut, elle attribue automatiquement à Ubuntu tout l'espace qui n'est assigné à aucune partition,
laissant intactes les partitions existantes. Vous ne verrez pas cette option si tout l'espace de votre
disque dur est attribué à des partitions, même si l'une d'entre elles est inutilisée ou non formatée.
À l'aide du curseur, vous pouvez réduire l'espace attribué à Ubuntu et même agrandir cet espace
en grugeant celui d'une partition existante.
iv. Mettre à niveau Ubuntu XX.XX vers Ubuntu XX.XX
Cette option apparaît si une installation d'Ubuntu plus ancienne est déjà présente sur le disque
dur. Si on valide cette option, Ubuntu sera mis à niveau vers la nouvelle version.
v. Supprimer Ubuntu XX.XX et réinstaller
Cette option apparaît si une installation de Ubuntu est déjà présente sur le disque dur. Si on
valide cette option, Ubuntu sera supprimé puis ré-installé.
vi. Autre chose
Cette option offre la plus grande flexibilité. Elle permet de redimensionner à loisir les partitions
de son disque dur et d'en créer des nouvelles, aux tailles désirées, pour Ubuntu.
Aperçu de l'interface
Voici à quoi ressemble l'interface si vous choisissez Autre chose.
15
Remarquons ceci :
• La jauge en-haut de l'interface représente l'allure actuelle du disque dur que vous
modifiez. Au fur et à mesure que vous apporterez des modifications au partitionnement
de ce disque dur, cette jauge se modifiera, présentant un aperçu de l'allure qu'aurait le
disque dur si les modifications apportées étaient appliquées. Notez que la jauge
représente le disque dur sur lequel vous êtes en train de travailler ; si vous sélectionnez
un autre disque dur dans la liste des périphériques, la jauge se mettra à jour afin de
représenter l'état de cet autre disque ;
• Au-dessous de cette jauge se trouve la liste des périphériques. Cette liste affiche
l'ensemble des disques durs et de leurs partitions :
• Les disques durs apparaissent sous la forme /dev/sdX ("X" étant une lettre, par
exemple "/dev/sda" ou "/dev/sdb") dans la liste des périphériques. Si vous
possédez plus d'un disque dur, vous pouvez naviguer entre eux en sélectionnant
leur identifiant /dev/sdX dans la liste des périphériques ; vous verrez alors
l'allure de la jauge changer complètement, afin de refléter l'allure de cet autre
disque dur. Dans la capture d'écran ci-contre, vous pouvez apercevoir deux
disques (/dev/sda et /dev/sdc). ;
• Les partitions apparaissent sous la forme /dev/sdXY ("Y" étant un chiffre) dans
la liste des périphériques. Leur identifiant est légèrement décalé sous chacun de
leur disque dur respectif. À la droite de leur identifiant, vous pouvez voir chacune
de leurs caractéristiques (type, point de montage, taille et espace déjà utilisé). Les
partitions du disque en cours de modification apparaissent en couleur dans la
jauge au-dessus de la liste. Dans l'exemple ci-contre, vous pouvez apercevoir une
partition (/dev/sda1) ;
• Apparaît aussi l'espace libre non partitionné, c'est-à-dire qui n'est attribué à
aucune partition. Cet espace est affiché sous le nom Espace libre dans la liste
des périphériques et de couleur grise dans la jauge représentant notre disque dur.
Des nouvelles partitions ne peuvent être créées que dans un espace libre
Sous la liste des périphériques se trouvent cinq boutons d'outils qui vous permettront de modeler
vos disques durs selon vos besoins :
1. Nouvelle table de partition… : Ce bouton ne peut être utilisé que lorsqu'un disque dur
(/dev/sdX) est sélectionné dans la liste des périphériques. Cette option supprime
l'ensemble des partitions présentes dans le disque dur sélectionné, le rendant vierge, et
crée une table de partitions vide, prête à recevoir des nouvelles partitions. Ne
sélectionnez cette option que si vous désirez effacer totalement le contenu d'un disque
dur ou si vous installez Ubuntu dans un disque dur neuf, dans lequel aucune table de
partition n'existe.
2. Ajouter… : Cet outil permet de créer une nouvelle partition dans un espace libre non
alloué. Ce bouton n'est accessible que si vous sélectionnez un Espace libre dans la
liste des périphériques. Les nouvelles partitions apparaissent en aperçu seulement dans la
liste des périphériques ;
3. Modifier… : Ce bouton n'est accessible que si vous sélectionnez une partition
(/dev/sdX0) dans la liste des périphériques. Cet outil vous permet d'agrandir ou réduire
une partition, de la formater ou de lui attribuer un point de montage. Dans les cas de
formatage et d'attribution de points de montage, les modifications sont proposées en
aperçu seulement.
16
4. Supprimer : Ce bouton n'est accessible que si vous sélectionnez une partition
(/dev/sdX0) dans la liste des périphériques. Cet outil vous permet de supprimer
complètement une partition. Une fois la partition supprimée, toutes les données
contenues dans cette partition ne seront plus accessibles. L'espace occupé précédemment
par la partition apparaîtra ensuite sous Espace libre dans la liste des périphériques.
5. Rétablir : Ce bouton remet l'aperçu des modifications à l'état d'origine, c'est-à-dire l'état
actuel des disques durs.
Partitions indispensables
Par défaut, Ubuntu a besoin d'au moins deux partitions : un espace d'échange (swap) et une
partition racine (/).
Partition racine
• Point de montage : /
• Utilité : La partition racine est la base de l'arborescence de votre système Ubuntu. Par
défaut, si aucun réglage n'est changé, c'est dans celle-ci que tous les fichiers vont être
placés : fichiers de configuration, programmes, documents personnels, etc.
• Taille : Le minimum est 8 Go. Cependant, pour une question de confort, sa taille devrait
être d'au moins 15 Go. Attention: si cette partition est pleine, votre Ubuntu ne pourra
plus démarrer.
• Type : on choisira généralement EXT4 pour une installation sur disque dur, ou bien
EXT2 pour une installation sur clef.
Partition swap
• Point de montage : swap ( ne se voit pas à la racine )
• Utilité : L'espace d'échange (en anglais, swap space) est une extension de la mémoire
vive (RAM) de votre ordinateur. Afin d'éviter un blocage de votre ordinateur lorsque sa
RAM est pleine, Ubuntu se sert de cette partition pour décharger temporairement la
RAM. Son utilisation à cet effet est plutôt rare dans les ordinateurs modernes, disposant
d'au moins 1 Go de RAM. Cependant, elle sert aussi de décharge de la RAM lors de la
mise en hibernation (mise en veille prolongée), c'est pour cette raison que la taille de la
partition swap doit être d'au moins la taille de votre RAM si vous souhaitez utiliser cette
fonction.
• Taille : Si vous avez moins de 1 Go de RAM, entre 1,5× et 2× la taille de votre RAM. Si
vous avez plus de 1 Go de RAM, de 1× à 1,5× la taille de votre RAM.
• Type : SWAP
Remarque : Pour les ordinateurs récents, le SWAP n'est plus vraiment utile et très peu utilisé. Si
votre ordinateur est ancien (< 2005), le SWAP reste, selon les cas, nécessaire. Sinon, si vous
disposez d'1 Go de RAM ou plus (les ordinateurs récents ont généralement 2 Go minimum), 1
ou 2 Go de SWAP seront amplement suffisants sur la plupart des modèles courants (même pour
la veille prolongée).
Étape 4 : Lancer l'installation
Attention : Ubuntu n'a encore rien écrit sur vos disques durs. C'est ici la dernière possibilité que
vous avez d'arrêter la procédure d'installation sans rien modifier dans votre ordinateur !.
Si vous annulez l'installation à cette étape, aucun changement dans votre ordinateur n'aura été
appliqué. Lorsque vous commencerez l'installation d'Ubuntu, vous ne pourrez plus arrêter le
processus.
Lorsque votre type d'installation est configuré et prêt à être appliqué, cliquez sur Installer
maintenant pour débuter l'installation d'Ubuntu.
17
Étape 5 : Emplacement géographique
Sélectionnez votre lieu de résidence. Cela permettra à Ubuntu de régler automatiquement
l'horloge à l'heure locale, de se synchroniser régulièrement avec des serveurs de temps, d'ajuster
l'heure aux passages à l'heure avancée d'été ou l'heure normale. Cliquez sur votre localité dans la
carte interactive, ou bien saisissez le nom de la ville la plus proche. Cliquez ensuite sur
Continuer.
18
Figure : choix du disposition du clavier pour l’installation d’Ubuntu
Étape 7 : Identité
Créez votre compte utilisateur. Ce compte sera aussi paramétré comme étant administrateur de
votre système Ubuntu. Saisissez votre nom complet (il sera utilisé à quelques endroits, comme
le client de courrier électronique), puis un identifiant (en anglais, login name) plus court.
L'identifiant doit nécessairement être écrit en minuscules.
• Entrez un mot de passe, puis répétez ce même mot de passe pour le confirmer ; saisir un
mot de passe est obligatoire. Ce mot de passe évitera que tout le monde puisse effectuer
des tâches administratives dans votre ordinateur. Choisir un mot de passe fort (composé
d'au moins 8 caractères variés contenant chiffres, lettres majuscules, lettres minuscules et
caractères de typographie) renforce la sécurité de votre ordinateur en cas d'intrusion
extérieure. Si vous entrez un mot de passe trop faible ou basé sur un mot du dictionnaire,
un message d'avertissement vous en informera mais vous permettra de continuer tout de
même.
• Spécifiez un nom à donner à votre ordinateur : ce nom sera utilisé à l'intérieur de votre
réseau domestique ou d'entreprise uniquement, afin de partager et accéder aux autres
ordinateurs du réseau duquel vous faites partie.
• Enfin, choisissez si une session utilisateur doit être automatiquement ouverte à chaque
lancement d'Ubuntu, si la saisie du mot de passe utilisateur doit être obligatoire avant
que la session s'ouvre, ou si la saisie du mot de passe est nécessaire pour ouvrir une
session et déverrouiller l'accès aux données personnelles de compte.
Appuyez sur le bouton Continuer pour confirmer vos paramètres.
19
Figure : définir son identité pour l’installation d’Ubuntu
... et l'installation se termine !
Laissez l'installation se poursuivre jusqu'à la fin. Cela peu prendre quelques minutes tout
comme cela peut durer quelques heures, selon la vélocité de votre matériel ou encore si vous
avez opté pour la mise à jour pendant l'installation.
Pour patienter, un diaporama vous présentera Ubuntu. Il suffit de cliquer sur la flèche de droite
pour le faire défiler.
20
Patientez jusqu'à ce que l'installation arrive à son terme. Une fenêtre vous indiquera que
l'installation est terminée et vous proposera de redémarrer votre ordinateur sur votre nouveau
système d'exploitation Ubuntu.
21
On peut décomposer l'écran en trois zones : la barre de menus, le bureau, le lanceur.
• La barre des menus : c'est la petite bande située en haut de l'écran. À gauche se trouve le
nom de l'application ou de la fenêtre active ; ensuite une série de menus qui permettent la
gestion des dossiers et documents ainsi que l'affichage.
• Le lanceur : c'est une barre d'icônes cliquables servant de raccourcis, située à gauche de
l'écran. Le lanceur peut se configurer.
• Le bureau : c'est l'espace restant dans lequel s'ouvrent les fenêtres et où l'on trouve des
icônes représentant les disques. Le bureau est aussi un dossier dont les éléments
apparaissent sous forme d'icônes.
• Tableau de bord ("dash") : le tableau de bord (ou "dash") permet d'accéder à vos
applications, outils systèmes... Avec les dernières versions d'Ubuntu il permet même de
chercher des fichiers, documents, vidéos, etc.
Canonical dispose d'un site Web qui simule l'interface utilisateur Unity et propose également
une visite des principales fonctionnalités d'Unity. Pour découvrir Unity via le site Web
Canonical, rendez-vous sur http://tour.ubuntu.com/en/.
7. Présentation de la CLI de Linux
Dans Linux, l'utilisateur peut communiquer avec le système d'exploitation par l'intermédiaire de
l'interface en ligne de commande (CLI).
Les émulateurs de terminal permettent d'accéder à l'interface en ligne de commande. Ces
applications portent souvent un nom proche de « terminal ». Sur Linux, les émulateurs de
terminal les plus utilisés sont Terminator, eterm, xterm, konsole et gnome-terminal.
22
Je teste mes acquis
Question 1. Quels avantages offrent les distributions Linux ?
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
Question 2. Donnez le nom d’une distribution Linux courante plutôt adaptée au monde
professionnel pour être utilisé sur des serveurs.
……………………………………………………………………………………………………
Question 3. Donner un exemple de système de fichiers utilisés par GNU/Linux.
……………………………………………………………………………………………………
Question 4. Que signifie un système d'exploitation open source ?
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
Question 5. Par défaut, Linux a besoin d'au moins deux partitions : un espace d'échange (swap)
et une partition racine (/). Quel est le rôle de la partition swap ? Quelle taille à donner pour cette
partition si on a un PC ayant 2 Go de RAM ?
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
23
chapitre 2
utilisation du shell
1. Le shell
L’interpréteur de commandes, ou interprète, 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. C’est à rapprocher du mot kernel : le kernel, signifiant noyau, est
souvent entouré d’une coquille dure (pensez à un noyau d’abricot ou de pêche). shell
signifiant coquille, c’est donc ce qui « entoure » le noyau Linux : 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.
Il existe plusieurs shells, chacun disposant de spécificités propres. Le Bourne Shell (sh) est le
shell le plus connu et le plus courant sur les Unix. Le C-Shell (csh) reprend la structure du
langage C. Le Korn Shell (ksh) est une évolution du Bourne Shell. Le Z-Shell (zsh) est lui-
même une évolution du Korn Shell. Le shell de référence sous Linux se nomme le Bourne
Again Shell (bash), que nous utiliserons pendant ce cours.
Chacun des shells existant dispose de ses propres avantages et points faibles. 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.
Nom du shell Description
(Bourne Again Shell) offre l'édition de la ligne de commande et le rappel des
bash commandes précédentes
2. L’invite de commande
Le shell attend des entrées au clavier sur une ligne appelée l’invite de commande ou prompt.
L’invite (prompt) fournit des informations sur le terminal et votre position dans le système de
fichiers.
stagiaire@istaPC:/home$
Dans cette invite tout à fait classique, vous trouvez quatre informations :
• stagiaire : c’est le nom de connexion, ou login de l’utilisateur, actuellement connecté au
terminal ;
• istaPC : c’est le nom d’hôte (hostname), le nom logique de la machine raccordée au terminal
;
• /home : c’est la position actuelle du shell dans le système de fichiers ;
• $ : c’est la terminaison standard du bash pour un utilisateur sans pouvoirs.
Cette invite vous informe que c’est l’utilisateur sans pouvoirs d’administration stagiaire
qui utilise le terminal (est connecté) sur la machine istaPC et qu’il est actuellement positionné
dans /home.
24
Le caractère de terminaison peut avoir d’autres significations :
• un # indique que l’utilisateur est l’administrateur root qui a tous les pouvoirs.
Le chemin peut varier :
stagiaire@istaPC:~$ : le caractère tilde ~ indique que vous êtes dans votre répertoire
personnel.
stagiaire@istaPC:~/cours$ : le ~ se rapportant à votre répertoire personnel, vous êtes
dans le répertoire cours au sein de celui-ci.
Dans la suite, l’invite de commande sera généralement remplacé par un simple dollar, $, ceci
afin de gagner de la place sur la ligne de commande.
3. Utiliser le shell
3.1. La saisie
Dans le terminal, le clavier s’utilise comme d’habitude. Vous pouvez vous déplacer sur la ligne
avec les flèches de droite et de gauche du clavier et effacer des caractères avec les touches
[Retour arrière] et [Suppr]. Vous lancez l’exécution de la commande que vous avez saisi en
appuyant sur la touche [Entrée].
Il est temps de tester quelques commandes. La commande date indique la date et
l’heure actuelles. Vous n’obtiendrez évidemment pas le même résultat, et pas toujours dans la
même langue, selon votre installation Linux.
$ date
lun jan 18 21:28:12 WET 2016
Une commande pratique, pwd, permet de savoir à quel endroit vous vous situez dans les
répertoires.
$ pwd
/home/stagiaire
Le shell indique qu’il est actuellement positionné dans le répertoire /home/stagiaire.
3.2. Syntaxe générale des commandes
Les commandes ont très souvent une syntaxe reprenant la même structure :
Commande [paramètres] [arguments]
Une commande peut avoir ni paramètres, ni arguments.
Un paramètre est une option de la commande. C’est souvent une simple lettre ou un simple
chiffre précédé d’un tiret : -l, -p, -s, etc. Si la commande accepte plusieurs
paramètres, vous les saisissez les uns après les autres en les séparant par des espaces : -l -r
-t, ou en écrivant qu’un seul tiret puis tous les paramètres : -lrt. Les deux syntaxes sont
acceptées et produisent le même résultat. La seconde est seulement plus courte.
Les arguments sont les entités sur lesquelles la commande doit exécuter son action. Leur
type dépend de la commande. Ce peut être un fichier, du texte, des nombres, etc.
Exemples :
$ cal : affiche le calendrier du mois en cours et surligne le jour actuel.
$ cal 8 1979 : affiche le calendrier du mois 8 l'année 1979
$ cal -3 2 2017 : affiche les mois précédant et suivant le mois précisé (ici le mois 2 de
l'année 2017).
3.3. Commandes internes et externes
Il existe deux types de commandes :
• Les commandes externes sont des programmes binaires présents en tant que fichiers sur votre
disque dur. Quand vous exécutez la commande, ce fichier est chargé en mémoire et lancé en tant
que processus (cette notion sera expliquée dans le chapitre gestion des processus).
• Les commandes internes sont internes au shell et exécutées au sein de celui-ci. Ces
commandes font partie du programme shell. Les commandes cd ou pwd sont deux
exemples de commandes internes.
25
Vous pouvez distinguer une commande interne d’une commande externe à l’aide de la
commande interne type. C’est ainsi que date est une commande externe, vous constatez que
c’est un fichier présent dans /bin, tandis que pwd est interne au shell.
$ type date
date is hashed (/bin/date)
$ type pwd
pwd is a shell builtin
3.4. Obtenir de l'aide
L’aide propre aux commandes
Il n’est pas possible de connaître par cœur tous les paramètres et arguments d’une
commande. Linux propose heureusement au moins deux mécanismes pour connaître ceux qui
sont supportés par une commande. La plupart du temps, le paramètre --help affiche l’aide
incluse directement au sein du programme appelé. Parfois l’aide apportée est suffisante pour
trouver ce que vous cherchez.
Exemple :
$ date --help
Usage: date [OPTION]... [+FORMAT]
or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Display the current time in the given FORMAT, or set the system date.
-d, --date=STRING display time described by STRING, not `now'
-f, --file=DATEFILE like --date once for each line of DATEFILE
-r, --reference=FILE display the last modification time of FILE
-R, --rfc-2822 output date and time in RFC 2822 format.
...
Il peut cependant arriver que l’aide soit trop concise ou manque d’explications, ou bien soit
totalement absente. Dans ce cas --help est considéré comme un paramètre invalide et vous
risquez d’obtenir un message d’erreur et/ou une ligne d’informations :
$ cal --help
cal: option invalide -- -
usage: cal [-13smjyV] [[mois] année]
La dernière ligne n’explique pas la syntaxe des paramètres.
L’aide interne au shell
Les commandes internes n’acceptent pas de paramètre --help, mais pour ces
commandes l’interpréteur de commandes propose une commande help. Utilisée seule elle
vous fournit la liste des commandes internes. Si vous lui passez comme paramètre le nom d’une
commande interne, l’aide de celle-ci est affichée.
$ help pwd
pwd: pwd [-LP]
Print the name of the current working directory.
Options:
-L print the value of $PWD if it names the current working
directory
-P print the physical directory, without any symbolic links
By default, `pwd' behaves as if `-L' were specified.
Exit Status:
Returns 0 unless an invalid option is given or the current directory
cannot be read.
26
Le manuel en ligne
Quand l’aide fournit --help par se révèle être insuffisant, il est très probable que l’aide
recherchée se situe au sein du manuel Unix. Ce manuel est standard sur tous les Unix dont
Linux, et quel que soit le shell.
Le manuel est accessible depuis la commande man qui est l'abréviation de manual. Par
exemple, si je veux tout savoir sur la commande mkdir, je dois écrire :
$ man mkdir
Le mode d’emploi de la commande en paramètre de man est affiché. Là-dedans, il y a tout ce
qu'il faut savoir sur la commande en question.
La documentation de la commande étant généralement un peu longue, celle-ci s'affiche page par
page. Pour naviguer dans une page, il faut généralement utiliser les flèches vers le haut et vers le
bas ou les touches page down et page up, ou encore la touche d'espacement, selon le pager
utilisé. On sort généralement d'une page avec la touche Q, mais, avec certaines versions, il faut
appuyer sur la touche d'espacement jusqu'à ce qu'on arrive à la fin de la page de manuel.
Si vous avez un doute sur la commande à utiliser, ou que vous ayez perdu son nom, ou encore
que vous vouliez connaître toutes les commandes liées à un mot, alors utilisez le paramètre -k
de man :
$ man -k hw
fbdevhw (4) - os-specific submodule for framebuffer device access
hwclock (8) - query and set the hardware clock (RTC)
lshw (1) - list hardware
3.5. Rappel de l’historique
Vous trouverez très utile de pouvoir rappeler une commande que vous avez déjà
exécutée en naviguant dans l’historique des commandes avec les touches [Flèche en haut]
et [Flèche en bas]. La flèche du haut remonte dans l’historique. Si vous avez saisi les deux
précédentes commandes (date puis pwd), le premier appui sur la flèche du haut affiche la ligne
de commande pwd, un second la commande date. La flèche du bas navigue dans l’autre sens,
jusqu’à l’invite d’origine. Si vous appuyez sur la touche [Entrée] vous lancez de nouveau la
commande.
Plus vous tapez des commandes, plus l’historique s’agrandit. Le shell conserve ainsi un grand
nombre d’entrées dans l’historique. Cet historique est conservé dans un fichier caché de votre
répertoire personnel appelé .bash_history. Vous pouvez voir le contenu de
l’historique avec la commande history.
4. Variables d’environnement
Après connexion, l'utilisateur est connecté dans son environnement. Cela signifie que le shell
met à sa disposition des variables d'environnement, c'est-à-dire un conteneur mémoire dans
lequel des données propre à chaque utilisateur ou au système sont stockées.
Pour afficher le contenu d'une variable d'environnement, la commande echo
$NOM_VARIABLE peut être utilisée.
Le nom des variables d'environnement est par convention en majuscules, il est donc nécessaire
de respecter la case pour ces variables.
Variables d'environnement à connaître :
• HOME contient le répertoire d'utilisateur
• USER contient le login d'utilisateur
• PWD contient le répertoire courant
• PATH contient la liste des répertoires où se trouvent les commandes que l'utilisateur peut
exécuter
• HOSTNAME contient le nom de la machine
27
Exemple :
Pour récupérer les variables globales d’environnement :
$ env
Pour afficher le login d'utilisateur :
$ echo $USER
Pour afficher le nom de la machine :
$ echo $HOSTNAME
28
Je teste mes acquis
Question 1. Quels avantages offre le Bourne Again Shell ?
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
Question 2. On suppose que :
• Vous êtes l’utilisateur abdellah
• Vous venez de vous connecter sur la machine ServeurPrinc et que vous vous trouvez dans
votre répertoire personnel (/home/abdellah)
a. Quelle est la valeur de $LOGNAME dans notre cas?
……………………………………………………………………………………………………
b. Quel résultat donne la commande echo $HOSTNAME ?
……………………………………………………………………………………………………
c. Quel résultat donne la commande echo $PWD ?
……………………………………………………………………………………………………
29
chapitre 3
gestion des fichiers
1. Le système de fichiers
Un système de fichiers, appelé communément File System ou FS, définit l’organisation des
données sur un support de stockage, donc comment sont gérés et organisés les fichiers par le
système d’exploitation. Linux est un système d’exploitation entièrement orienté fichier. Tout (ou
presque) est représenté par un fichier, tant les données (fichiers de données de tout type
comme une image ou un programme), que les périphériques (terminaux, souris, clavier,
carte son, etc.), ... .
30
2. Hiérarchie root
Le système de fichiers de Linux est hiérarchique. Il décrit une arborescence de répertoires et de
sous-répertoires, en partant d’un élément de base / appelé la racine ou root directory.
Ici se trouvent tous les dossiers élémentaires dont voici la description.
Répertoire Description
/bin Contient les binaires (exécutables) vitaux pour l'utilisateur
/boot Contient les fichiers relatifs au bootloader
/dev Contient tout les périphériques
/etc Contient les fichiers de configuration et des fichiers nécessaires au démarrage
/home Contient les répertoires utilisateurs
/mnt Contient les dossiers pour les points de montage temporaires
/root Répertoire personnel de root
/sbin Contient les binaires (exécutables) vitaux pour l'administrateur (root)
/tmp Contient les dossiers et fichiers temporaires. Le dossier est vidé à chaque
démarrage
/usr Contient tout ce qui n'est pas vital au système (les fichiers relatifs aux programmes
tierce partie, par exemple le navigateur web ou les lecteurs multimédias...)
/var Contient des fichiers qui changent fréquemment, tel que : les logs, les mail, queues
d'impression...
3. Les divers types de fichiers
Les fichiers ordinaires ou réguliers
Les fichiers ordinaires sont aussi appelés fichiers réguliers. Ce sont des fichiers tout à fait
classiques qui contiennent des données (texte, image, audio,.. etc).
La notion d’extension de fichier n’a aucun rôle au niveau du système de fichier et est
simplement considérée comme une partie du nom du fichier. Elle sert simplement à
distinguer visuellement et rapidement l’éventuel contenu d’un fichier par rapport à un autre.
Les catalogues
Les fichiers catalogues sont les répertoires ou les dossiers. Les répertoires permettent
d’organiser le disque dur en créant une hiérarchie. Un répertoire peut contenir des fichiers
normaux, des fichiers spéciaux et d’autres répertoires, de manière récursive.
Un répertoire n’est rien d’autre qu’un fichier particulier contenant la liste des fichiers eux-
mêmes présents dans ce répertoire.
Les fichiers spéciaux
Le troisième type de fichier est le fichier spécial. Il existe plusieurs genres de fichiers
spéciaux. Ils se trouvent principalement dans le répertoire /dev s’ils représentent des
périphériques.
Ce sont principalement des fichiers servant d’interface pour les divers périphériques. Ils peuvent
s’utiliser, suivant le cas, comme des fichiers normaux. Un accès en lecture ou écriture sur
ces fichiers est directement redirigé vers le périphérique (en passant par le pilote associé
s’il existe).
Type d’un fichier
Il est possible sous Unix/Linux de connaître aussi le type de fichier sur lequel on travaille. En
dehors de l’extension qui peut être trompeuse, tous les fichiers ont un en-tête permettant de
déterminer leur type (répertoire, exécutable, texte,…). La commande pour visualiser le type d'un
fichier est :
$ file nom_de_fichier
31
Exemple :
$ file coursLinux.pdf
coursLinux.pdf : PDF document, version 1.6
4. Nomenclature des fichiers
On ne peut pas donner n’importe quel nom à un fichier, il faut pour cela suivre quelques règles
simples. Ces règles sont valables pour tous les types de fichiers.
Sur les anciens systèmes Unix un nom de fichier ne pouvait pas dépasser 14 caractères.
Sur les systèmes actuels, dont Linux, on peut aller jusqu’à 255 caractères. L’éventuelle
extension est comprise dans la longueur du nom du fichier.
Un point extrêmement important : Linux fait la distinction entre les noms de fichiers en
minuscules et en majuscules. Fich, FICH et fich sont des noms de fichiers différents, avec
un contenu différent.
La plupart des caractères sont acceptés, y compris l’espace. Cependant quelques caractères
sont à éviter car ils ont une signification particulière au sein du shell : & ; ( ) ~ <espace> \ / | ` ?
- (en début de nom).
Les noms suivants sont valides :
• Fichier1
• Paie.txt
• 123Math.pdf
• Paie_juin_2016.xls
•7
Ces noms peuvent poser des problèmes :
• Fichier*
• Paie(decembre)
• Cours&Exo
• -f
5. Les chemins
5.1. Structure et nom de chemin
Les chemins permettent de définir un emplacement au sein du système de fichiers. C’est la liste
des répertoires et sous-répertoires empruntés pour accéder à un endroit donné de
l’arborescence jusqu’à la position souhaitée (répertoire, fichier).
Le schéma présenté en haut dans ce chapitre représente une arborescence d’un système de
fichier Linux. Le / situé tout en haut s’appelle la racine ou root directory (à ne pas
confondre avec le répertoire de l’administrateur root). Le nom de chemin d’un fichier
est la concaténation, depuis la racine, de tous les répertoires qu’il est nécessaire de
traverser pour y accéder, chacun étant séparé par le caractère /. C’est un chemin absolu
comme celui-ci.
/home/stagiaire/cours/coursLinux.pdf
Un chemin absolu ou complet :
• démarre de la racine, donc commence par un /,
• décrit tous les répertoires à traverser pour accéder à l’endroit voulu,
• ne contient pas de . ni de ..
5.2. Répertoire personnel
Lors de la création d’un utilisateur, l’administrateur lui alloue un répertoire personnel appelé
dossier personnel (home directory). Lorsqu’il se connecte, l’utilisateur arrive directement
dans ce répertoire, qui est son répertoire personnel. C’est dans ce répertoire que
l’utilisateur pourra créer ses propres fichiers et répertoires.
32
$ pwd
/home/stagiaire
5.3. Chemin relatif
Un nom de chemin peut aussi être relatif à sa position courante dans le répertoire. Le système
(ou le shell) mémorise la position actuelle d’un utilisateur dans le système de fichier, le
répertoire actif. Vous pouvez accéder à un autre répertoire de l’arborescence depuis
l’emplacement actuel sans taper le chemin complet uniquement en précisant le chemin le plus
court relativement à votre position actuelle au sein de l’arborescence.
Il faut pour cela souvent utiliser deux entrées particulières de répertoires :
• Le point . représente le répertoire courant, actif. Il est généralement implicite.
• Les doubles points .. représentent le répertoire de niveau inférieur.
Exemples :
• Documents/exam est un chemin relatif : le répertoire Documents est considéré
comme existant dans le répertoire courant ;
• ./Documents/exam est un chemin relatif parfaitement identique au précédent, sauf
que le répertoire actif (courant) est explicitement indiqué par le point. ./Documents
indique explicitement le répertoire Documents dans le répertoire actif ;
• /usr/local/../bin est un chemin relatif : les .. sont relatifs à /usr/local et
descendent d’un niveau vers /usr. Le chemin final est donc /usr/bin.
5.4. Le tilde
Le bash interprète le caractère tilde ~ comme un alias du répertoire personnel. Les chemins
peuvent être relatifs au tilde, mais le tilde ne doit être précédé d’aucun caractère. Pour vous
déplacer dans le répertoire tmp de votre dossier personnel d’où que vous soyez :
$ cd ~/Documents
Si vous entrez ceci, vous obtenez une erreur :
$ cd /~
5.5. La commande cd
Pour vous déplacer dans les répertoires, vous utilisez la commande cd (change directory). La
commande pwd (print working directory) que vous avez déjà rencontrée affiche le chemin
complet du répertoire courant.
Si vous saisissez cd . vous ne bougez pas. Le point sera très utile lorsque vous
devrez spécifier des chemins explicites à des commandes situées dans le répertoire où vous
êtes positionné.
Le cd .. remonte d’un niveau. Si vous étiez dans /home/stagiaire, vous vous retrouvez
dans home.
La commande cd sans argument permet de retourner directement dans son répertoire utilisateur.
Exemple :
formateur@istaPC:~$ pwd
/home/formateur
formateur@istaPC:~$ cd ../stagiaire (= cd /home/stagiaire)
formateur@istaPC:/home/stagiaire$ cd /usr/local/bin
formateur@istaPC:/usr/local/bin$ cd ../../lib (= cd /usr/lib)
formateur@istaPC:/usr/lib$ cd
formateur@istaPC:~$
33
Je teste mes acquis
Question 1. Dans quel répertoire vous trouvez-vous quand vous vous loguez ?
……………………………………………………………………………………………………
Question 2.
a. Écrire la commande pour aller directement dans ~/Direction/docs/stage
……………………………………………………………………………………………………
b. De là, passez dans ~/Direction/docs/autre en utilisant le ..
……………………………………………………………………………………………………
c. Revenez dans ~/Direction en utilisant le ..
……………………………………………………………………………………………………
d. Passez dans ~/Direction/docs
……………………………………………………………………………………………………
e. Revenez dans votre répertoire personnel
……………………………………………………………………………………………………
Question 3. Quel est le répertoire qui contient les binaires (exécutables) vitaux pour
l'utilisateur ?
……………………………………………………………………………………………………
Question 4. Dans quel répertoire se trouvera l'utilisateur root après l'éxecution de la
commande suivante : root@istaPC:/home/stagiaire/cours# cd ../../../tmp ?
……………………………………………………………………………………………………
Question 5. Soit la hiérarchie de répertoires suivante:
Vous vous trouvez actuellement dans le répertoire unix. Quels sont respectivement les chemins
absolu et relatif du répertoire bin ?
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………………………………………………………………………
34
chapitre 4
les commandes de base
1. Lister les fichiers et les répertoires
La commande ls permet de lister le contenu d’un répertoire 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.
-c Affiche / tri (avec -t) par date de changement d’état du fichier.
-u Affiche / tri (avec -t) par date d’accès du fichier.
-r L’ordre de sortie est inversé.
-i Affiche l’inode du fichier.
-C L’affichage est sur plusieurs colonnes (par défaut).
Le paramètre qui vous fournit le plus d’informations est le - l : il donne un certain nombre de
détails sur les fichiers.
Exemple :
$ ls -l
total 4568
-rw-r--r-- 1 stagiaire users 69120 sep 13 2016 coursLinux.pdf
-rw-r--r-- 1 stagiaire users 9632 oct 7 2015 expose.ppt
-rw-r--r-- 1 stagiaire users 6849 nov 17 2014 exo_algo.doc
...
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.
Vient ensuite la liste détaillée de tout le contenu.
-rw-r--r-- 1 stagiaire users 69120 sep 13 2012 coursLinux.pdf
1 2 3 4 5 6 7
• 1 : 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 plus tard.
• 2 : Un compteur de liens (voir les liens symboliques par la suite).
35
• 3 : Le propriétaire du fichier, généralement celui qui l’a créé.
• 4 : Le groupe auquel appartient le fichier.
• 5 : La taille du fichier en octets.
• 6 : La date de dernière modification (parfois avec l’heure), suivant le paramètre (t, c, u).
• 7 : Le nom du fichier.
2. Gérer les fichiers et les répertoires
2.1. Créer des fichiers vides
Pour vos tests ou durant vos actions vous pouvez avoir besoin de créer des fichiers vides. Une
commande pratique pour cela est touch. Utilisée avec uniquement le nom d’un fichier
en argument, elle crée un fichier avec une taille nulle.
Exemple :
$ touch fichtest
$ ls -l fichtest
-rw-r--r-- 1 stagiaire users 0 fév 29 15:13 fichtest
2.2. Affichage du contenu d’un fichier
Syntaxe : cat nom_du_fichier
La commande cat sert à afficher le contenu d’un fichier si ce dernier est passé en paramètres.
Cette commande permet aussi de concaténer des fichiers:
cat fichier1 fichier2 > fichier3
Cette opération permet de créer un fichier fichier3 en concaténant les fichiers fichier1 et
fichier2. Les notions de redirection seront plus amplement abordées dans la partie
redirections.
Le seul inconvénient de cet outil est qu’il affiche le contenu du fichier dans sa totalité (sans
possibilité simple de contrôler le défilement par pages).
La commande tac est homologue à cat mais affiche le contenu d'un fichier en partant de la
derniére ligne vers la premiére.
2.3. Affichage page à page
La commande: more [nom_du_fichier] permet d’afficher le contenu d’un fichier page à
page.
Exemple :
$ more .bashrc
2.4. Créer des répertoires
La commande mkdir (make directory) permet de créer un ou plusieurs répertoires, ou
une arborescence complète. Par défaut la commande ne crée pas d’arborescence. Si vous
passez comme arguments rep1/rep2 et que rep1 n’existe pas, la commande retourne une
erreur. Dans ce cas, utilisez le paramètre -p.
mkdir [-p] rep1 [rep2] ... [repn]
Exemples:
$ mkdir cours
$ mkdir cours/linux
$ mkdir -p exo/reseaux
2.5. Afficher le répertoire courant
La commande permettant de connaître le répertoire dans lequel on se trouve est:
pwd
36
2.6. Supprimer des répertoires
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 rep1 [rep2] ... [repn]
Pour supprimer une arborescence vous devrez utiliser la commande rm.
Exemples:
$ rmdir cours
rmdir: cours: Le répertoire n’est pas vide.
$ rmdir cours/linux
37
Exemples :
$ cp photo1.jpg /home/stagiaire/Bureau
$ cp photo2.jpg photo3.jpg /home/stagiaire/Bureau
$ cp /home/stagiaire/photo.jpg /home/stagiaire/Bureau/newphoto.jpg
$ cp *.jpg /home/stagiaire/Bureau
$ cp -r /home/stagiaire/cours /home/stagiaire/Bureau
$ cp -r /home/stagiaire/docs /home/stagiaire/docsBis
2.9. 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.
Avec les trois commandes mv successives suivantes :
• fich1 est renommé en fich1.old ;
• fich2 est déplacé dans rep1 ;
• fich3 est déplacé dans rep1 et renommé en fich3.old .
$ touch fich1 fich2 fich3
$ mv fich1 fich1.old
$ mv fich2 rep1/fich2
$ mv fich3 rep1/fich3.old
2.10. 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 physique (hard link) et le lien symbolique (soft link) qui correspond à la
définition donnée ici.
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. La commande de création des liens symboliques ne vérifie pas si le
fichier pointé existe. Il est même possible de créer des liens sur des fichiers qui n’existent pas.
ln -s fichier lien
Le cas échéant le lien se comportera à 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 ;
• etc.
Le seul cas où le lien symbolique se détache du fichier pointé est la suppression. 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.
Dans ce cas le lien pointe dans le vide.
$ touch fich1
$ ln -s fich1 lienfich1
$ ls -l
-rw-r--r-- 1 stagiaire users 0 mar 4 19:16 fich1
lrwxrwxrwx 1 stagiaire users 4 mar 4 19:17 lienfich1 -> fich1
$ ls -F
fic1 lienfich1@
$ echo salam>fich1
$ cat lienfich1
salam
Cet exemple montre bien qu’un lien symbolique est en fait un fichier spécial de type «
l» pointant vers un autre fichier. Notez dans la liste détaillée la présence d’une flèche
38
indiquant sur quel fichier pointe le lien. On distingue le caractère @ indiquant qu’il s’agit
d’un lien symbolique lors de l’utilisation du paramètre -F.
Si vous disposez d’un terminal en couleur, il est possible que le lien symbolique
apparaisse, par convention sous Linux, en bleu ciel. S’il apparaît en rouge, c’est qu’il
pointe dans le vide.
La commande echo et le signe > seront expliqués plus loin. L’effet est ici l’écriture dans le
fichier fich1 de « salam ». La commande cat affiche le contenu d’un fichier. Le lien
représentant fich1, la sortie est bien celle attendue.
2.11. Les liens physiques
Un lien physique sur un fichier est un fichier qui occupe exactement le même espace disque que
le fichier vers lequel il pointe. Ainsi les deux fichiers : le lien et le fichier pointé sont
physiquement les mêmes bien que virtuellement (pour le système de fichiers) ils portent des
noms différents et puissent être localisés dans des répertoires différents.
Syntaxe : ln nom-du-fichier-à-pointer nom-du-lien-symbolique
Vous aurez remarqué ici l'absence de l'attribut -s réservé aux liens symboliques.
3. Wildcards : 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 même chose que [!...]
Exemple :
$ a* : affiche tous les fichiers commençant par a
ls
$ a??? : affiche les fichiers de quatre caractères commençant par a
ls
$ b??* : affiche les fichiers d’au moins trois caractères et commençant par b
ls
$ *[37] : affiche les fichiers finissant par 3 ou 7
ls
$ [x-z]?*[37] : affiche les fichiers commençant par les lettres de x à z, possédant
ls
au moins un second caractère avant la terminaison 3 ou 7
$ ls *[!7] : affiche les fichiers ne finissant pas par 7
4. Verrouillage de caractères
Certains caractères spéciaux doivent être verrouillés, par exemple en cas de caractères peu
courants dans un nom de fichier.
L’antislash \ permet de verrouiller un caractère unique. ls photo\ *.png va lister tous les
fichiers contenant un espace après photo.
• Les guillemets "..." permettent l’interprétation des caractères spéciaux, des variables, au sein
d’une chaîne.
• Les apostrophes ’...’ verrouillent tous les caractères spéciaux dans une chaîne ou un fichier.
39
5. Rechercher des fichiers
Il est utile de pouvoir retrouver certains fichiers dans l’arborescence du système et d’effecteur
certains traitements avec cette liste de fichiers. La commande utilisée est:
find répertoires options
où répertoires permet d’indiquer le (ou les) répertoire(s) de départ de la recherche et les
options permettent de traiter et de récupérer les données.
La commande find de nombreuses options qui permettent de rechercher des fichiers qui ont
certaines caractéristiques:
• -name nom_a_chercher : tous les fichiers dont le nom est nom_a_chercher
• -size n : tous les fichiers dont la taille est n (en blocs de 512 octets),
• -mtime n : tous les fichiers dont le nombre de jours depuis la dernière modification est n,
• -atime n : tous les fichiers dont le nombre de jours depuis le dernier accès est n,
• -user nom_utilisateur : tous les fichiers dont le propriétaire est nom_utilisateur,
• -type t: tous les fichiers du type t (f pour un fichier ordinaire, et les autres abréviations
comme pour la commande ls -l),
• -perm nombre : tous les fichiers dont les autorisations sont de la forme nombre,
D’autres options permettent de traiter les informations reçues:
• -print: pour afficher à l’écran le résultat de la commande,
• -exec commande \;: permet d’exécuter une commande sur les fichiers qui vérifient les
critères de la commande find. Ces fichiers sont passés à la commande –exec par les signes
{}. Attention à bien terminer la commande par \;
• -ok commande \; : effectue la même opération que ci-dessus mais demande une
confirmation de l’utilisateur avant l’exécution de la commande.
Il est possible de passer plusieurs critères de sélection des fichiers. Pour cela, il faut utiliser les
opérateurs logiques ! (négation), -o (ou) et regrouper tous ces critères dans des parenthèses.
L’opérateur et étant obtenu par juxtaposition des critères.
Exemples :
$ find . -name "fich*" -print
affiche les fichiers depuis l’emplacement courant et commençant par fich
$ find /home -name "re*" -type d -print
cherche et affiche , dans la /home, tous les répertoires dont le nom commence par re
$ find / -type f -user stagiaire -group users -print
cherche et affiche tous les fichiers ordinaires , dans la racine /, appartenant à stagiaire et au
groupe users.
$ find -type d -perm 777
cherche les répertoires où tout le monde (user, group, others) a tous les droits x
$ find ~ -perm 002 -exec ls -l {} \;
affiche un listing détaillé des fichiers de l’arborescence /home/stagiaire qui ont
l’autorisation d’écriture pour les autres.
$ find . \( -name a.txt -o -name core -o -name "*.c" \) -ok rm {} \;
supprime après confirmation de l’utilisateur tous les fichiers à partir du répertoire courant
(et dans tous les sous répertoires) du type a.txt, core et .c ...
6. Manipulation des données d’un fichier
6.1. Trier les lignes d’un fichier
La commande sort permet de trier des lignes. Par défaut le tri s’effectue sur tout le tableau et
en ordre croissant.
40
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 syntaxe de sort est :
sort [options] [-k pos1[,pos2]] [fic1...]
$ cat liste
souris optique 30 15
dur 30giga 100 30
dur 70giga 150 30
disque zip 12 30
disque souple 10 30
ecran 17 300 20
ecran 19 500 20
clavier 105 45 30
clavier 115 55 30
carte son 45 30
carte video 145 30
Voici comment trier par ordre alphabétique sur la première colonne :
$ sort -k 1 liste
carte son 45 30
carte video 145 30
clavier 105 45 30
clavier 115 55 30
dur 30giga 100 30
dur 70giga 150 30
disque souple 10 30
disque zip 12 30
ecran 17 300 20
ecran 19 500 20
souris optique 30 15
Quelques paramètres :
Option Rôle
-n Tri numérique, idéal pour les colonnes de chiffres.
-f Pas de différences entre majuscules et minuscules (conversion en minuscules puis
tri).
-r Reverse, tri en ordre décroissant.
41
6.2. Recherche d’une chaîne de caractères
La commande :
grep [option] expression-régulière [fichiers...]
affiche à l’écran les lignes des fichiers qui contiennent une chaîne de caractères correspondant à
l’expression régulière donnée.
Les options les plus courantes sont:
• -c : qui affiche seulement le nombre de lignes contenant la chaîne,
• -i : qui ignore la différence entre minuscules et majuscules,
• -n : qui affiche les numéros de lignes.
Exemples :
$ grep '[0-9]' liste
cherche de toutes les lignes, dans le fichier liste, contenant un caractère numérique
$ grep -i info* liste
cherche de toutes les lignes, dans le fichier liste, contenant le mot info qu'il soit majiscule
ou miniscule.
$ grep '^c' liste
cherche de toutes les lignes, dans le fichier liste, commençant par la lettre c.
$ grep 'e$' liste
cherche de toutes les lignes, dans le fichier liste, se terminant par la lettre e.
$ grep -v 'disque' liste
cherche de toutes les lignes, dans le fichier liste ne contenant pas le mot disque
6.3. Compter les caractères, les mots et les lignes
La commande :
wc [options] [fichiers...]
permet de compter le nombre de lignes, de mots et de caractères de chaque fichier.
Les options sont :
• -l : pour afficher seulement le nombre de lignes,
• -w : pour afficher seulement le nombre de mots,
• -c : pour afficher seulement le nombre de caractères.
Exemple :
$ wc -w fichier
70 fichier
6.4. Extraction avec la commaned cut
La commande cut permet d'extraire du contenu de chaque ligne d'un fichier et d'afficher ce
contenu. Le verbe anglais "cut" signifie "couper", la commande permet effectivement de couper
une partie de chaque ligne d'un fichier.
La sélection des caractères à afficher peut se faire de deux façons: par la position des caractères
ou par la sélection de colonne en fonction d'un séparateur.
Sélection par position des caractères
L’option -c permet de sélectionner des caractères selon leur position sur la ligne. Le premier
caractère de la ligne a la position 1.
Exemple
Le contenu du fichier os.txt est comme suit :
$ cat os.txt
Quelques distributions Linux :
Ubuntu,Kubuntu,Xubuntu,Lubuntu, ...
OS X
42
Windows 95/98/2000/XP/7/8/8.1/10
Essayons d'extraire les 14 premiers caractères de chaque ligne :
$ cut -c1-14 os.txt
Quelques distr
Ubuntu,Kubuntu
OS X
Windows 95/98/
Sélection à l'aide de délimiteurs
La seconde possibilité pour sélectionner des caractères dans une ligne est d'utiliser des
délimiteurs pour séparer la ligne en colonnes. Il est alors possible de choisir la ou les colonnes à
afficher.
Le délimiteur par défaut est le caractère de tabulation ("\t") mais l'option "-d" (ou "--
delimiter") permet de choisir un autre caractère.
L'option "-f" (ou "--fields") permet ensuite de sélectionner une liste de colonnes à affiche
dans la ligne.
Exemples
Le fichier /etc/passwd contient la liste des utilisateurs ainsi que des informations sur le
dossier de l'utilisateur, son shell, etc. Voici un exemple du contenu de ce fichier:
$ cat /etc/passwd
...
hplip:x:105:7:HPLIP system user,,,:/var/run/hplip:/bin/false
gdm:x:106:111:Gnome Display Manager:/var/lib/gdm:/bin/false
stagiaire:x:1000:1000:Compte stagiaire:/home/stagiaire:/bin/bash
...
On voit que les informations sont séparées par des doubles points ":", on peut donc utiliser ce
caractère comme délimiteur (avec -d) pour afficher une colonne quelconque.
Par exemple, la commande suivante affichera la liste des utilisateurs du système:
$ cut -d: -f1 /etc/passwd
...
hplip
gdm
ikipou
...
Pour avoir l'utilisateur et son numéro d'utilisateur (UID), on peut choisir d'afficher plusieurs
colonnes:
$ cut -d: -f1,3 /etc/passwd
...
hplip:105
gdm:106
ikipou:1000
...
Syntaxe de liste
Les options -c et -f peuvent prendre une liste d'intervalles comme paramètres, ces listes sont
séparées par des virgules.
Les intervalles peuvent être exprimés de la façon suivante:
X Sélectionner la position X, les positions commencent à 1
X- Sélectionner depuis la position X jusque la fin de la ligne ou la dernière position
X-Y Sélectionner de la position X à la position Y incluse
-Y Sélectionner depuis la première position jusque la position Y
43
Il est préférable d'entourer un intervalle avec des guillemets ou des apostrophes afin qu'ils ne
soient pas confondus avec des options.
6.5. Comparaison du contenu de deux fichiers
La commande diff donne les modifications à apporter au premier fichier spécifié pour qu'il ait
le même contenu que le second. Par exemple :
diff pass.tmp /etc/passwd
affichera les modifications à apporter au fichier pass.tmp pour qu'il ait le même contenu que
le fichier /etc/passwd.
Les modifications à apporter sont données sous forme de message. Par exemple :
• 3a4,7 indique que après la troisième ligne du premier fichier doivent être incrustées les
lignes 4 à 7 du second. Attention, les messages suivants indiqueront les numéros des
lignes sans tenir compte des incrustations qui auront éventuellement été apportées.
• 5,8d4 indique que les lignes 5 à 8 du premier fichier doivent être supprimées, car elles
n'existent pas derrière la ligne 4 du second.
• 10,15c12,17 indique que les lignes 10 à 15 du premier fichier doivent être
intégralement changées contre les lignes 12 à 17 du second.
Dans les trois cas de figure, les lignes précédées du signe ``<'' se rapportent au premier fichier,
et les lignes précédées du signe ``>'' se rapportent au second.
L'option -b permet de ne pas tenir compte des espaces lors de la comparaison des lignes.
La commande cmp permet de comparer deux fichiers, et d'afficher le nombre de caractères et de
lignes qui diffèrent. L'option -l affiche sur trois colonnes le numéro de ligne où il y a une
différence et les valeurs ASCII en base huit des caractères différents.
6.6. Extraire le début ou la fin d’un fichier
Début du fichier
La commande :
head [-n] [fichiers...]
affiche sur la sortie standard les n premières lignes de chacun des fichiers. Par défaut, la valeur
de n est fixée à 10.
Fin du fichier
La commande :
tail [début] [fichier]
affiche la fin du fichier sur la sortie standard. La première ligne affichée est indiquée par début
qui peut être du type:
• +n: nième ligne du fichier,
• -n: nième ligne à partir de la fin du fichier.
7. Archivage et compression
Pour compresser un fichier sous Linux, il faut procéder en deux étapes :
1. réunir les fichiers dans un seul gros fichier appelé archive. On utilise pour cela le
programme tar ;
2. compresser le gros fichier ainsi obtenu à l'aide de gzip ou de bzip2.
Ces deux étapes sont résumées dans le schéma de la figure suivante.
44
Figure : Compression d’un fichier sous Linux
Le programme tar (tape archiver) est disponible par défaut sous Ubuntu. Il fait partie de
l'installation minimale.
Pour tous les formats à base de tar, vous verrez que les options de tar sont les mêmes :
• c : crée l'archive
• x : extrait l'archive
• f : utilise le fichier donné en paramètre
• v : active le mode « verbeux » (bavard, affiche ce qu'il fait).
• t : affiche la liste des fichiers d'une archive
Puis selon la compression souhaitée :
• z : ajoute la compression Gzip.
• j : ajoute la compression Bzip2.
Utilisation tar seul : concaténation de fichiers
Création d'une archive, archivage de plusieurs fichiers :
tar cvf archive.tar fichier1 fichier2...
De même pour un dossier :
tar cvf archivedossier.tar dossier
Pour l'extraction :
tar xvf archivedossier.tar
Compression avec gzip (.tar.gz)
Création :
tar zcvf votre_archive.tar.gz votre_dossier
Extraction :
tar zxvf votre_archive.tar.gz
45
Compression avec Bzip2 (.tar.bz2)
Remarques : Bzip2 crée des fichiers beaucoup plus petits que Gzip, mais utilise plus de
ressources processeur surtout pour compresser.
Création :
tar jcvf votre_archive.tar.bz2 votre_dossier
Extraction :
tar jxvf votre_archive.tar.bz2
8. Pipes et Redirections
8.1. Redirection
Principe
Par redirection, on entend 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. Comme pour
l’eau, 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.
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
$ ls -l
total 4568
-rw-r--r-- 1 stagiaire users 69120 sep 13 2016 coursLinux.pdf
-rw-r--r-- 1 stagiaire users 9632 oct 7 2015 expose.ppt
-rw-r--r-- 1 stagiaire users 6849 nov 17 2014 exo_algo.doc
...
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.
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
$ ls -l
total 4568
-rw-r--r-- 1 stagiaire users 69120 sep 13 2016 coursLinux.pdf
-rw-r--r-- 1 stagiaire users 9632 oct 7 2015 expose.ppt
-rw-r--r-- 1 stagiaire users 6849 nov 17 2014 exo_algo.doc
…
Mon Jan 18 15:20:12 2016
46
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
5 28 210
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 ou 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 dossier1
rmdir: `dossier1’: No such file or directory
$ rmdir dossier1 2>error.log
$ cat error.log
rmdir: `dossier1’: No such file or directory
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 >&. Il est aussi important de savoir dans quel
sens le shell interprète les redirections.
Les redirections étant en principe en fin de commande, le shell recherche d’abord les caractères
<, >, >> en fin de ligne. Ainsi si vous voulez grouper les deux canaux de sortie et d’erreur dans
un même fichier, il faut procéder comme suit.
$ 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. Ce fichier contiendra donc à la fois la sortie standard et la sortie
d’erreur.
Vous pouvez utiliser les deux types de redirection à la fois :
$ wc < resultat.txt > compte.txt
$ cat compte.txt
5 28 210
8.2. Pipes
Les redirections d’entrée/sortie telles que vous venez de les voir permettent de rediriger les
résultats vers un fichier. Ce fichier peut ensuite être réinjecté dans un filtre pour en
extraire d’autres résultats. Cela oblige à taper deux lignes : une pour la redirection vers
un fichier, l’autre pour rediriger ce fichier vers le filtre. Les tubes ou pipes permettent
de rediriger directement le canal de sortie d’une commande vers le canal d’entrée d’une
autre. Le caractère permettant cela est | accessible depuis la combinaison [AltGr] 6 des claviers
français.
$ ls -l > resultat.txt
$ wc < resultat.txt
devient
$ ls -l | wc
47
9. Les groupes de commandes
Il existe plusieurs méthodes pour enchaîner des commandes sur une même ligne :
· Exécution séquentielle :
commande1; commande2;...; commandeN
Exemple :
$ date;pwd
lun jan 18 21:07:07 CET 2016
/home/stagiaire
· Exécution sous condition d'erreur :
commande1 || commande2 || ... || commandeN
si commande1 ne se termine pas correctement, alors commande2 est exécuté, et ainsi de suite.
Exemple :
$ qlqchose || pwd
qlqchose: command not found
/home/stagiaire
$ date || pwd
lun jan 18 21:07:07 CET 2016
· Exécution sous conditions de réussite :
cmd1 && cmd2 && ... && cmdN
si commande1 s'est bien déroulée, alors commande2 sera exécutée; et ainsi de suite
Exemple :
$ date && pwd
lun fév 25 21:21:07 CET 2013
/home/stagiaire
$ qlqchose && pwd
qlqchose: command not found
Les groupes de commandes peuvent remplacer les commandes simples dans les pipes; mais
dans ce cas, il faudra entourer le groupe de commande avec des accolades {}; cela permet les
combinaisons les plus variées; par exemple :
{ commande1 && commande2; commande3 || commande4; } | commande5
Attention : l'espace après { et le ; avant } sont indispensables.
L'utilisation des parenthèses () est possible et a le même effet à la différence qu'elles invoquent
un nouveau shell qui sera chargé de l'exécution des commandes.
10. L'éditeur vi
vi est un des éditeurs de texte les plus populaires sous Linux (avec Emacs et pico) malgré son
ergonomie très limitée. En effet, vi (prononcez Vihaille) est un éditeur entièrement en mode
texte, ce qui signifie que chacune des actions se fait à l'aide de commandes texte. Cet éditeur,
bien que peu pratique à première vue est très puissant et peut être très utile en cas de non
fonctionnement de l'interface graphique.
La syntaxe pour lancer vi est la suivante :
vi [nom_du_fichier]
Une fois le fichier ouvert, il vous est possible de vous déplacer à l'aide des curseurs, ainsi que
des touches h, j, k et l (au cas où le clavier ne possèderait pas de curseurs fléchés).
Les modes de vi
vi possède 3 modes de fonctionnement :
• Le mode normal: celui dans lequel vous êtes à l'ouverture du fichier. Il permet de taper
des commandes
48
• Le mode insertion: Ce mode permet d'insérer les caractères que vous saisissez à
l'intérieur du document. Pour passer en mode insertion, il suffit d'appuyer sur la touche
Insert de votre clavier, ou à défaut sur la touche i
• Le mode de remplacement: Ce mode permet de remplacer le texte existant par le texte
que vous saisissez. Il vous suffit de réappuyer sur insert (ou i) pour passer du mode
insertion au mode remplacement, et d'appuyer sur la touche Echap pour revenir en mode
normal
Les commandes de base
Commande Description
:q Quitte l'éditeur (sans sauvegarder)
:q! Force l'éditeur à quitter sans sauvegarder
(même si des modifications ont été apportées au document)
:wq Sauvegarde le document et quitte l'éditeur
:file nom_du_fichier Sauvegarde le document sous le nom spécifié
Les commandes d'édition
Commande Description
x Efface le caractère actuellement sous le curseur
dd Efface la ligne actuellement sous le curseur
dxd Efface x lignes à partir de celle actuellement sous le curseur
nx Efface n caractères à partir de celui actuellement sous le curseur
x>> Indente x lignes vers la droite à partir de celle actuellement sous le curseur
x<< Indente x lignes vers la gauche à partir de celle actuellement sous le curseur
La recherche et le remplacement
Pour rechercher un mot dans un document, il vous suffit (en mode normal) de taper / suivi de la
chaîne à rechercher, puis de valider par la touche entrée. Il est alors possible d'aller d'occurrence
en occurrence grâce à la touche n.
Pour remplacer une chaîne de caractères par une autre sur un ligne, il existe une commande très
puissante sous vi utilisant les expressions régulières. Voici sa syntaxe :
:s/chaine_a_remplacer/chaine_remplacante/
49
Je teste mes acquis
Question 1.
a. Créez trois répertoires rep1, rep2 et rep3 en une seule ligne de commande.
……………………………………………………………………………………………………..
b. Effacez ces trois répertoires en une seule ligne de commande.
……………………………………………………………………………………………………..
c. Que se passe-t-il si vous tapez mkdir mkdir ?
……………………………………………………………………………………………………..
d. Vous voulez détruire un répertoire ancien en utilisant la commande rmdir mais ça ne
marche pas. ls vous dit qu'il est vide, et pourtant vous ne réussissez pas à l'effacer. Pourquoi ?
……………………………………………………………………………………………………..
e. Y a-t-il une option de mkdir qui permette de créer à la fois un répertoire et un sous-répertoire
de ce répertoire ?
……………………………………………………………………………………………………..
f. Comment créer un répertoire en spécifiant des droits ?
……………………………………………………………………………………………………..
g. Quel est l'effet de la commande suivante : rmdir -p d1/d11/d111
……………………………………………………………………………………………………..
Question 2.
a. Affichez le contenu de /usr/local/bin
……………………………………………………………………………………………………..
d. Dans quel ordre les fichiers et répertoires sont-ils classés par défaut? Quelles sont les options
qui peuvent servir à modifier ce critère de classement ?
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
e. Affichez le contenu de votre répertoire courant de telle sorte que les fichiers modifiés
récemment apparaissent en premier.
……………………………………………………………………………………………………..
f. Comment afficher les droits d'un répertoire donné ?
……………………………………………………………………………………………………..
50
Question 3.
a. Dans votre répertoire courant, créez en une commande les fichiers suivants:
ubuntu16.10 kubuntu xubuntu lubuntu ubuntu16.04 Ubuntu kali_Linux
……………………………………………………………………………………………………..
b. Créer le répertoire OS dans votre répertoire courant, en une commande déplacez les fichiers
précédemment créés dans le répertoire OS.
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
c. Lister tous les fichiers de OS qui :
se terminant par 4 ……………………………………………………………………………..
commençant par ubuntu ……………………………………………………………………..
commençant par ubuntu et de 7 lettres maximum …………………………………………..
ne contenant aucun chiffre numérique …………………………………………………...…….
contenant la chaîne Lin ……………………………………………………………………….
commençant par u ou U ………………………………………………………………………..
d. Copier les fichiers dont l'avant dernier caractère est un 0 ou 1 dans le répertoire /tmp en une
seule commande.
……………………………………………………………………………………………………..
Question 4.
On suppose que :
• Vous venez de vous connecter et que vous vous trouvez dans votre répertoire personnel ;
• Vous êtes propriétaire et avez tous les droits d’accès au répertoire /gestion-compet.
a. Le répertoire /gestion-compet contient actuellement la sous-arborescence de répertoires
suivante.
N.B : Les répertoires bin et code-source ne sont pas nécessairement vides. Le nom du
répertoire code-source doit devenir src.
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
51
b. Déplacer le fichier LisezMoi.txt du répertoire dossierC de votre répertoire personnel
dans le répertoire /gestion-compet.
……………………………………………………………………………………………………..
Déplacer tous les fichiers du répertoire dossierC de votre répertoire personnel dont le nom se
termine par .c et .h dans le répertoire src.
……………………………………………………………………………………………………..
Déplacer tous les fichiers du répertoire dossierC de votre répertoire personnel dont le nom
commence par tableau dans le répertoire bin.
……………………………………………………………………………………………………..
Détruire le répertoire dossierC de votre répertoire personnel ainsi que tout son contenu.
……………………………………………………………………………………………………..
c. Faire une recherche dans le répertoire src des fichiers dont l’extension est .c ou .h.
……………………………………………………………………………………………………..
Question 5.
Soit le fichier composants.txt contenant les lignes suivantes :
tower
processeur
disque dur
cd-rom
Ecran
ecran_1440*720
carte mere
Processeur i7
dvd-rom
CD-ROM
Motherboard
52
d. Afficher les lignes 14 à 21 du fichier /etc/hosts
……………………………………………………………………………………………………..
e. Afficher les lignes 5 à 7 d'un fichier monFichier.txt de 14 lignes
……………………………………………………………………………………………………..
Question 7.
a. Comment chercher dans votre dossier personnel tous les fichiers dont les noms commençent
par un a majuscule ou minuscule, suivi d'éventuellement quelques lettres ou chiffres, et se
terminent par un chiffre entre 3 et 6 ?
……………………………………………………………………………………………………..
b. Chercher tous les fichiers, à partir du répertoire racine /, qui ont été modifié il y a plus de 30
jours ? Il y a 30 jours ? Il y a moins de 30 jours?
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
c. Comment fait-on pour spécifier que le fichier recherché est un répertoire ?
……………………………………………………………………………………………………..
d. Chercher tous les fichiers, dans votre dossier personnel, ayant une taille supérieure à 100 Mo
……………………………………………………………………………………………………..
e. Utiliser find pour effacer tous vos fichiers de sauvegarde (terminés par un tilde) qui ont plus
d'un mois.
……………………………………………………………………………………………………..
f. Rechercher le fichier afaire.txt à partir du répertoire racine / en redirigeant la sortie
d’erreur standard dans le fichier error.log.
……………………………………………………………………………………………………..
g. Rechercher les fichiers dont le nom se termine par .c ou .h à partir du répertoire
/usr/share.
……………………………………………………………………………………………………..
Question 8.
Soit le fichier Q8.txt dont chaque ligne commence par un chiffre, suivi d'un slash (/), puis d'un
ou plusieurs mots.
a. Affichez les lignes de ce fichier triées en ordre croissant, suivant le nombre placé en début de
ligne.
……………………………………………………………………………………………………..
b. Triez ces lignes par ordre alphabétique inverse.
……………………………………………………………………………………………………..
Question 9.
a. Lister le contenu du répertoire courant dans le fichier contenu.txt.
……………………………………………………………………………………………………..
b. Ajouter le contenu du fichier contenu.txt au fichier oldcontenu.txt.
……………………………………………………………………………………………………..
53
c. En utilisant le fichier contenu.txt, compter le nombre de fichiers dans le répertoire
courant.
……………………………………………………………………………………………………..
d. Compter à nouveau le nombre de fichiers dans le répertoire courant sans passer par un fichier
intermédiaire (utiliser les commandes ls et wc ainsi qu’un tube ou pipe).
……………………………………………………………………………………………………..
e. En utilisant les commandes ls et sort, afficher le contenu du répertoire courant trié par
ordre alphabétique inverse.
……………………………………………………………………………………………………..
f. Lister les dix derniers fichiers récemment modifiés du répertoire /usr/bin
……………………………………………………………………………………………………..
Question 10.
a. Le répertoire /tmp qui contient un fichier test. Créez un lien symbolique sur /tmp/test
appelé test_rac, dans votre répertoire personnel.
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
b. Quelles sont les différences entre les liens physiques et les liens symboliques ?
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
Question 11.
a. Dans votre répertoire personnel créer un répertoire appelé mybackups
……………………………………………………………………………………………………..
b. Créer une archive tar non compressée de /etc/udev sous mybackups
……………………………………………………………………………………………………..
d. Compresser l'archive créée dans la question b sous le nom udevcomp (en utilisant gzip)
……………………………………………………………………………………………………
54
chapitre 5
administration des utilisateurs
1. Principe
1.1. Les utilisateurs
Unix est un système multi-utilisateurs. Plusieurs personnes peuvent l'utiliser de façon
simultanée (dans le cas de configurations en réseau).
Pour le système, un utilisateur n'est pas obligatoirement une personne physique. Un utilisateur
peut détenir des fichiers, exécuter des programmes ....
Un utilisateur possède un nom d'utilisateur appelé aussi login lui permettant d'établir une
connexion. Ce login est associé à un mot de passe personnel. Pour accéder aux ressources du
système, l'utilisateur doit entrer la bonne paire login/mot de passe : c'est l'authentification (le
login).
Les utilisateurs sont identifiés par le système grâce à un UID (User Identifier : identifiant
d'utilisateur) unique et au moins un GID (Group Identifier : identifiant du groupe) . Ces
identifiants sont des valeurs numériques.
Les UID d’une valeur inférieure à 100 sont en principe associés à des comptes spéciaux avec
des droits étendus. Ainsi l’UID de root, l’administrateur, est 0. Selon les distributions, à partir de
100, 500 ou 1000, et ce jusqu’à environ 60000, ce sont les UID des utilisateurs sans pouvoirs
particuliers.
Un login a en principe une taille de 8 caractères. En fait Linux et d’autres systèmes acceptent
une taille plus grande, mais avec la plupart des commandes l’affichage, voire la gestion des
logins, est limité à 8 caractères.
Un login accepte la plupart des caractères. Il ne doit pas commencer par un chiffre.
1.2. Les groupes
Chaque utilisateur fait partie d’au moins un groupe. Un groupe regroupe des utilisateurs.
Comme pour les logins, le GID du groupe accompagne toujours l’utilisateur pour le contrôle de
ses droits. Un utilisateur peut faire partie de plusieurs groupes, auquel cas il faut distinguer son
groupe primaire des groupes secondaires.
Les groupes sont aussi des numéros. Il existe des groupes spécifiques pour la gestion de
certaines propriétés du système et notamment l’accès à certains périphériques.
Le groupe primaire est celui qui est toujours appliqué à la création d’un fichier. Si
l’utilisateur stagiaire a pour groupe primaire users, alors les fichiers créés par stagiaire
auront comme groupe d’appartenance users.
Un utilisateur dispose de tous les droits associés à ses groupes secondaires. Si stagiaire
a comme groupe secondaire informatique et qu’un fichier dispose des droits d’écriture pour
ce groupe, alors stagiaire aura le droit de modifier son contenu.
La commande id permet de connaître les informations essentielles sur un utilisateur : uid, gid,
groupes secondaires.
$ id stagiaire
uid=1000(stagiaire) gid=100(users) groupes=100(users),16(dialout),3(sys),
33(informatique)
Un fichier est créé par stagiaire. Son propriétaire est stagiaire et son groupe est le groupe
principal de stagiaire : users.
$ touch fichtest
$ ls -l fichtest
-rw-r--r-- 1 stagiaire users 0 mar 10 14:30 fichtest
55
2. Les fichiers
2.1. /etc/passwd
Le fichier /etc/passwd contient la liste des utilisateurs du système local. Il est lisible
par tout le monde. Les informations qu’il contient sont publiques et utiles tant pour le
système que pour les utilisateurs. Chaque ligne représente un utilisateur et est composée de
sept champs.
Login:password:UID:GID:comment:homedir:shell
Détaillons les champs :
• Login : c'est l'identifiant que doit entrer l'utilisateur pour s'authentifier.
• password : il est évident que le mot de passe n'apparaît pas en clair dans le fichier, il est
chiffré en md5. C'est la commande passwd qui s'occupe de chiffrer le mot de passe. Ce champ
peut prendre plusieurs significations :
* : il est impossible de s'authentifier sur le système avec ce compte
!! : Le compte est désactivé
x ou ! : le mot de passe est dans un fichier shadow (voir ci-après)
champ vide : Il n'y a pas de mot de passe pour ce compte.
• UID : il s'agit de l'identifiant unique de l'utilisateur.
• GID : l'identifiant du groupe principal de l'utilisateur
• comment : des informations sur l'utilisateur. chaque information est séparée par une virgule
(le nom complet, numéro de poste ...).
• homedir: 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.
2.2. /etc/group
Le fichier /etc/group contient la définition des groupes d’utilisateurs et pour chacun la liste
des utilisateurs dont il est le groupe secondaire. Chaque ligne est composée de quatre champs :
Group:password:GID:user1,user2,...
• Group : le nom du groupe.
• password : le mot de passe associé. Voyez l’explication juste en dessous.
• GID : l'identifiant du groupe.
• user1,user2,... : la liste des utilisateurs appartenant à ce groupe.
Il est inutile de replacer dans le quatrième champ les utilisateurs ayant ce groupe pour groupe
principal, c’est induit.
Vous pouvez être surpris de voir la présence d’un champ de mot de passe pour les groupes. Dans
la pratique il est très rarement utilisé. Comme il est bien entendu impossible de se
connecter comme un groupe, l’explication est ailleurs. Un utilisateur a le droit de changer de
groupe afin de prendre, temporairement tout du moins, un groupe secondaire comme groupe
principal avec la commande newgrp.
Dans ce cas, l’administrateur peut mettre en place un mot de passe sur le groupe pour protéger
l’accès à ce groupe en tant que groupe principal.
2.3. /etc/shadow
Le fichier /etc/shadow accompagne le fichier /etc/passwd. C’est là qu’est stocké,
entre autres, le mot de passe crypté des utilisateurs. Pour être plus précis il contient
toutes les informations sur le mot de passe et sa validité dans le temps.
Chaque ligne est composée de 9 champs séparés par des : :
ali:$2a$10$AjAE5iUJcltz4wOZO.f2UZ0qP/8EnOFY.P.m10HifS7J8i:13913:0:99999:7:::
56
• Champ 1 : le login.
• Champ 2 : le mot de passé crypté. Le $xx$ initial indique le type de cryptage.
• Champ 3 : nombre de jours depuis le 1er janvier 1970 du dernier changement de mot de passe.
• Champ 4 : nombre de jours avant lesquels le mot de passe ne peut pas être changé (0 : il peut
être changé n’importe quand).
• Champ 5 : nombre de jours après lesquels le mot de passe doit être changé.
• Champ 6 : nombre de jours avant l’expiration du mot de passe durant lesquels
l’utilisateur doit être prévenu.
• Champ 7 : nombre de jours après l’expiration du mot de passe après lesquels le compte est
désactivé.
• Champs 8 : nombre de jours depuis le 1er janvier 1970 à partir du moment où le compte a été
désactivé.
• Champ 9 : réservé.
Dans l’exemple de la ligne ali, le mot de passe a été changé 13913 jours après le 01/01/1970.
Le mot de passe doit être changé avant 0 jours mais il est toujours valide car le champ suivant
indique qu’il faut le changer au bout de 99999 jours (273 ans) et le champ 5 est vide (pas
d’obligation de changement de mot de passe). Le compte est désactivé après 7 jours.
3. Gestion des utilisateurs
3.1. Ajouter un utilisateur
La commande useradd permet de créer un utilisateur :
useradd <options> login
Option Rôle
-m Crée aussi le répertoire personnel. Elle est parfois comprise par défaut, mais il
vaut mieux vérifier si le répertoire personnel est présent après l’utilisation de la
commande si vous n’utilisez pas cette option.
-u Précise l’UID numérique de l’utilisateur, pour le forcer. Autrement l’UID est
calculé selon les règles du fichier login.defs et les UID existants.
-g Précise le groupe principal de l’utilisateur, par GID ou par son nom .
-G Précise les groupes additionnels (secondaires, de l’utilisateur) séparés par des
virgules.
-d Chemin du répertoire personnel. Généralement /home/<login>, mais
n’importe quel chemin peut être précisé.
-c Un commentaire associé au compte. Il peut être quelconque. Son contenu peut
être modifié par l’utilisateur avec la commande chfn.
-s Shell par défaut de l’utilisateur.
-p Le mot de passe de l’utilisateur. Attention ! le mot de passe doit déjà être crypté !
À moins de recopier le mot de passe d’un compte générique, vous préférerez
utiliser ensuite la commande passwd.
La commande suivante crée le compte omar avec la plupart des options de base précisées. C’est
juste un exemple car, sauf parfois le -m, si vous ne précisez rien ce sont les options par défaut.
# useradd -m -u 1010 -g users -G informatique -s /bin/bash -d
/home/omar -c "Compte de omar" omar
57
La commande ne crée pas de mot de passe. Il faut le faire à la main avec la commande passwd.
# passwd omar
Changing password for omar.
Nouveau mot de passe :
Retaper le nouveau mot de passe :
Mot de passe changé
58
3.5. Suppression d'un utilisateur
Supprimez un utilisateur avec la commande userdel. Par défaut le répertoire personnel
n’est pas supprimé. Vous devez pour ceci passer l’option -r.
# userdel -r omar
4. Gestion des groupes
4.1. Création d’un groupe
La commande groupadd permet de créer un nouveau groupe :
•
59
Commande Rôle
Sans option, su permet de se connecter en tant
su
qu'administrateur (root)
su ali Agir en tant qu'utilisateur ali
Se connecter en tant que ali. Avec "-" on récupère tout
su -ali
l'environnement de l'utilisateur ali
l'option -c permet simplement d'exécuter la commande entre
su -c "useradd abdellah" guillemet en tant que root (pas d'option). Une fois la
commande terminée, on reprend son identité
Une autre solution est d'utiliser la commande sudo qui a, sur certaines distributions comme
Ubuntu, a même complètement remplacé su .
sudo (abréviation de substitute user do, en anglais : « exécuter en se substituant à l'utilisateur »)
permet à l'administrateur système d'accorder à certains utilisateurs (ou groupes d'utilisateurs) la
possibilité de lancer une commande en tant qu'administrateur, ou comme autre utilisateur, tout
en conservant une trace des commandes saisies et des arguments.
Le principe de sudo est simple, toute commande tapée derrière sudo est exécutée en tant
qu'utilisateur root (par défaut) si le droit vous en a été donné. Ceci est vérifié après vous avoir
demandé votre mot de passe pour une vérification complémentaire de votre identité.
sudo fonctionne commande par commande, c'est bien utile pour un besoin temporaire de
devenir root :
sudo userdel ahmed
Cela peut devenir lourd si vous en avez besoin pour plusieurs commandes d'affilée. Il existe
pour cela l'option -s qui fait en sorte que toutes les commandes suivantes soient lancées avec
sudo (dans un sous shell) .
60
Je teste mes acquis
Question 1. Quels sont l'UID, GID et Le répertoire personnel de l'utilisateur root ?
……………………………………………………………………………………………………..
Question 2. Quel est le fichier qui contient toutes les informations relatives aux utilisateurs
(login, mot de passe, …) ?
……………………………………………………………………………………………………..
Question 3. Dans les questions suivantes, on suppose que vous êtes connecté en tant que root.
a. Créer trois utilisateurs : user1, user2 et user3 .
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
b. Créer deux groupes stagiaires et formateurs
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
c. Ajoutez user1 et user2 au groupe stagiaires
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
d. Ajoutez user3 au groupe formateurs
……………………………………………………………………………………………………..
e. Créez un troisième groupe administration avec comme GID 850
……………………………………………………………………………………………………..
f. Créez l' utilisateur user4 dont le UID=712, GID=850 et le shell est bash
……………………………………………………………………………………………………..
g. Ajoutez les groupes stagiaires et formateurs en tant que groupes secondaires pour
l'utilisateur user4
……………………………………………………………………………………………………..
h. Donner la commande qui permet d'afficher les groupes auxquels appartient user4.
……………………………………………………………………………………………………..
Question 4. Quelle est la commande qui permet d'afficher les autres utilisateurs connectés sur
votre machine ?
……………………………………………………………………………………………………..
61
Question 5. Soient les commandes suivantes et leur résultat :
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/sh
brahim:x:1492:1515:brahim benali:/home/brahim:/bin/bash
anass:x:1789:2007:anass benahmed:/home/anass:/bin/bash
jellali:x:1164:1515:compte jellali:/home/jellali:/bin/bash
tarik:x:1515:1789::/home/tarik:/bin/bash
elle:x:1166:100::/home/elle:/bin/bash
untel:x:2007:1789:Somebody:/home/untel:/bin/bash
$ cat /etc/group
root:x:0:
bin:x:1:
audio:x:2
gr1:x:100:brahim,untel
gr2:x:1492:anass,jellali,tarik,elle
gr3:x:1515:elle,untel
gr4:x:1789:jellali,elle
gr5:x:2007:untel,jellali
62
chapitre 6
gestion des droits d'acces
Qu'est-ce que ces « droits d'accès » ? C'est un modèle qui décrit, pour chaque fichier ou chaque
répertoire, qui a le droit de lire, exécuter (ou traverser dans le cas d'un répertoire) ou modifier.
Sur votre Mac ou PC Windows personnel, ces considérations ne sont peut-être pas très
importantes si vous êtes le seul utilisateur. Mais c'est particulièrement important sous Unix, qui
est un système conçu pour être multi-utilisateurs.
1. Lire les droits
Chaque fichier a plusieurs propriétés associées : le propriétaire, le groupe propriétaire, la date de
dernière modification, et les droits d'accès. On peut examiner ces propriétés grâce à l'option
-l de ls. Dans cet exemple, nous voyons les permissions standard d'un répertoire et de deux
fichiers :
$ ls -l
total 205
drwxr-xr-x 2 stagiaire users 512 Jan 16 10:02 Dossier1
-rw-r--r-- 1 stagiaire users 72008 Oct 2 2013 coursExcel.pdf
-rw-r--r-- 1 stagiaire users 145905 Oct 2 2013 important.txt
Les permissions sont indiquées dans la colonne de gauche, suivant un format bien particulier :
Permissions
Comme nous le voyons sur l'image ci-dessus, le bloc de permissions se divise en quatre
éléments.
Type
Le premier caractère du bloc de permissions indique le type du fichier : - pour un fichier
normal, d pour un répertoire. On trouve également parfois l pour les liens symboliques, et
d'autres choses plus exotiques.
Droits du propriétaire
•r ou - : droit de lire (r pour read) le fichier (r pour oui, - pour non)
•w ou - : droit d'écrire (w pour write) dans le fichier
•x ou - : droit d'exécuter (x pour execute) le fichier.
Pour un répertoire, les choses sont un peu différentes. Le couple rx donne le droit d'examiner le
répertoire et son contenu. Le bit w donne le droit d'ajouter ou de supprimer des fichiers dans le
répertoire.
63
Droits du groupe
Comme les droits du propriétaire, mais s'applique aux gens qui sont dans le groupe propriétaire
Droits des autres
Comme les droits du propriétaire, mais s'applique aux gens qui sont ni le propriétaire, ni dans le
groupe propriétaire.
2. Modifier les droits
Lors de sa création, un fichier ou un répertoire dispose de droits par défaut. Utilisez la
commande chmod (change mode) pour modifier les droits sur un fichier ou un répertoire. Il
existe deux méthodes pour modifier ces droits : par la forme symbolique et par la base 8.
Seul le propriétaire d’un fichier peut en modifier les droits (plus l’administrateur
système). Le paramètre -R change les droits de manière récursive.
Par symboles
La syntaxe est la suivante :
chmod modifications fichier1 [fichier2...]
S’il faut modifier les droits de l’utilisateur, utilisez le caractère u, pour les droits du
groupe le caractère g, pour le reste du monde le caractère o et pour tous le caractère a.
Pour ajouter des droits, on utilise le caractère +, pour en retirer le caractère -, et pour
ne pas tenir compte des paramètres précédents le caractère =.
Enfin, le droit d’accès par lui-même : r, w ou x.
Vous pouvez séparer les modifications par des virgules et cumuler plusieurs droits dans une
même commande.
Exemple :
$ ls -l
total 0
-rw-r--r-- 1 stagiaire users 0 mar 21 22:03 fich1
-rw-r--r-- 1 stagiaire users 0 mar 21 22:03 fich2
-rw-r--r-- 1 stagiaire users 0 mar 21 22:03 fich3
$ chmod g+w fich1
$ ls -l fich1
-rw-rw-r-- 1 stagiaire users 0 mar 21 22:03 fich1
$ chmod u=rwx,g=x,o=rw fich2
$ ls -l fich2
-rwx--xrw- 1 stagiaire users 0 mar 21 22:03 fich2
$ chmod o-r fich3
$ ls -l fich3
-rw-r----- 1 stagiaire users 0 mar 21 22:03 fich3
64
Si vous voulez supprimer tous les droits, ne précisez rien après le signe = :
$chmod o= fich2
$ ls -l fich2
-rwx--x--- 1 stagiaire users 0 mar 21 22:03 fich2
Par base 8
Cette notation est un peu plus complexe. Elle se fonde sur le principe suivant : considérons un
bloc de permissions, rw-r--r--. Quand une lettre est présente, ça veut dire que l'accès est autorisé,
quand elle est absente (-), il est refusé. On peut traduire ceci de façon binaire :
r w - r - - r - -
1 1 0 1 0 0 1 0 0
Ce qui donne 110-100-100. 110 vaut 6 en décimal, 100 vaut 4 (voir le teableau ci-dessous), donc
la représentation numérique de rw-r--r-- est 644. Cette valeur peut être indiquée exactement
à chmod :
$ ls -l fichier1.txt
-rw------- 1 stagiaire users 42 Feb 5 12:08 fichier1.txt
$ chmod 644 fichier1.txt
$ ls -l fichier1.txt
-rw-r--r-- 1 stagiaire users 42 Jan 5 12:08 fichier1.txt
3. Umask
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. Le masque par défaut est 022, soit ----w--w-. Pour obtenir
cette valeur, tapez umask sans paramètre.
$ umask
0022
65
Lors de la création d'un fichier, le système va soustraire l'umask aux droits par défaut.
On a donc 666 - 022 = 644.
Vérifions en créant un fichier.
$ touch fich5
$ ls -l fich5
-rw-r--r-- 1 stagiaire users 0 mar 21 22:03 fich5
De même pour un répertoire, les droits par défaut seront 755 (=777-022)
Notez qu’appliquer un masque n’est pas soustraire, mais supprimer des droits de ceux par
défaut, droit par droit.
On peut définir le umask grâce à la commande umask.
# umask 077
66
4.2. Sticky
Ce droit spécial, traduit en "bit collant", a surtout un rôle important sur les répertoires.Il
réglemente le droit w sur le répertoire, en interdisant à un utilisateur quelconque de supprimer un
fichier dont il n'est pas le propriétaire .
Ce droit noté symboliquement t occupe par convention la place du droit x sur la catégorie
other de ce répertoire, mais bien entendu il ne supprime pas le droit d'accès x (s'il est accordé).
Justement, si ce droit x n'est pas accordé à la catégorie other, à la place de t c'est la lettre T
qui apparaîtra.
Sa valeur octale associée vaut 1000.
Pour positionner ce droit :
$ chmod +t repertoire
Exemple :
$ chmod u+t /tmp (ou $ chmod 1777 /tmp )
$ ls -ld /tmp
drwxrwxrwt 35 root root 77824 mar 21 22:30 /tmp
5. Changer de propriétaire et de groupe
Un fichier appartient à un utilisateur et à un groupe. Généralement le groupe dans lequel est
l'utilisateur. Dans l'exemple ci-dessus, stagiaire est l'utilisateur propriétaire et users le
groupe propriétaire.
Il est possible de changer le propriétaire et le groupe d’un fichier à l’aide des commandes
chown (change owner) et chgrp (change group). Le paramètre -R change la propriété de
manière récursive.
chown utilisateur fichier1 [fichier2...]
chgrp groupe fich1 [fich2...]
En précisant le nom d’utilisateur (ou de groupe), le système vérifie d’abord son
existence. Vous pouvez préciser un UID ou un GID, dans ce cas le système n’effectuera pas de
vérification.
Pour les deux commandes, les droits précédents et l’emplacement du fichier ne sont pas
modifiés. Il est possible de modifier en une seule commande à la fois le propriétaire et le
groupe.
chown utilisateur[:groupe] fich1 [fich2...]
Seul root a le droit de changer le propriétaire d’un fichier. Mais un utilisateur peut changer le
groupe d’un fichier s’il fait partie du nouveau groupe.
$ chgrp informatique fich1
$ ls -l fich1
-rwxr-xr-x 1 stagiaire informatique 0 mar 21 22:03 fich1
67
Je teste mes acquis
Question 1. Changez les droits d'un fichier fich1 pour que tous ceux de votre groupe puissent
écrire dedans.
……………………………………………………………………………………………………..
Question 2. Donnez en une seule ligne le droit d'exécution à tous les utilisateurs d'un fichier
script1.sh qui n'a jusqu'alors que des droits standards -rw-r—r--.
……………………………………………………………………………………………………..
Question 3. Le fichier nomod.txt a les droits suivants : -rwxr--r--. Modifiez-en les droits
en une ligne de commande de sorte que le propriétaire n'ait plus que le droit de lecture.
……………………………………………………………………………………………………..
Question 4. Modifier les droits du fichier portous (-rwxr--r--) de sorte que le groupe et les
autres utilisateurs aient les mêmes droits que le propriétaire.
……………………………………………………………………………………………………..
Question 5. Quelle option permet de modifier récursivement les droits d'un répertoire et des
fichiers qu'il contient ?
……………………………………………………………………………………………………..
Question 6. Supposons que les permissions de f1 sont -wxrwxrw-. Quelles sont-elles après
avoir taper la commande chmod ug-wx,u+r,o+x f1 ?
……………………………………………………………………………………………………..
Question 7. Supposons que les permissions de f2 sott -wxrwxrw-. Quelles sont-elles après
avoir taper la commande chmod 563 f2 ?
……………………………………………………………………………………………………..
Question 8. Transcrivez les commandes suivantes de la notation classique à la notation octale
ou vice-versa.
chmod u=rx,g=wx,o=r fich
……………………………………………………………………………………………………..
chmod uo+w,g-rx fich en sachant que les droits initiaux de fich sont r--r-x---
…………………………………………………………………………………………………….
chmod 653 fich en sachant que les droits initiaux de fich sont 711
……………………………………………………………………………………………………..
chmod u+x,g=w,o-r fich en sachant que les droits initiaux de fich sont r--r-x---
……………………………………………………………………………………………………..
Question 9. Tapez la commande umask, de manière à ce que les fichiers lors de leur création
aient par défaut les droits 640 (rw-r-----), et les répertoires 750 (rwxr-x---).
……………………………………………………………………………………………………..
Question 10. Comment peut-on changer le propriétaire du fichier fich2 pour qu'il devient
Mohamed ?
……………………………………………………………………………………………………..
68
chapitre 7
gestion des processus
1. Définition et caractéristiques
Un processus (en anglais, process) est un programme en cours d'exécution. Par exemple, chaque
fois que l'on lance la commande ls, un processus est créé durant l'exécution de la commande.
Un processus est identifié par un numéro unique que l'on appelle le PID (Process IDentifiant).
Un processus dispose d'un processus père que l'on appelle le PPID (Parent PID).
Au démarrage de l'ordinateur, le système charge le noyau Linux qui se charge de l'initialisation
du matériel et de la détection des périphériques. Ceci fait, il démarre ensuite le processus init
qui a comme particularité d'être le premier processus et de toujours utiliser le PID 1. Ce
processus démarre ensuite des processus noyaux, et les premiers processus systèmes.
Chaque processus a ainsi un père (sauf init), et peut être à son tour le père d'autres processus,
etc.
La commande pstree permet de visualiser l'arbre des processus. L'option -p permet de
visualiser les PID de chaque processus.
$ pstree -p
init(1)─┬─atd(2861)
├─avahi-daemon(2647)───avahi-daemon(2648)
├─cron(2873)
├─cupsd(2571)
├─dbus-daemon(2579)
├─dbus-daemon(3023)
├─dbus-launch(3022)
├─dcopserver(3054)
├─dhcdbd(2628)
├─dirmngr(3221)
├─events/0(4)
├─exim4(2739)
├─gconfd-2(3576)
├─gdm(2796)───gdm(2802)─┬─Xorg(2805)
│ └─startkde(2971)─┬─kwrapper(3063)
│ └─ssh-agent(3019)
├─getty(2902)
69
La signification des différentes colonnes est la suivante:
• UID nom de l'utilisateur qui a lancé le processus
• PID correspond au numéro du processus
• PPID correspond au numéro du processus parent
• C au facteur de priorité : plus la valeur est grande, plus le processus est prioritaire
• STIME correspond à l'heure de lancement du processus
• TTY correspond au nom du terminal
• TIME correspond à la durée de traitement du processus
• COMMAND correspond au nom du processus
Certains processus sont permanents (PPID=1), c'est à dire qu'ils sont lancés au démarrage du
système et arrêtés uniquement à l'arrêt du système. On appelle ces processus des démons.
Pour voir les processus d'un seul utilisateur, vous pouvez taper : ps -u nom_utilisateur
ps vous permet d'obtenir la liste des processus qui tournent au moment où vous lancez la
commande. Cette liste n'est pas actualisée en temps réel, contrairement à ce que fait top.
Lancée sans options, la commande top affiche une table typique des processus avec leur
utilisation. Cette table reste affichée et est mise à jour continuellement (toutes les 3 secondes par
défaut).
3. Commandes de gestion des processus
3.1. Changer la priorité d'un processus
Vous disposez de la commande nice pour modifier la priorité d'un processus. La syntaxe est la
suivante :
$ nice valeur commande
Plus le nombre est grand, plus la priorité est faible. Par exemple -2 est plus prioritaire que 0.
La fourchette de valeur dépend du système Unix. Sur Ubuntu, cette fourchette se situe dans
l'intervalle -20 (le plus prioritaire) à 19 (le moins prioritaire).
Exemple :
$ nice -5 xclock
Si aucun argument n'est fourni, nice affiche la priorité d'ordonnancement en cours, sinon, nice
exécute la commande désirée en ajustant la priorité d'ordonnancement.
Si aucun ajustement n'est précisé, la valeur de priorité de la commande est augmentée de 10.
La commande renice permet de changer la priorité d’un programme qui est déjà en exécution.
3.2. Arrière plan et 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 ».
Il existe un autre mode dans lequel le processus est dit en « Arrière plan ». Dans ce mode rien
n’empêche le shell d’attendre le message du processus terminé pour rendre la main : de ce fait
la commande une fois lancée, le shell peut autoriser la saisie d’une nouvelle commande
sans attendre la fin de l’exécution de la commande précédente. Pour cela il suffit de saisir,
après avoir tapé la commande, le ET Commercial « & ». Dans ce cas, le shell et la commande
lancée fonctionneront en parallèle.
En tapant une commande en tâche de fond, vous aurez à l'affichage :
$ xeyes &
[1] 4397
A la suite de la saisie de la commande suivie d'un &, le shell vous donne immédiatement la
main, et affiche le numéro du PID du processus lancé.
L'option &, bien qu'assez couramment utilisée, a ce défaut non négligeable : le processus reste
attaché à la console, ce qui veut dire que si la console est fermée ou que l'utilisateur se
déconnecte, le processus sera automatiquement arrêté.
70
Si on veut que le processus continue, il faut lancer la commande via nohup. Cela s'utilise
comme ceci :
$ nohup commande
En lançant une commande à partir du shell sans le & à la fin, et si celle-ci prend du temps à
vous rendre la main, vous pouvez faire en sorte qu'elle bascule en tâche de fond, pour que vous
repreniez la main.
$ xclock
Vous voulez basculer xclock en tâche de fond tapez, [Ctrl] Z, il va afficher :
^Z
[1]+ Stopped xclock
Tapez ensuite bg (pour background), vous voyez s'afficher :
[1]+ xclock &
ça y est votre processus xclock est en tâche de fond et le shell vous rend la main.
Pour savoir les processus qui tournent en arrière plan, il existe une commande qui liste
uniquement les processus qui tournent en fond au sein d'une même console : jobs.
$ jobs
[1]- Stopped xclock
[2]+ Stopped top
La commande fg renvoie un processus au premier plan.
$ fg
Si vous avez un seul processus listé dans les jobs, c'est ce processus qui sera remis au premier
plan.
Si vous avez plusieurs processus en arrière-plan, il faudra préciser lequel vous voulez récupérer.
Par exemple, voici comment reprendre le top qui était le job n° 2 :
$ fg 2
3.3. kill/killall
Les commandes kill et killall permettent d'envoyer un signal à un processus ; kill ne
comprend que les PID, killall quant à lui comprend le nom du processus.
Les options les plus fréquentes sont :
• -s : Indique quel signal s à envoyer au processus ; Le signal peut être identifié soit par
son nom (exemple : SIGTERM) soit par son numéro (exemple : 9) ; Cette option peut être
remplacée par le numéro du signal : -s 9 est équivalent à -9.
• -l : Affiche la liste des signaux connus.
Les signaux les plus courants sont :
Nom
Numéro Description
du SIGNAL
Ce signal est envoyé par le père à tous ses enfants lorsqu’il se
SIGHUP 1
termine.
Ce signal est équivalent au Ctrl-C et met fin à l'exécution d'un
SIGKINT 2
processus
SIGKILL 9 Signal ne pouvant être ignoré, force le processus à finir ’brutalement’.
Signal envoyé par défaut par la commande kill. Demande au
SIGTERM 15
processus de se terminer normalement.
SIGTSTP 18 Mets un processus en attente et, équivalent à Ctrl-Z
71
Voici quelques exemples d'utilisation :
• kill -15 1477 : Envoie le signal 15, ou TERM, au processus ayant le numéro 1477
ce qui a pour effet de terminer proprement le processus.
• kill -9 7014 : Envoie le signal 9, ou KILL, au processus ayant le numéro 7014 ce
qui a pour effet de tuer le processus.
• killall -TERM firefox-bin : Envoie le signal TERM, ou 15, au processus
firefox-bin ce qui a pour effet de le fermer.
4. Planification de tâches
Il est possible de planifier des tâches sur Linux afin que celles-ci s'exécutent de manières
répétitives ou différées. Pour cela deux daemons (daemon = processus fonctionnant en tâche de
fond) généralement, processus lié au système.) existent l'un cron qui est le daemon permettant
d'effectuer des tâches répétitives et le daemon atd destiné aux tâches différées. Chacun de ces
deux daemons possèdent une commande en premier plan : crontab pour cron et at pour atd.
4.1. at : exécuter une commande plus tard
Vous souhaitez qu'une commande soit exécutée plus tard ? Pas de problème ! Il est possible de
programmer l'exécution d'une commande avec at.
Avec at, le programme ne sera exécuté qu'une seule fois. Si vous voulez que l'exécution soit
répétée régulièrement, il faudra utiliser la crontab que nous verrons plus loin.
Exécuter une commande à une heure précise
La commande s'utilise en deux temps.
1. Vous indiquez à quel moment (quelle heure, quel jour) vous désirez que la commande
soit exécutée.
2. Vous tapez ensuite la commande que vous voulez voir exécutée à l'heure que vous venez
d'indiquer.
Il faut donc d'abord indiquer à quelle heure vous voulez exécuter votre commande, sous la
forme HH:MM :
$ at 14:21
L'exécution des commandes est demandée à 14 h 21 aujourd'hui. Si vous tapez cela dans votre
console, vous devriez voir ceci s'afficher :
$ at 14:21
warning: commands will be executed using /bin/sh
at>
at comprend que vous voulez exécuter des commandes à 14 h 21 et vous demande lesquelles.
C'est pour cela qu'un prompt est affiché : on vous demande de taper les commandes que vous
voulez exécuter à cette heure-là.
Pour cet exemple, nous allons demander de créer un fichier vide à 14 h 21 :
$ at 14:21
warning: commands will be executed using /bin/sh
at> touch fichier.txt
at> <EOT>
job 5 at Wed Mar 2 14:17:00 2016
Après avoir écrit la commande touch, at affiche à nouveau un prompt et vous demande une
autre commande. Vous pouvez indiquer une autre commande à exécuter à la même heure… ou
bien arrêter là. Dans ce cas, tapez Ctrl + D (comme si vous cherchiez à sortir d'un terminal).
Le symbole <EOT> devrait alors s'afficher, et at s'arrêtera.
at affiche ensuite le numéro associé à cette tâche (à ce « job », comme il dit) et l'heure à
laquelle il sera exécuté.
Attendez 14 h 21, et vous verrez que le fichier sera créé.
72
Et si je veux exécuter la commande demain à 14 h 21 et non pas aujourd'hui ?
$ at 14:21 tomorrow
tomorrow signifie « demain ».
Et si je veux exécuter la commande le 15 novembre à 14 h 21 ?
$ at 14:17 11/15/16
La date est au format américain, les numéros du jour et du mois sont donc inversés : 11/15/16.
11 correspond au mois (novembre) et 15 au numéro du jour !
Exécuter une commande après un certain délai
Il est possible d'exécuter une commande dans 5 minutes, 2 heures ou 3 jours sans avoir à écrire
la date.
Par exemple, pour exécuter la commande dans 5 minutes :
$ at now +5 minutes
… ce qui signifie « Dans maintenant (now) + 5 minutes ». Les mots-clés utilisables sont les
suivants :
• minutes ;
• hours (heures) ;
• days (jours) ;
• weeks (semaines) ;
• months (mois) ;
• years (années).
Un autre exemple :
$ at now +2 weeks
… exécutera les commandes dans deux semaines.
atq et atrm : lister et supprimer les jobs en attente
Chaque fois qu'une commande est « enregistrée », at nous indique un numéro de job ainsi que
l'heure à laquelle il sera exécuté.
Il est possible d'avoir la liste des jobs en attente avec la commande atq :
$ atq
14 Wed Mar 2 14:44:00 2016 a stagiaire
13 Wed Mar 2 14:42:00 2016 a stagiaire
Si vous souhaitez supprimer le job n° 14, utilisez atrm :
$ atrm 14
4.2. crontab : exécuter une commande régulièrement
La « crontab » constitue un incontournable sous Linux : cet outil nous permet de programmer
l'exécution régulière d'un programme.
Contrairement à at qui n'exécutera le programme qu'une seule fois, crontab permet de faire
en sorte que l'exécution soit répétée : toutes les heures, toutes les minutes, tous les jours, tous les
trois jours, etc.
Un peu de configuration…
Avant toute chose, nous devons modifier notre configuration (notre fichier .bashrc) pour
demander à ce que nano soit l'éditeur par défaut. En général, c'est le programme vi qui fait
office d'éditeur par défaut. C'est un bon éditeur de texte, mais bien plus complexe que nano.
En attendant, rajoutez la ligne suivante à la fin de votre fichier .bashrc :
export EDITOR=nano
Cela aura pour effet d'écrire cette ligne à la fin de votre fichier .bashrc situé dans votre
répertoire personnel.
73
Fermez ensuite votre console et rouvrez-la pour que cette nouvelle configuration soit bien prise
en compte.
Cette petite configuration étant faite, attaquons les choses sérieuses.
La « crontab », qu'est-ce que c'est ?
crontab est en fait une commande qui permet de lire et de modifier un fichier appelé la
« crontab ».
Ce fichier contient la liste des programmes que vous souhaitez exécuter régulièrement, et à
quelle heure vous souhaitez qu'ils soient exécutés.
crontab permet donc de changer la liste des programmes régulièrement exécutés. C'est
toutefois le programme cron qui se charge d'exécuter ces programmes aux heures demandées.
Ne confondez donc pas crontab et cron : le premier permet de modifier la liste des
programmes à exécuter, le second les exécute.
Comment utilise-t-on crontab ?
Il y a trois paramètres différents à connaître, pas plus :
• -e : modifier la crontab ;
• -l : afficher la crontab actuelle ;
• -r : supprimer votre crontab. Attention, la suppression est immédiate et sans
confirmation !
Commençons par afficher la crontab actuelle :
$ crontab -l
no crontab for stagiaire
Normalement, vous n'avez pas encore créé de crontab. Vous noterez qu'il y a une crontab
par utilisateur. Là j'édite la crontab de stagiaire car je suis loggé avec l'utilisateur
stagiaire, mais root a aussi sa propre crontab. La preuve :
$ sudo crontab -l
no crontab for root
Bien, intéressons-nous à la modification de la crontab. Tapez :
$ crontab -e
Si vous avez bien configuré votre .bashrc tout à l'heure (et que vous avez relancé votre
console), cela devrait ouvrir le programme nano que vous connaissez.
Si par hasard vous n'avez pas fait quelque chose correctement, c'est le programme vi qui se
lancera. Comme vous ne le connaissez pas encore, tapez :q puis Entrée pour sortir. Vérifiez à
nouveau votre configuration du .bashrc et n'oubliez pas de fermer puis de rouvrir votre
console.
Modifier la crontab
Pour le moment, si votre crontab est vide vous devriez voir uniquement ceci :
[ Lecture de 1 ligne ]
^G Aide ^O Écrire ^R Lire fich.^Y Page préc.^K Couper ^C Po
s. cur.
^X Quitter ^J Justifier ^W Chercher ^V Page suiv.^U Coller ^T Or
thograp.
74
Les champs
Le fichier ne contient qu'une seule ligne :
# m h dom mon dow command
Comme cette ligne est précédée d'un #, il s'agit d'un commentaire (qui sera donc ignoré).
Cette ligne vous donne quelques indications sur la syntaxe du fichier :
• m : minutes (0 - 59) ;
• h : heures (0 - 23) ;
• dom (day of month) : jour du mois (1 - 31) ;
• mon (month) : mois (1 - 12) ;
• dow (day of week) : jour de la semaine (0 - 6, 0 étant le dimanche) ;
• command : c'est la commande à exécuter.
Chaque ligne du fichier correspond à une commande que l'on veut voir exécutée régulièrement.
Vous trouverez en figure suivante un schéma qui résume la syntaxe d'une ligne.
En clair, vous devez d'abord indiquer à quel moment vous voulez que la commande soit
exécutée, puis ensuite écrire à la fin la commande à exécuter.
C'est un peu comme un tableau. Chaque champ est séparé par un espace.
Chaque « X » sur le schéma peut être remplacé soit par un nombre, soit par une étoile qui
signifie « tous les nombres sont valables ».
Voyons quelques exemples :
Imaginons que je veuille exécuter une commande tous les jours à 14 h 49. Je vais écrire ceci :
49 14 * * * touch /home/stagiaire/fich.txt
Seules les deux premières valeurs sont précisées : les minutes et les heures. Chaque fois qu'il est
14 h 49, la commande indiquée à la fin sera exécutée.
Essayez d'enregistrer et de quitter nano. Vous verrez que la crontab vous dit qu'elle
« installe » les changements (elle les prend en compte, en quelque sorte) :
crontab: installing new crontab
stagiaire@stagiairePC:~$
Désormais, fich.txt sera créé dans mon répertoire personnel tous les jours à 14 h 49 (s'il
n'existe pas déjà).
Revenez dans la crontab, nous allons voir d'autres exemples (tableau suivante).
Crontab Signification
49 * * * * commande Toutes les heures à 49 minutes exactement.> & Donc à 00 h 49,
01 h 49, 02 h 49, etc.
0 0 * * 1 commande Tous les lundis à minuit (dans la nuit de dimanche à lundi).
0 4 1 * * commande Tous les premiers du mois à 4 h du matin.
75
Crontab Signification
0 4 * 12 * commande Tous les jours du mois de décembre à 4 h du matin.
0 * 4 12 * commande Toutes les heures les 4 décembre.
* * * * * commande Toutes les minutes !
Rediriger la sortie
Pour le moment, nous avons exécuté notre commande très simplement dans la crontab :
47 15 * * * touch /home/stagiaire/fich.txt
Toutefois, il faut savoir que si la commande renvoie une information ou une erreur, vous ne la
verrez pas apparaître dans la console. Normal : ce n'est pas vous qui exécutez la commande,
mais le programme cron.
Que se passe-t-il alors si la commande renvoie un message ? En fait, le résultat de la commande
vous est envoyé par e-mail. Chaque utilisateur possède sa propre boîte e-mail sur les machines
de type Unix, mais je ne vais pas m'attarder là-dessus. Nous allons plutôt voir comment
rediriger le résultat.
Tenez : rediriger une sortie, vous savez faire ça, non ?
47 15 * * * touch /home/stagiaire/fich.txt >> /home/stagiaire/cron.log
Tous les messages seront désormais ajoutés à la fin de cron.log. Tous ? Non, on oublie d'y
rediriger aussi les erreurs !
47 15 * * * touch /home/stagiaire/fich.txt >> /home/stagiaire/cron.log 2>&1
Voilà, c'est mieux.
Cette fois, tout sera envoyé dans cron.log : les messages et les erreurs.
76
Je teste mes acquis
Question 1.
Sur un système Unix, on donne l'extrait suivant de la commande ps -ef :
UID PID PPID C STIME TTY TIME CMD
root 4023 2 0 08:36 ? 00:00:00 [kworker/u8:0]
root 4470 2 0 09:08 ? 00:00:00 [kworker/0:0]
root 4488 2 0 09:08 ? 00:00:00 [kworker/u8:1]
abmares 4584 2921 0 09:09 ? 00:00:01 gnome-terminal
abmares 4593 4584 0 09:09 ? 00:00:00 gnome-pty-helper
abmares 4594 4584 0 09:09 pts/2 00:00:00 bash
root 4756 2 0 09:13 ? 00:00:00 [kworker/0:2]
abmares 4765 4584 0 09:13 pts/5 00:00:00 bash
abmares 4834 4765 0 09:14 pts/5 00:00:00 ps -ef
……………………………………………………………………………………………………..
c. Donner une ligne de commande qui affiche les informations du processus gnome-pty-
helper sans lister tous les autres processus.
……………………………………………………………………………………………………..
d. Donner la ligne de commande qui affiche uniquement les processus lancé par l'utilisateur
abmares
……………………………………………………………………………………………………..
Question 2. Donner deux commandes pour reprendre l'exécution d'une instruction interrompue
par un CTRL-Z.
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
Question 3. Mettre en place un script qui permet de planifier le nettoyage de /tmp tous les soirs
à 3h le matin..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
77
chapitre 8
gestion des disques
1. Disques, partitions et systèmes de fichiers
1.1. Disques
Le disque est un dispositif physique (disque dur, carte SD, clé USB , CD-ROM/DVD-ROM,
disquette…) dans lequel on peut emmagasiner des données informatiques. C'est un matériel qui
est interne (dans la tour) ou externe à l'ordinateur (relié à la tour par un câble aisément
déclenchable et déplaçable).
Dans Ubuntu, un disque est désigné par l'appellation " sdX". Peu importe le type de disque que
vous branchez à votre ordinateur (disque dur interne, disque SSD, disque dur externe, clé …),
tous vos disques sont nommés "sdX".
Dans la dénomination sdX, la lettre X représente la nappe et la position sur laquelle est branché
physiquement le disque :
• "a" pour le maître de la nappe primaire ou l'ID0 du connecteur primaire
• "b" pour l'esclave de la nappe primaire ou l'ID1 du connecteur primaire
• "c" pour le maître de la nappe secondaire ou l'ID0 du connecteur secondaire
• "d" pour l'esclave de la nappe secondaire ou l'ID1 du connecteur secondaire
1.2. Partitions
Comme les partitions sont une partie d'un disque dur, elles sont nommées comme leur disque
dur suivies d'un suffixe numérique représentant leur position dans le disque dur. Par exemple,
sda1 est la première partition du disque sda ; sda2 est la seconde partition du disque sda ;
sdb1 est la première partition du disque sdb ; etc.
Notons cependant une chose : sous Linux, peu importe le nombre de partitions existant dans les
disques durs, les noms sdX1 à sdX4 pour chacun des disques durs sont réservés aux partitions
primaires, dont l'éventuelle étendue, et les noms sdX5 et suivants sont réservés aux lecteurs
logiques. Par exemple, sda5 représente le premier lecteur logique de la partition étendue du
disque dur sda, et ce, même si ce disque est divisé en une partition primaire et une partition
étendue qui contient un lecteur logique.
Quant à /dev/, il désigne un répertoire sous Linux qui est utilisé afin de communiquer avec ces
partitions. Ainsi, /dev/sda1 est un fichier qui permet d'interagir avec le contenu de la partition
sda1.
1.3. Systèmes de fichiers sous Linux
Linux supporte un grand nombre de systèmes de fichiers. Voici quelques exemples :
• ext2 : Le « second extended filesystem » ext2 est considéré comme le système de fichiers
historique de Linux . Prévu dès le début pour supporter les rajouts de fonctionnalités, il
continue depuis 1993 à être utilisé et amélioré. Ext2 n’est pas journalisé.
Bien que disposant d’un successeur (ext3), il est toujours utilisé voire conseillé dans certains
cas. Il est rapide et nécessite moins d’écritures que les autres, donc il occasionne moins d’usure
des supports de stockage, notamment les disques SSD, les clés USB ou les cartes
mémoire. Ces supports peuvent parfois ne supporter qu’un nombre restreint de cycles de
lecture/écriture...
• ext3 : Le « third extended filesystem » ext3 est le successeur de ext2 depuis 1999. ext3
correspond a ext2 plus le journal, qui a l'avantage de consigner tout ce que fait le système, et qui
en cas de crash lui permet de démarrer plus rapidement sans erreurs. Il est possible d’utiliser
un système de fichiers ext3 comme étant ext2, avec les mêmes commandes, les mêmes
manipulations. Il est possible de transformer en quelques secondes un système ext2 en ext3,
78
et vice versa. C’est l’un des systèmes de fichiers de choix pour Linux, et le plus utilisé pour sa
souplesse.
• ext4 est le successeur du système de fichiers ext3. Il présente de nombreux avantages et
optimisations par rapport à l'ancienne version, tout en assurant une rétro-compatibilité. Il est
cependant considéré par ses propres concepteurs comme une solution intermédiaire en attendant
le vrai système de nouvelle génération que sera Btrfs
Ext4 est une évolution du système de fichier ext3, qui est actuellement le système de fichier le
plus utilisé sous Linux.
• reiserfs : reiserfs a été le premier système de fichiers intégré à Linux, avant même
ext3. Sa force réside, outre dans son journal, dans l’organisation indexée des entrées des
répertoires et la manipulation des fichiers de petite taille. Ses performances sont exceptionnelles
en présence de milliers de fichiers, de faible à moyen volume. Il est redimensionnable à chaud.
Il devient plus lent sur des gros fichiers.
reiserfs est moins utilisé malgré ses fortes qualités pour diverses raisons dont la
principale est l’impossibilité de convertir un système de fichiers ext2/ext3 en reiserfs et
vice versa, et ce à cause de la forte base de machines installées en ext2/ext3.
• vfat : vfat (virtual file allocation table) est un terme générique regroupant les diverses
versions de FAT supportant les noms de fichiers longs (255 caractères) sous Windows.
Ces systèmes de fichiers sont conservés et continuent d’être utilisés pour des raisons à la
fois historiques et pratiques. La plupart des supports amovibles, disques externes, clefs
USB et lecteurs MP3 utilisent un système de fichiers de ce type.
2. Manipuler une partition
2.1. L’outil fdisk
Les outils fdisk, cfdisk, sfdisk ou encore parted permettent de manipuler les
partitions, sans compter les outils graphiques disponibles durant l’installation ou dans les
panneaux de configuration.
• fdisk est le plus ancien et le plus utilisé des outils de partitionnement. Il n’a aucun rapport
avec le fdisk de Microsoft. Il est à base de menus et raccourcis textuels.
• cfdisk est un peu plus « visuel » et s’utilise avec les flèches directionnelles. Il permet les
mêmes opérations que fdisk mais de manière plus conviviale.
• sfdisk fonctionne en interactif ou non, est assez compliqué mais plus précis.
• parted permet des opérations très avancées sur les partitions comme par exemple leur
redimensionnement. Il est soit interactif (c’est un interpréteur de commandes) soit scriptable. Il
existe des interfaces graphiques comme gparted.
C’est l’outil fdisk, à la fois le plus ancien et le plus standard, qui est généralement utilisé par
les administrateurs et les ingénieurs système. fdisk se lance en tant que root.
fdisk [-l] [disque]
Chaque paramètre est optionnel. Lancé tel quel fdisk se place sur le premier disque du
système. Le paramètre -l permet de lister les partitions du disque donné, ou de tous les disques.
# fdisk -l /dev/sda
Disk /dev/sda: 149.1 GiB, 160041885696 bytes, 312581808 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3b634018
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 136718844 136716797 65.2G 83 Linux
/dev/sda2 136720382 312580095 175859714 83.9G 5 Extended
/dev/sda5 136720384 312580095 175859712 83.9G 83 Linux
79
Pour créer ou supprimer des partitions lancez fdisk avec le disque en argument.
# fdisk /dev/sda
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
80
Une fois choisie la partition à examiner, il faudra la démonter :
Il faut impérativement que votre partition soit démontée, c'est-à-dire non accessible.
Exemple si la partition est /dev/sda1 :
sudo umount /dev/sda1
On peut ensuite lancer la vérification :
sudo fsck /dev/sda1
Si des corrections doivent être effectuées, fsck vous demandera de les confirmer.
3. Accès aux périphériques
3.1. Les commandes mount et umount
Pour accéder à un périphérique sous Linux (disque dur externe, clé USB, CD-ROM/DVD-
ROM, ...) on doit le monter. Le terme monter signifie que nous allons ajouter un disque à notre
arborescence.
Concrètement, nous allons définir un répertoire, appelé point de montage, qui va pointer vers la
ressource voulue.
Par convention, les points de montage sont souvents situés dans le répertoire /media
(anciennement on utilisait /mnt) .
La commande mount va permettre de monter un périphérique. Si l'on utilise la commande
mount sans paramètres, on obtiendra la liste des périphériques déjà montés.
Syntaxe :
mount -t typefichiersysteme -o options périphérique point_de_montage
Exemple :
# mount -t vfat /dev/sdb1 /media/usb
L'option -t renseigne le système de fichier utilisé. On peut mettre auto pour que mount
essaye de trouver le système de fichier lui-même.
Pour connaître tous les systèmes de fichier supportés par votre noyau, consultez le fichier
/proc/filesystems
Il est possible de passer plus d'options grâce à l'argument -o :
Option Signification
auto/noauto
Le système de fichiers est automatiquement monté/ne peut être monté
que explicitement (voir fstab).
ro/rw Montage en lecture seule ou lecture et écriture.
user/nouser
N’importe quel utilisateur peut monter le système de fichiers / seul
root a le droit de monter le système de fichiers (voir fstab)
nom d'utilisateur Autorise un utilisateur à monter et démonter un périphérique
... ...
Une fois que l'on a fini d'accéder au matériel, il faut démonter celui-ci. La commande umount
permet démonter un périphérique.
Syntaxe :
umount point_de_montage
3.2. Le fichier /etc/fstab
Nous avons vu comment utiliser monter des systèmes de fichiers à l'aide de la commande
mount mais il est évident qu'il serait fastidieux de recourir systématiquement à cette commande
pour monter les systèmes de fichiers utilisés couramment.
Le fichier /etc/fstab, contient des lignes décrivant les systèmes de fichiers habituellement
montés, leurs répertoires, et leurs options. Ce fichier est utilisé dans trois buts :
81
1. Le montage automatique des systèmes de fichiers couramment utilisés. La commande mount
-a [-t type] (généralement exécutée dans un script de démarrage) monte tous les systèmes
de fichiers indiqués dans fstab (ou uniquement ceux du type indiqué), à l'exception de ceux
dont la ligne contient le mot-clé ``noauto''.
2. La simplification du montage des systèmes de fichiers. Lorsque l'on monte un système de
fichiers mentionné dans la fstab, il suffit d'indiquer le point de montage, ou le périphérique
(exemple : mount /media/cdrom0 pour monter le CD-ROM).
3. La ``démocratisation du droit de montage des systèmes de fichiers''. Normalement, seul le
Super-Utilisateur peut monter des systèmes de fichiers. Néanmoins, si la ligne de la fstab
contient l'option user, n'importe quel utilisateur peut monter le système de fichiers
correspondant.
Chaque ligne du fichier fstab représente un périphérique à monter. Les lignes commençant par
le caractère dièse (#) sont des commentaires et sont ignorées.
Voici un exemple de fichier /etc/fstab :
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# /dev/sda5 racine du système de fichiers
UUID=a69d9182-f4c7-4276-b35d-7d5f9bd50a57 / ext4 errors=remount-ro 0 1
# /dev/sda8 swap
UUID=a3e02ccd-54ed-4172-9830-23fea1ffe5ec swap swap sw 0 0
Chaque ligne du fichier /etc/fstab est composée de six colonnes que l'on nomme champs.
Ces six champs sont, dans l'ordre:
<file system> <mount point> <type> <options> <dump> <pass>
<file system>
Ce champ permet d'indiquer le volume à monter, pour les partitions on notera deux types de
notation:
Nom de la partition
Historiquement Ubuntu, et linux en général, nomment dans le dossier /dev les disques avec des
lettres:
• sda pour le premier disque
• sdb pour le deuxième disque
Et nomment les partitions de chaque disque avec des chiffres:
• sda1 pour la première partition du premier disque
• sdb3 pour la troisième partition du deuxième disque
Identificateur Unique: UUID
Depuis quelques années, il est possible et vivement recommandé d'utiliser l'identifiant unique de
partition UUID.
Pour connaître l’UUID, le plus simple est en ligne de commandes, mais il existe aussi des
méthodes graphiques.
La commande blkid liste des UUIDs, les Labels et Types de toutes les partitions montées.
82
sudo blkid
vous renvoie quelque chose comme :
/dev/sda1: UUID="2c91401f-ccda-4c86-b20d-8fbc8f0a5213" TYPE="ext4"
PARTUUID="3b634018-01"
/dev/sda5: UUID="45c251ec-a6f1-4e17-93da-a02c04079e91" TYPE="ext4"
PARTUUID="3b634018-05"
Ou alors,
ls -l /dev/disk/by-uuid
vous permet de connaître les droits d'accès, le propriétaire, la date et l'heure de création et, enfin,
l'UUID.
<mount point>
La deuxième colonne indique à mount le point de mountage qui sera utilisé pour accéder au
système de fichiers de la partition.
<type>
La troisième colonne indique le type de système de fichiers utilisé par le volume (ext4, ext3 ou
ntfs par exemple).
<options>
La quatrième colonne donne les options à utiliser pour le mountage. C’est les mêmes options de
l’argument -o de mount.
<dump>
La cinquième colonne prend la valeur 1 pour les partitions visées par une sauvegarde au moyen
de l'utilitaire dump ou 0 pour les autres.
<pass>
La sixième colonne concerne l'ordre de vérification des fichiers par l'outil fsck au démarrage
de l'ordinateur (boot).
Elle prend la valeur :
• 1 pour la partitions racine (/),
• 2 pour les autres partitions Unix ou
• 0 si la partition ne doit pas être vérifiée par fsck (le SWAP et les partitions Windows
par exemple).
4. Occupation disque
4.1. La commande df
La commande df (disk free) permet d’obtenir des statistiques d’occupation de chaque
système de fichiers monté. Sans argument, df fournit des informations sur tous les systèmes
de fichiers. Vous pouvez passer comme argument un périphérique monté ou un point de
montage. Si vous passez un répertoire quelconque, df donne des informations sur le système de
fichiers qui contient ce répertoire.
# df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 2984956 0 2984956 0% /dev
tmpfs 600676 8976 591700 2% /run
/dev/sda1 67153780 15070308 48649172 24% /
tmpfs 3003380 708 3002672 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 3003380 0 3003380 0% /sys/fs/cgroup
cgmfs 100 0 100 0% /run/cgmanager/fs
tmpfs 600676 76 600600 1% /run/user/1000
/dev/sda5 86418816 39260680 42745260 48% /media/abmares/45c...
Le résultat est explicite. L’unité par défaut est le kilo-octet . Vous pouvez modifier les
paramètres pour demander le résultat en Mo (-m) .
83
Pour que ce soit plus lisible, rajoutez le paramètre -h (Human readable).
# df -h
Filesystem Size Used Avail Use% Mounted on
udev 2.9G 0 2.9G 0% /dev
tmpfs 587M 8.8M 578M 2% /run
/dev/sda1 65G 15G 47G 24% /
tmpfs 2.9G 712K 2.9G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 2.9G 0 2.9G 0% /sys/fs/cgroup
cgmfs 100K 0 100K 0% /run/cgmanager/fs
tmpfs 587M 84K 587M 1% /run/user/1000
/dev/sda5 83G 38G 41G 48% /media/abmares/45c251ec-a6f1-...
4.2. La commande du
La commande du (disk usage) fournit des informations sur l’espace occupé par une
arborescence (un répertoire et tout son contenu). Si rien n’est précisé, c’est le répertoire courant
qui est utilisé. Les paramètres -k (Ko) et -m (Mo) déterminent l’unité. La taille est fournie pour
chaque élément (voire arrondie). La taille totale de l’arborescence est sur la dernière ligne.
# du MonDossier
96232 MonDossier/dos4
46052 MonDossier/dos1
123160 MonDossier/dos5
60112 MonDossier/dos2
144404 MonDossier/dos3
469964 MonDossier
Pour n’avoir que le total et pas tous les détails, utilisez le -s. Pour que ce soit plus lisible,
rajoutez le paramètre -h (Human readable).
# du -h -s MonDossier
459M MonDossier
84
Je teste mes acquis
Question 1. Quel est le nom du fichier qui contient la liste des systèmes de fichiers qui sont
montés automatiquement à chaque démarrage ?
……………………………………………………………………………………………………..
Question 2. Comment afficher la taille du répertoire personnel et de tous les sous répertoires
récursifs qu’il contient ?
……………………………………………………………………………………………………..
85
chapitre 9
installation des paquets
1. Des paquets et des dépôts
Sous GNU/Linux, nul besoin de parcourir le web pour trouver de-ci de-là les logiciels qui nous
intéressent : le travail est réalisé par les distributions qui regroupent une quantité astronomique
de logiciels (appelés paquets ou paquetage) sur leur serveurs respectifs (les dépôts). Ainsi, un
utilisateur Ubuntu 16.10 aura, par défaut, accès aux paquets correspondants à cette version sur le
dépôt Ubuntu 16.10. Chaque version d’une distribution propose un dépôt différent contenant
généralement des logiciels actualisés. Tous les paquets d’un dépôt sont normalement stables et
compatibles entre eux. Pour être plus précis, les distributions proposent d’ordinaire plusieurs
dépôts pour une même version, regroupant chacun des logiciels différents. Ubuntu a, par
exemple, un dépôt principal maintenu directement par les développeurs, un dépôt maintenu par
la communauté, un dépôt pour les logiciels propriétaires et un dépôt pour les logiciels com-
portant des restrictions de licences. Il est aussi possible de rajouter manuellement des dépôts
non officiels.
Pour obtenir des paquets, il faut utiliser des outils (graphiques ou en ligne de commande)
présents sur chacune des distributions. Ce sont ces outils que nous allons décrire ici. Ils
permettent de rechercher un paquet, de le télécharger et de l’installer dans la foulée, très
simplement et très rapidement. Il sera également possible de réaliser différentes tâches annexes,
comme mettre à jour ou désinstaller le paquet.
86
Il est bien entendu également possible d’installer n’importe quel logiciel en ligne de commande
directement à partir de son code source.
3. L’installation sous Ubuntu
3.1. Interface graphique
Synaptic est le gestionnaire de paquets historique des distributions –comme Ubuntu –
construites sur Debian. Cependant, depuis 2009, Ubuntu a fait le choix de développer son
propre gestionnaire, appelé la Logithèque Ubuntu ou Ubuntu Software center en anglais.
La Logithèque Ubuntu présente un catalogue de plusieurs milliers d'applications vous
permettant d'enrichir en un simple clic votre installation d'Ubuntu avec de nouveaux logiciels.
Vous pouvez trouver des applications libres, non libres, gratuites ou payantes.
Chaque application dispose d'un descriptif, d'une illustration et d'informations complémentaires
telles que son poids une fois installés, les évaluations des utilisateurs. Trouver une application
est très simple grâce au système de classement par catégories ou encore à la barre de recherche.
La logithèque vous permet aussi de voir quels sont les logiciels installés sur votre ordinateur et
de supprimer ceux dont vous n'avez plus besoin.
Cependant, depuis la version 16.04 d'Ubuntu, la logithèque Ubuntu est remplacée par le gnome
software center, sensiblement proche. Ce dernier permet également de mettre à jour les
applications ainsi que le système d'exploitation.
87
De plus un système complémentaire a été mis au point afin de gérer les dépendances entre les
différents paquetages et de permettre de les mettre à jour par simple téléchargement: il s'agit du
système apt (Advanced Packaging Tool). Ce système fonctionne à partir d'une liste de sources
(emplacements auxquels des paquetages sont disponibles) présente dans le fichier
/etc/apt/sources.list.
ou bien après avoir récupéré manuellement un paquetage spécifique (avec l'extension .deb)
dpkg --install nom_du_package.deb
ou
dpkg -i nom_du_package
Cette commande supprime le paquetage mais conserve les fichiers de configuration. Pour
supprimer également les fichiers de configuration il suffit d'utiliser la commande suivante :
apt-get remove --purge nom_du_package
➔ Mise à jour de la liste: Pour mettre à jour la liste des paquetages il faut taper la commande :
apt-get update
➔ Miseà jour des packages: La mise à jour des paquetages eux-mêmes se fait grâce à la
commande suivante :
apt-get upgrade
Il est conseillé de lancer cette commande avec le commutateur -u afin de connaître la liste
exacte des paquetages qui vont être mis à jour :
apt-get -u upgrade
La commande suivant permet également de mettre à jour les paquetages en préservant mieux les
dépendances afin de conserver un système plus cohérent :
apt-get dist-upgrade
➔ Nettoyage: à chaque installation d'un logiciel, le système APT charge le paquetage concerné
et le stocke dans un référentiel local. Au bout d'un certain temps la liste des paquetages
conservés peut devenir importante et gourmande en espace disque, c'est la raison pour laquelle il
peut être utile de faire le ménage parmi ces fichiers. La commande clean permet de supprimer
88
tous les paquetages n'étant pas verrouillé, ce qui signifie que le paquetage devra être à nouveau
téléchargé s'il doit être reconfiguré :
apt-get clean
La commande autoclean permet de supprimer tous les paquetages n'étant plus disponibles en
téléchargement (et donc a priori obsolètes) :
apt-get autoclean
89
Sur la partie gauche, se trouve un classement des paquets par catégories (Internet, Éducation,
Programmation...), ainsi qu’une barre de recherche. Il suffit alors de cocher les logiciels à
installer (ou décocher ceux à désinstaller) puis de cliquer sur le bouton Appliquer en bas à
droite. Différents filtres sont disponibles pour trier les résultats (par licences, présence ou non
d’une interface graphique, paquet pour développeurs ou utilisateurs finaux, etc). Lorsqu’un
logiciel est sélectionné dans la liste, le panneau inférieur affiche une description, le lien vers le
site web du projet, la licence ou encore, la taille du paquet à télécharger. Une barre de
progression apparaît en bas à gauche pour informer des différentes étapeset de l’avancement de
l’installation. Une fois le paquet installé, une fenêtre s’ouvre invitant à lancer le nouveau
logiciel.
4.2. Ligne de commande
4.2.1. L’outil YUM
Sous Fedora, ce n’est pas apt-get, mais yum qui fait office de gestionnaire de paquets en ligne
de commande. Son fonctionnement est simple. Pour installer un logiciel, il faut saisir dans un
terminal en tant qu’administrateur, la commande suivante :
# yum install monpaquet
La liste des dépendances à installer s’affiche et une confirmation est demandée (taper o pour
oui, n pour non). Notez que la ligne de commande permet tout à fait d’installer plusieurs
paquets. Avec l’interface graphique, il fallait cocher plusieurs lignes, ici, il suffit simplement
d’ajouter les différents noms à la suite. Ainsi, pour installer le traitement de texte abiword et le
tableur gnumeric, deux applications de bureautique légères, il suffit de saisir :
# yum install abiword gnumeric
La désinstallation se fait également très facilement ; ici, pour supprimer abiword fraîchement
installé :
# yum remove abiword
4.2.2. L’outil RPM
RPM (Red Hat Package Manager) est, comme son nom l'indique (en anglais), un outil de
gestion de paquetages pour Linux. Il permet d'installer des applications, ainsi que les supprimer
facilement.
Grâce à une commande simple, les fichiers s'installent directement dans les "bons" répertoires.
RPM a quatre utilités supplémentaires :
Voici les commandes des 5 fonctionnalités principales :
➔ Installation: pour installer le paquetage mpg123-0_59p-1_i386.rpm il suffira de taper :
rpm -ivh mpg123-0_59p-1_i386.rpm
90
➔ Interrogation : Il existe plusieurs commandes visant à interroger un ou plusieurs
paquetages selon divers critères. Les voici :
-Pour connaître des détails sur un paquetage particulier :
rpm -q mpg123-0_59p-1_i386.rpm
-Pour interroger tous les paquetages existants :
rpm -qa
-Pour interroger les paquetages contenant un fichier particulier :
rpm -f NomDuFichier
-Pour avoir des informations sur un paquetage :
rpm -p NomDuPackage
➔ Vérification: Cette option permet de comparer les différences entre le paquetage installé et le
paquetage tel qu'il devrait être. Les commandes sont :
-Pour vérifier vis-à-vis d'un fichier particulier :
rpm -Vf NomDuFichier
-Pour vérifier tous les paquetages :
rpm -Va
-Pour vérifier un paquetage particulier :
rpm -Vp NomDuPackage
Lorsqu'il n'y a pas d'erreur, le système n'affiche rien. Si par contre une erreur a été détectée dans
le paquetage installé, le système renvoie une chaîne de huit caractères indiquant le type d'erreur.
5. Décompresser des archives
Les programmes sont la plupart du temps fournis compressés, c'est-à-dire sous un format plus
compact permettant de réduire la taille du programme, notamment pour faciliter son
téléchargement, c'est le programme gzip qui permet ce compactage. Plusieurs fichiers peuvent
aussi être simplement regroupés en une seule archive pour faciliter leur transport, c'est le rôle du
programme tar. Enfin, les fichiers peuvent être compressés et regroupé en une archive portant
l'extension .tar.gz.
Les données compressées existent sous plusieurs formats :
➔ tar: les données sous ce format portent l'extension .tar
pour décompresser ce type de données il faut taper en ligne de commande :
tar xvf nom_du_fichier.tar
➔ gzip: les fichiers compressées en gzip possèdent l'extension .gz
pour décompresser ces fichiers il faut taper en ligne de commande :
gunzip nom_du_fichier.gz
➔ bzip2: les fichiers compressées en bzip2 possèdent l'extension .bz2
pour décompresser ces fichiers il faut taper en ligne de commande :
bzip2 -d nom_du_fichier.bz2
➔ tar/gzip : les données compressées en tar et en gzip portent l'extension .tar.gz
Elles peuvent être décompressées successivement par les deux moyens énoncés ci-dessus ou à
l'aide de la commande :
tar zxvf nom_du_fichier.tar.gz
➔ tar/bzip2: les données compressées en tar et en bzip2 portent l'extension .tar.bz2
Elles peuvent être décompressées successivement par les deux moyens énoncés ci-dessus ou à
l'aide de la commande :
tar jxvf nom_du_fichier.tar.bz2
➔ Compress: les fichiers archivés par le programme compress portent l'extension .Z, ils
peuvent être décompressés par le programme Uncompress.
91
6. Compiler un programme
Lorsque le programme est une archive (et non un RPM) il est généralement nécessaire de
compiler les sources.
Remarque : Bien que la compilation se fasse pratiquement toujours de la même façon pour la
majorité des applications, il est vivement conseillé de lire le fichier INSTALL ou README pour
connaître exactement les commandes nécessaires à la compilation du programme.
Dans un premier temps il faut exécuter la commande :
./configure
Cette commande est un script permettant d'adapter le programme à la machine courante. Les
options de configure sont :
-Pour obtenir de l'aide :
./configure –help
-Pour installer l'application dans un répertoire spécifique :
./configure –prefix="repertoire"
92
Je teste mes acquis
Question 1.
Soit le paquetage vlc-2.2.20.1.fc23.x86_64.rpm (du célébre logiciel vlc) se trouvant
dans votre répertoire personnel.
Ecrire les commandes nécessaires pour :
a. Voir la liste de tous les paquetages installés
……………………………………………………………………………………………………..
b. Installer ou mettre à jour le paquetage
……………………………………………………………………………………………………..
c. Installer le paquetage , même s'il y a des problèmes de dépendance
……………………………………………………………………………………………………..
d. Supprimer le paquetage
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
Ubuntu Fedora
Type de paquet deb
Interface graphique gpk-application
Utilitaire en ligne de commande apt-get
93
chapitre 10
initiation a l’ impression
1. L’ impression sous Linux
La manière la plus simple d'imprimer sous Linux est de faire un cat du fichier sur le
périphérique d'impression, comme ceci :
sudo cat mon-fichier-a-imprimer.txt > /dev/lp
Ce que fait cette commande est de lire le fichier mon-fichier-a-imprimer.txt et de
l'envoyer, octet par octet, au périphérique d'impression /dev/lp (Ce nom est un lien
symbolique vers le périphérique d’impression, qui peut varier. Peut être votre imprimante a un
autre nom comme par exemple /dev/lp0). Normalement, cat envoie sa sortie vers la sortie
standard (Le terminal), mais ici nous le redirigeons vers le périphérique /dev/lp avec
l'opérateur > . Seul le super-utilisateur peut écrire directement sur le périphérique d'impression,
c'est pourquoi nous devons utiliser la commande sudo .
lpr est beaucoup plus convivial que cela et vous permet de mettre en file d'attente des travaux
d'impression. Et surtout, il vous permet d'accéder au périphérique d'impression sans être le
super-utilisateur.
2. Installation de lpr et de CUPS
2.1. Présentation de lpr et de CUPS
La façon dont lpr fonctionne, en un mot, est: il lit dans le fichier et met les données
imprimables entre les mains du démon d'impression linux, lpd. lpd est un logiciel hérité pour
Unix et Linux, mais il est supporté par le système moderne utilisé par la plupart des
distributions Linux, CUPS.
Comme tous les systèmes d'exploitation de la famille Unix, Ubuntu utilise pour l'impression le
Système Commun d'Impression Unix dont l'appellation anglaise "Common Unix Printing
System" a donné l'acronyme CUPS. En général, CUPS est installé de base, du moins sur les
versions récentes.
CUPS organise les tâches d'impression, les met en file d'attente, et rend possible l'impression en
réseau. Il offre un large support pour un très grand nombre d'imprimantes, allant des
imprimantes matricielles aux imprimantes laser, en passant par de nombreux autres types. CUPS
offre également le support PostScript Printer Description et l'auto-détection des imprimantes
réseaux, sans oublier une interface de configuration Web simple et des outils d'administration.
2.2. Installation de lpr et de CUPS
Vous devrez peut-être installer manuellement CUPS, et lpr lui-même, afin d'imprimer de cette
façon. Si vous utilisez Debian ou un système Debian dérivé de Linux comme Ubuntu qui utilise
le système de gestion des paquets APT , vous pouvez les installer en exécutant la commande
suivante:
# apt-get update && sudo apt-get install cups cups-client lpr
Cela installera le système Common Unix Printing sur votre système. Vous devriez maintenant
être en mesure de configurer CUPS en dirigeant tout navigateur web vers l'adresse: http://
localhost:631
Cela ouvrira un écran de configuration CUPS basé sur le Web, qui devrait ressembler à ceci:
94
Figure : Ecran de configuration CUPS
Ensuite, à partir de la ligne de commande, ajoutez votre utilisateur au groupe lpadmin
avec la commande:
$ sudo adduser <votre nom d'utilisateur> lpadmin
Cela vous ajoutera au groupe d'utilisateurs autorisé à administrer les imprimantes sur votre
système. Revenez maintenant au panneau d'administration Web de CUPS et sous l'onglet
Administration, sélectionnez Ajouter une imprimante. Vous serez invité à saisir votre nom
d'utilisateur et votre mot de passe et vous devrez pouvoir configurer une nouvelle imprimante.
2.3. Utilisation de lpr
lpr soumet des fichiers pour l'impression. Les fichiers nommés sur la ligne de commande sont
envoyés à l'imprimante nommée (ou à la destination par défaut si aucune destination n'est
spécifiée). Si aucun fichier n'est répertorié sur la ligne de commande, lpr lit le fichier
d'impression à partir de l'entrée standard.
La syntaxe de lpr est comme suit :
lpr [-U username] [-P destination[/instance]]
[-# num-copies [-h ] [-l ] [-m ] [-o option[=value] ] [-p] [-q ]
[-r] [-C/J/T title] [file(s)]
95
-P destination [/ instance ] Imprime les fichiers sur l'imprimante nommée.
-U nom d' utilisateur Spécifie un autre nom d'utilisateur.
- # copies Définit le nombre de copies à imprimer de 1 à 100 .
H
Désactive l'impression de bannière. Cette option est équivalente à
" -o job-sheets=none ".
Spécifie que le fichier d'impression est déjà formaté pour la
L destination et doit être envoyé sans filtrage. Cette option est
équivalente à " -o raw ".
M Envoyer un courriel lorsque le travail est terminé.
-o option [ = valeur ] Définit une option de travail.
Spécifie que le fichier d'impression doit être formaté avec un en-
P
tête grisé avec la date, l'heure, le nom du travail et le numéro de
page. Cette option est équivalente à « -o prettyprint » et n'est
utile que pour l'impression de fichiers texte.
Q Maintien du travail pour l'impression.
R Spécifie que les fichiers d'impression nommés doivent être
supprimés après leur impression.
Exemples :
$ lpr monFichier.txt
Soumet une requête pour imprimer le fichier monFichier.txt.
$ lpr -# 3 fich1.txt
Imprime 3 copies de fich1.txt.
$ lpr -P directionImp info.txt
Imprime le fichier info.txt sur l’imprimante directionImp
2.4. Commandes associées
Voic quelques autres commandes permettant d'interagir avec les imprimantes :
• lpq : permet d'afficher la file d'attente d'une imprimante.
• lprm : permet de supprimer des jobs (des impressions) de la file d'attente.
• lpstat : permet d'afficher des informations détaillées sur le périphérique d'impression.
Par exemple, pour voir l'imprimante par défaut : lpstat -d.
• lpoptions : permet d'afficher ou de modifier la configuration du périphérique
d'impression. Par exemple, pour changer l'imprimante par défaut : lpoptions -d
autreimprimante. [commande CUPS seulement]
• lpmove : permet de déplacer un job de la file d'attente d'une imprimante à une autre
imprimante.
• lpc : permet de contrôler interactivement les imprimantes.
96
Je teste mes acquis
Question 1. Qu’est ce que CUPS ?
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
Question 2. Compléter le tableau suivant :
Commande Rôle
lpr permet d'imprimer un (ou des) fichier(s).
permet d'afficher la file d'attente d'une imprimante.
permet de supprimer des jobs (des impressions) de la file d'attente.
permet d'afficher des informations détaillées sur le périphérique d'impression.
97
chapitre 11
configuration reseau
Ce chapitre a pour but de vous présenter quelques commandes de configuration du réseau
indispensable, ainsi que les principaux fichiers de configuration du réseau utilisés sous Linux.
1. ifconfig
La commande ifconfig permet de configurer une interface réseau (c'est le concept
informatique qui correspondant à une carte réseau). Les interfaces éthernet sont désignées par
ethx où x prend les valeurs 0, 1, 2, etc. La première carte étant désignée par eth0.
Pour obtenir la liste des interfaces réseau qui ont été détectées, on peut utiliser dans l'invite de
commandes :
ifconfig -a
Pour attribuer une adresse IP à une interface réseau, on peut utiliser la commande ifconfig :
ifconfig <interface> <adresse ip>
Par exemple :
ifconfig eth0 192.168.1.14
Le masque de sous-réseau est déterminé automatiquement en fonction de la classe de l'adresse
IP. S'il est différent on peut le spécifier avec l'option netmask :
ifconfig eth0 192.168.1.14 netmask 255.255.255.128
Attention au redémarrage de la machine ce changement sera perdu. Il nous faut donc modifier
en même temps le fichier /etc/network/interfaces (Voir dans la suite).
On peut aussi désactiver une carte réseau :
ifconfig eth0 down
et bien sûr la réactiver :
ifconfig eth0 up
2. iwconfig
La commande iwconfig permet de configurer les réseaux sans fil de type Wifi.
Cette commande permet de vérifier et de configurer des paramètres spécifiques aux réseaux sans
fil. Par exemple, la configuration de la fréquence (ou le canal), de la puissance de sortie, de la
clé de cryptage et l'identifiant de service (ESSID) sont tous réalisé avec iwconfig.
Lorsqu'on utilise la commande sans options, elle affiche les informations de réseau sans fil pour
l'ensemble des cartes réseaux:
iwconfig
3. arp
La commande réseau arp permet d'afficher et modifier les correspondances entre les adresses IP
et les adresses physiques (Adresse MAC) d'une carte réseau en manipulant la table ARP du
système.
Exemples :
Pour afficher les tables du cache ARP de toutes les interfaces, tapez :
arp -a
Pour afficher la table du cache ARP de l'interface dont l'adresse IP est 10.0.0.99, tapez :
arp -a -N 10.0.0.99
98
Pour ajouter dans le cache ARP une entrée statique qui résout l'adresse IP 10.0.0.80 en l'adresse
physique 00-AA-00-4F-2A-9C, tapez :
arp -s 10.0.0.80 00-AA-00-4F-2A-9C
4. ping
Pour vérifier que la carte réseau fonctionne, on peut essayer de communiquer avec une autre
machine avec la commande
ping <adresse ip>
La commande ping envoi un paquet à l'adresse IP puis attend que la machine réponde. Elle
affiche ensuite le temps qu'a pris toute l'opération, en millisecondes.
5. netstat
Pour vérifier le statut de toutes les interfaces, on peut utiliser la commande
netstat -a
6. traceroute
traceroute permet de déterminer la route prise par un paquet pour atteindre la cible sur
internet. On peut utiliser soit l'adresse IP, soit le nom d'hôte. Attention certains FireWall ou
routeurs ne se laissent pas voir avec la commande traceroute.
La commande traceroute est très utile pour savoir ou peut se trouver un blocage (plutôt
ralentissement).
Exemple :
traceroute www.google.com
7. Nom d'hôte (hostname)
Le fichier /etc/hostname contient le nom de la machine. Il suffit de l'éditer pour changer le
nom d'hôte de la machine. Cette modification n'est pas prise en compte immédiatement par le
système, elle le sera au prochain démarrage de la machine ou après avoir lancé :
/etc/init/hostname.sh
On peut également changer le nom d'hôte avec la commande suivante, mais il ne sera pas
conservé au prochain démarrage :
hostname <nom d'hôte>
8. Configuration automatique au démarrage
Le fichier /etc/network/interfaces permet de configurer les cartes réseau de manière
permanente.
Par exemple :
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.7
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
Cette configuration initialisera automatiquement les interfaces lo et eth0.
L'interface lo est souvent indispensable au système, il est important de l'initialiser. Elle aura
systématiquement l'adresse IP 127.0.0.1.
L'interface eth0 sera configurée avec l'adresse IP 192.168.1.7, le masque de sous réseau
255.255.255.0 et la passerelle 192.168.1.1 (ce paramètre est facultatif).
99
Dans le cas d'une IP fixe, il vaut mieux renseigner un serveur DNS (ci-dessus celui de Google).
Sinon, si l'interface eth0 doit être configurée automatiquement par un serveur DHCP, il faut
indiquer :
auto eth0
iface eth0 inet dhcp
Pour que les modifications de ce fichier soient prises en compte, il faut redémarrer ou utiliser les
commandes ifup et ifdown. Par exemple :
ifup eth0
9. Résolution de noms d'hôte
Le fichier /etc/host.conf indique comment les noms doivent être résolus (c'est à dire
comment passer d'une adresse IP à un nom, et inversement). Par exemple :
# D'abord traduire avec les serveurs DNS et ensuite avec /etc/hosts.
order bind,hosts
100
Je teste mes acquis
Question 1. Compléter le tableau suivant :
Commande (ou fichier) Description
Permet d’obtenir la liste des interfaces réseau qui ont été détectées.
Ce fichier contient le nom de la machine.
Cette commande permet de vérifier si une machine distante
répond.
Elle affiche des informations sur les connexions réseau, les tables
de routage et un certain nombre de statistiques dont ceux des
interfaces.
Ce fichier permet de configurer les cartes réseau de manière
permanente.
Permet de configurer les réseaux sans fil de type Wifi.
101
chapitre 12
scripts de base
1. Premiers scripts Shell
Syntaxe des scripts Shell
Un script Shell n'est rien d'autre qu'un fichier texte dans lequel sont inscrites un certain nombre
de commandes compréhensibles par votre interpréteur de commandes. Etant donné que Linux
ne prend pas en compte les extensions des fichiers, vous pouvez nommer vos fichier de script
comme vous voulez.
Pour indiquer qu'il s'agit bien d'un script et non pas d'un fichier texte classique, la première ligne
doit toujours commencer par le nom de l'interpréteur de commandes :
#!/bin/bash
... si vous utilisez bash
Vous pouvez écrire autant de lignes de commentaires que vous voulez, pour cela, faites débuter
votre ligne ou votre fin de ligne par #.
#!/bin/bash
echo Assalam alaykom #Un commentaire
#Un autre commentaire
Assalam alaykom !
Pour créer votre premier script qui affichera Assalam alaykom à l'écran, vous allez éditer un
fichier que vous appelez script1 avec un éditeur de texte comme vi, nano, gedit, ...et vous
allez taper ceci à l'intérieur :
#!/bin/bash
echo Assalam alaykom
Exécuter un script
Pour exécuter le script que vous venez de créer, vous devrez lui donner le droit d'être exécuté en
tapant :
chmod +x monScript
Cette opération n'est à faire qu'une fois, si vous avez le droit d'exécution, pas besoin de répéter
cette étape.
Vous pourrez alors l'exécuter en tapant :
./monScript
Succession de commandes
Maintenant que vous avez essayé un script basique avec la commande echo, vous pouvez
ajouter à la suite autant de commandes shell que vous voulez. Par exemple :
#!/bin/bash
clear
echo -n Vous utilisez le système :
uname
Ce script va afficher quelque chose comme ça à l'écran :
Vous utilisez le système : Linux
2. Variables et opérations
Déclaration de variables
Il n'y a pas besoin de déclarer les variables comme en langage C, par exemple. On peut
directement affecter une valeur à une variable de cette façon :
variable=valeur
102
Par exemple :
monOS=Ubuntu
Remarque : Les noms de variables doivent suivre les règles suivantes :
Éviter les caractères spéciaux, ne pas commencer par un chiffre.
Utilisation des variables
Pour utiliser les variables qui ont été affectées, on utilise le signe $.
echo $monOS #Ceci affichera Ubuntu à l'écran
Opérations et opérateurs arithmétiques
Pour faire des opérations sur des variables, vous pouvez utiliser la commande expr.
Cette commande s'utilise avec des variables de type numérique, par exemple :
$ expr 7 + 5 # Affichera 12 à l'écran
$ expr 7 \* 3 # Affichera 21 à l'écran
$ a=$(expr 14 - 9)
$ echo $a
5
Saisir une information et la stocker dans une variable
Pour créer un programme qui soit interactif, vous pouvez demander à l'utilisateur de saisir des
informations et les utiliser par la suite gràce à des variables. La commande read permet à
l’utilisateur de saisir une chaîne et de la placer dans une ou plusieurs variable. La saisie est
validée par [Entrée].
read var1 [var2 ...]
Une fois la saisie validée, chaque mot (séparé par un "espace") sera stocké dans chaque variable
(var1, var2, etc.). En cas d'excédent, celui-ci sera stocké dans la dernière variable. En cas de
manque, les variables non-remplies seront automatiquement définies mais vides.
Exemple :
echo Veuillez entrer votre nom et votre prénom
read nom,prenom
echo Vous vous appellez $nom $prenom
Les tableaux
Syntaxe :
variable[n]=chaîne
variable=(chaîne1 chaîne2 ...)
Le Korn Shell, Bourne Again Shell et shells descendants permettent de créer des tableaux à une
seule dimension. L'affectation d'un élément d'un tableau se fait par la syntaxe
variable[n]=chaîne
L'indice n que l'on spécifie entre les crochets doit être impérativement positif ou nul; mais il n'a
pas de limite maximale. De plus, rien n'oblige le programmeur à remplir le nème élément avant
d'aller remplir le (n + 1)ème.
Il est possible de remplir en une seule instruction les "n" premiers éléments du tableau en
utilisant la syntaxe variable=(chaîne1 chaîne2 ...). Dans cette syntaxe où l'utilisation
de parenthèses "( )" est obligatoire, le texte chaîne1 ira dans la variable variable[0]; le
texte chaîne2 ira dans la variable variable[1]; etc. Cette syntaxe remplace tout le tableau
par les seules chaînes situées entre parenthèses. L'ancien contenu éventuel disparaît alors pour
être remplacé par le nouveau.
L'accès au contenu de la variable d'indice n s'obtient en encadrant le nom de la variable indicée
par des accolades {} et en faisant précéder le tout du caractère $.
Si on remplace la valeur de l'indice par le caractère *; le Shell concatènera tous les éléments du
tableau en une chaîne unique et renverra cette dernière.
103
Exemple :
#!/bin/bash
os[1]="kubuntu"
os[5]="xubuntu"
os="ubuntu"
i=5
echo "Voici mes 3 os: ${os[0]}, ${os[1]} et ${os[$i]}"
# affiche Voici mes 3 os: ubuntu, kubuntu et xubuntu
echo "Mon tableau os contient ${os[*]}"
# Mon tableau os contient ubuntu kubuntu xubuntu
le Bourne Again Shell permet d'affecter automatiquement chaque mot entré par l'utilisateur
dans les éléments d'un tableau. Le premier mot ira dans le tableau d'indice 0; le second dans le
tableau d'indice 1; etc.
Le syntaxe est :
read –a tableau
Substitution de commande
Le mécanisme de substitution permet de placer le résultat de commandes simples ou complexes
dans une variable.
Vous placez les commandes à exécuter entre des accents graves ` ([Alt Gr] 7).
Exemple :
mon_OS=`uname -o`
echo ${mon_OS}
GNU/Linux
3. Tests de conditions
La commande test permet d’effectuer des tests de conditions. Le résultat est
récupérable par la variable $? . Si ce résultat est 0 alors la condition est réalisée.
Tests sur une chaîne
• test -z "variable" : zero, retour OK si la variable est vide (exemple : test -z
"$a").
• test -n "variable" : non zero, retour OK si la variable n’est pas vide.
• test "variable" = chaîne : OK si les deux chaînes sont identiques.
• test "variable" ! = chaîne : OK si les deux chaînes sont différentes
Exemple :
$ a=
$ test -z "$a" ; echo $?
0
$ test -n "$a" ; echo $?
1
$ a=qlqchose
$ test "$a" = qlqchose ; echo $?
0
104
et les options sont les suivantes :
Option Rôle
-eq Equal : égal
-ne Not Equal : différent
-lt Less than : inférieur
-gt Greater than : supérieur
-le Less or equal : inférieur ou égal
-ge Greater or equal : supérieur ou égal
Exemple :
$ a=3
$ b=7
$ test "$a" -ne "$b" ; echo $?
0
$ test "$a" -ge "$b" ; echo $?
1
$ test "$a" -lt "$b" && echo "$a est inferieur a $b"
3 est inferieur a 7
105
Exemple :
$ ls -l
total 22140
drwxrwxr-x 3 stagiaire users 4096 2002-01-01 00:50 crep
drwxr-xr-x 2 stagiaire users 4096 2002-01-01 00:49 Documents
-rw-rw-r-- 1 stagiaire users 14198285 2002-01-01 01:14 aLire.txt
drwxr-xr-x 3 stagiaire users 4096 2012-02-17 21:45 My GCompris
drwxrwxr-x 3 stagiaire users 4096 2002-01-01 00:02 VirtualBox VMs
...
$ test -f aaa.pdf ; echo $?
1
$ test -x aLire.txt ; echo $?
1
$ test -d crep ; echo $?
0
4. Structures conditionnelles
Tests avec if
Pour vérifier qu'une ou plusieurs conditions sont remplies avant d'effectuer un traitement, on
utilise souvent le if, par exemple :
if test "$age" -ge 18
then
echo Vous etes majeur
fi
Else, elif
Le if sert à imposer une condition pour effectuer un traitement. Le else (sinon) permet de
complêter le if pour effectuer un traitement dans le cas ou la condition n'est pas remplie.
Exemple :
if test "$age" -ge 18
then
echo Vous etes majeur
else
echo Vous etes mineur
fi
Le elif (else if) permet d'imbriquer plusieurs if les uns dans les autres pour pouvoir traiter tous
les cas possibles :
#!/bin/bash
echo entrez la couleur du feu
read feu
if test $feu = "rouge"
then
echo N avancez pas
elif test $feu = "orange"
then
echo Ralentissez
else
echo Allez-y
fi
106
Plusieurs conditions
Vous pouvez aussi combiner un certain nombre de conditions les unes après les autres, par
exemple pour vérifier que l'àge entré par l'utilisateur est situé entre 0 et 120 :
#!/bin/bash
echo entrez votre age
read age
if test $age -le 0 || test $age -ge 120
then
echo l\'age entré n\'est pas correct
fi
Pour combiner plusieurs conditions, vous pouvez utiliser soit OU (||), soit ET (&&). Il s'agit des
opérateurs logiques :
OU signifie soit l'un, soit l'autre, soit les deux.
ET signifie l'un et l'autre obligatoirement.
case
La structure case permet de faire un traitement différent en fonction de la valeur d'une variable,
par exemple :
#!/bin/bash
echo Quel est votre OS préféré ?
Echo 1- Windows 2- Linux 3- Mac OS 4- Autre
read $choix
case "$choix" in
1) echo "Vous préférez Windows " ;;
2) echo "Vous préférez Linux " ;;
3) echo "Vous préférez Mac OS " ;;
4) echo "Vous préférez un autre OS " ;;
*) echo "Vous devez taper un nombre entre 1 et 4 ! " ;;
esac
Select
Le select est une extension du case. La liste des choix possibles est faite au début et on
utilise le choix de l'utilisateur pour effectuer un même traitement.
Exemple :
#!/bin/bash
select systeme in "Windows" "Linux" "BSD" "Mac OS" "MS DOS"
do
echo "Votre système favori est $systeme."
break
done
Ce qui créera automatiquement un menu et donnera à l'écran :
1) Windows
2) Linux
3) BSD
4) Mac OS
5) MS DOS
#? 4
Votre système favori est Mac OS.
107
5. Boucles
Les boucles servent en général à deux choses :
– Vérifier qu'une information saisie par l'utilisateur est correcte et lui faire recommencer la
saisie tant que ce n'est pas correct
– Recommencer un certain nombre de fois la même suite de commandes d'autre part elles
fonctionnent toujours avec ces trois critères :
– Une valeur de départ
– Une condition d'entrée ou de sortie
– Une incrémentation
Les boucles while et until testent une condition avant d'effectuer le traitement, ce qui veut
dire qu'il se peut qu'on n'entre jamais dans la boucle.
La boucle while : tant que ...
while signifie tant que, ce qui veut dire que la boucle sera exécutée tant que la condition est
respectée.
Exemple :
#!/bin/bash
i=1 # Valeur de départ 1
while test $i -le 5 # Condition de sortie : i > 5
do
echo tour de boucle n° $i
i=$(($i+1)) # Incrément de 1 par tour de boucle
done
La boucle until : jusqu'à ...
until signifie jusqu'à, ce qui veut dire que la boucle sera exécutée jusqu'à ce que la condition
soit respectée.
Exemple :
#!/bin/bash
i=1 # Valeur de départ 1
until test $i -gt 5
do # Condition de sortie : i > 5
echo tour de boucle n° $i
i=$(($i+1)) # Incrément de 1 par tour de boucle
done
La boucle for
A priori, la boucle for est utilisée quand on veut exécuter un ensemble de commandes un
nombre précis de fois.
Exemple :
#!/bin/bash
echo Combien voulez-vous d\'étoiles ?
read nombre
for i in `seq $nombre`
do
echo -n \*
done
Combien voulez-vous d'étoiles ?
5
*****
108
Remarque : La commande seq sert à afficher une liste de nombre :
seq 3 affichera à l'écran 1 2 3
seq 3 5 affichera à l'écran 3 4 5
seq 1 2 7 affichera à l'écran 1 3 5 7
6. Passage de paramètres
En général pour utiliser une commande, on l'appelle par son nom, suivi d'un certain nombre de
paramètres, par exemple pour déplacer un fichier :
mv fichier répertoire
1 2 3
1 : commande
2 : paramètre 1
3 : paramètre 2
L'avantage d'utiliser des paramètres est que lorsqu'on lance le programme, il n'y a pas à faire
intervenir l'utilisateur donc le script peut s'exécuter sans que personne ne tape quoi que ce soit
au clavier. Pour passer un paramètre à votre programme, il vous faut faire comme avec
n'importe quelle commande :
nom_de_votre_script paramètre1 paramètre2
Quand un utilisateur appelle votre programme en y ajoutant des paramètres, vous devez les
récupérer dans des variables. Pour cela il existe des variables spéciales :
$1 à $9 : contienne le Xième paramètre passé
$* : contient tous les paramètres qui ont été passés
$# : contient le nombre de paramètres qui ont été passés
$0 : contient le nom du script lui-même
$$ : contient le numéro de processus du shell lui-même
Exemple de script utilisant des paramètres :
#!/bin/bash
echo Vous avez passé les $# paramètres suivant :
echo paramètre 1 : $1
echo paramètre 2 : $2
echo paramètre 3 : $3
echo paramètre 4 : $4
echo On peut aussi les afficher tous d\'un coup : $*
109
L'appel d'une fonction se fait en écrivant son nom. On peut lui passer des paramètres comme on
le fait pour une commande.
Attention on ne peut appeler une fonction que si elle a été déclarée avant !
Exemple de fonction et de son appel :
#!/bin/bash
# Déclaration de la fonction :
function multiplier()
{
resultat=`expr $1 "*" $2`
echo $resultat
}
echo Veuillez entrer deux nombres
read nb1
read nb2
# Appel de la fonction :
multiplier $nb1 $nb2
110
Je teste mes acquis
Question 1. Écrire un script qui prend en argument un nom de répertoire et qui détruit , dans ce
répertoire, tous les fichiers finissant par ~
#!/bin/bash
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
Question 2. Écrire un script qui calcule le nombre du fichier du répertoire courant
#!/bin/bash
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
Question 3. Ecrire un script qui demande à l'utilisateur de donner un nom de fichier. Le script
vérifie par la suite si ce fichier existe dans le répertoire courant. Si oui il affiche le message “ le
fichier existe” puis affiche ses droit, si le fichier n'existe pas le message “ fichier inexistant” est
alors affiché.
#!/bin/bash
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
……………………………………………………………………………………………………..
…………