UNIX
Les bases indispensables (avec exercices pratiques et corrigés)
Chapitre 1
Introduction
1. Avant-propos13
2. Versions Unix, distributions Linux15
2.1 Un peu d'histoire15
2.2 Unix aujourd'hui16
2.3 Principales versions commerciales16
2.4 Versions libres18
3. Composantes d'un système Unix19
3.1 Le noyau20
3.2 Le shell (langage de commandes)20
3.3 Les commandes21
3.4 Les protocoles TCP/IP21
3.5 Les interfaces de programmation22
3.6 L'offre logicielle et les domaines d'utilisation22
4. Connexion et environnement de travail23
4.1 Diverses possibilités de connexion à un système Unix23
4.2 Notion de compte utilisateur24
4.2.1 Le fichier/etc/passwd25
4.2.2 Le fichier/etc/group26
4.3 La documentation27
4.3.1 Ressources Internet27
4.3.2 La commande man28
5. Premiers éléments de syntaxe30
6. Premières commandes utiles32
6.1 Effacement de l'écran32
6.2 Calendrier perpétuel32
6.3 Qui est connecté ?33
6.4 Commandes d'identification34
6.5 Afficher du texte35
6.6 Modifier son mot de passe36
6.7 Afficher l'heure ou la date système37
7. Récapitulatif des commandes à approfondir dans la documentation de référence38
8. Quelques exercices39
Chapitre 2
Les systèmes de fichiers
1. Vision globale de l'organisation des disques41
1.1 Organisation classique en partitions42
1.1.1 Mode bloc et mode raw bloc43
1.1.2 Visualisation des partitions (Solaris, Linux)44
1.2 Organisation en volumes logiques45
1.2.1 Terminologie du LVM (Logical Volume Manager)45
1.2.2 Principes d'organisation47
1.2.3 Visualisation de l'organisation (AIX, HP-UX)48
1.3 Diques RAID48
2. Panorama des différents types de filesystems49
2.1 Filesystems de type Berkeley51
2.2 Filesystems de type journalisé51
2.3 Montage et démontage52
2.4 Pseudo filesystems / proc53
3. Types et désignations des fichiers54
3.1 Les conventions à connaître55
3.2 Comment désigner les fichiers ?56
4. Parcours et visualisation de l'arborescence Unix57
4.1 Commandes de base (pwd, cd, ls)57
4.2 Les principaux répertoires de la racine Unix60
5. Commandes essentielles de manipulation des fichiers62
5.1 Visualiser le contenu de fichiers de texte (cat, pg, more, less)62
5.1.1 La commande pg62
5.1.2 La commande more63
5.1.3 La commande less64
5.2 Créer ou supprimer des répertoires (mkdir, rmdir)65
5.3 Copier des fichiers (cp)66
5.4 Gérer les liens (ln)68
5.4.1 Liens physiques68
5.4.2 Liens symboliques70
5.4.3 La commande ln70
5.5 Renommer ou déplacer des fichiers (mv)72
5.6 Supprimer des fichiers (rm)74
5.7 D'autres commandes utiles76
5.7.1 La commande head76
5.7.2 La commande tail77
5.7.3 La commande wc78
6. Droits d'accès79
6.1 Sémantique des permissions Unix79
6.1.1 Permissions de base79
6.1.2 Permissions supplémentaires81
6.2 Choisir les droits par défaut en création de fichiers (umask)85
6.3 Modifier les droits des fichiers existants (chmod)87
6.4 ACL (Access Control List)90
7. Récapitulatif des commandes à approfondir dans la documentation de référence91
8. Quelques exercices92
Chapitre 3
Les éditeurs de texte
1. L'éditeur standard vi95
1.1 Les conventions à connaître96
1.2 Les commandes essentielles98
1.2.1 Déplacements98
1.2.2 Insertions, suppressions, modifications99
1.2.3 Recherches d'expressions100
1.2.4 Substitutions répétitives100
1.2.5 Duplications et déplacements de lignes (copie-coller et couper-coller)100
1.2.6 Autres commandes utiles101
1.2.7 Sorties et sauvegardes101
1.2.8 Édition de plusieurs fichiers101
1.2.9 Paramétrage de l'éditeur102
2. L'éditeur vim des distributions Linux104
3. Autres éditeurs de texte105
4. Quelques exercices106
Chapitre 4
Processus et mécanismes
1. Quelques définitions109
1.1 Mécanisme de base fork+exec110
1.2 Attributs des processus112
1.3 La commande ps113
2. Signaux, interruption des processus116
2.1 Description des signaux Unix116
2.2 Comment éliminer un processus ?118
3. Redirections120
3.1 Redirection de l'entrée standard124
3.2 Redirection de la sortie standard126
3.2.1 Redirection de la sortie en mode écrasement126
3.2.2 Redirection de la sortie en mode ajout127
3.2.3 Élimination de la sortie129
3.2.4 Création de fichier130
3.2.5 Protection contre l'écrasement accidentel131
3.3 Redirection de l'erreur standard132
4. Processus séquentiels134
5. Mécanisme du pipeline135
5.1 Principe de fonctionnement135
5.2 Quelques exemples136
5.3 Mémoriser les résultats intermédiaires139
6. Processus en arrière-plan140
6.1 Principe et utilisation140
6.2 Pouvoir se déconnecter (mode détaché)143
7. Récapitulatif des commandes à approfondir dans la documentation de référence145
8. Quelques exercices145
Chapitre 5
Utilisation du shell
1. Les différents shells147
2. Variables et environnement149
2.1 Variables149
2.2 Environnement150
2.3 Quelques variables prédéfinies152
2.4 Internationalisation155
3. Caractères spéciaux156
3.1 Rappel des caractères spéciaux déjà évoqués156
3.2 Désignations abrégées de noms de fichiers (jokers, caractères génériques)157
3.3 Substitutions de commandes159
3.4 Caractères de protection160
4. Fonctionnalités interactives162
4.1 Alias162
4.2 Historique des commandes164
4.2.1 Rappel simple de commandes164
4.2.2 Rappel et édition de commandes avec l'éditeur intégré166
4.2.3 Rappel et édition de commandes avec la commande interne fc167
4.3 Contrôle des tâches168
5. Fichiers de connexion169
5.1 Prise en compte des modifications172
6. Quelques exercices173
Chapitre 6
Sélection de commandes utiles
1. Introduction175
2. Commandes complémentaires sur les fichiers176
2.1 La commande file176
2.2 La commande nl176
2.3 La commande cmp177
2.4 La commande strings178
2.5 Diverses commandes complémentaires179
2.6 La commande find182
3. Sauvegardes186
3.1 Les commandes de compression186
3.2 Caractéristiques communes aux commandes de sauvegarde Unix188
3.3 La commande tar188
3.4 La commande cpio192
4. Commandes d'impression195
5. Autres commandes utiles196
5.1 La commande script196
5.2 La commande crypt196
5.3 La commande du198
5.4 Les commandes su et sudo199
5.5 La commande cut202
6. Filtres204
6.1 Tris avec sort204
6.2 Transformations de caractères avec tr208
6.3 Recherche d'expressions (grep, egrep, fgrep)210
6.4 Édition non interactive de fichiers avec sed213
6.5 Introduction au langage awk216
6.5.1 Syntaxe et principe de fonctionnement216
6.5.2 Les motifs217
6.5.3 Les actions218
6.5.4 Aide-mémoire résumé de awk219
7. Récapitulatif des commandes à approfondir dans la documentation de référence221
8. Quelques exercices223
Chapitre 7
Commandes réseau, bureaux graphiques
1. Noms et adresses IP225
1.1 Format des adresses IP225
1.1.1 Adresses IPv4226
1.1.2 Sous-réseaux228
1.1.3 Adresses IPv6228
1.2 Interfaces physiques229
1.3 Passerelle par défaut230
1.4 Résolution des noms231
1.4.1 Fichier /etc/hosts231
1.4.2 Aspect client DNS232
2. Applications standards233
2.1 Terminal virtuel233
2.2 Les "remote commands"234
2.2.1 La commande rlogin235
2.2.2 La commande rsh236
2.2.3 La commande rcp237
2.3 Transferts de fichiers avec ftp238
2.4 L'alternative sécurisée ssh240
3. Environnements graphiques241
3.1 Protocole X-Window, schéma fonctionnel et terminologie241
3.2 Paramétrage et lancement de clients243
3.2.1 La variable DISPLAY244
3.2.2 Lancement de clients distants depuis un émulateur de terminal244
3.3 Environnement CDE (Common Desktop Environnement)245
3.4 Bureaux Linux246
Chapitre 8
Les bases de la programmation shell
1. Procédures et paramètres247
1.1 Procédures248
1.2 Paramètres, code retour249
1.3 Interprétation de la ligne de commande250
2. Instructions de contrôle251
2.1 Tests251
2.1.1 Tests simples251
2.1.2 Tests séquentiels252
2.1.3 La commande test253
2.1.4 Enrichissement de la commande test256
2.2 Boucles257
2.2.1 La boucle for257
2.2.2 Les boucles while et until258
2.2.3 Traitements utiles associés aux boucles259
2.3 Aiguillage262
3. Fonctionnalités complémentaires263
3.1 Tableaux263
3.2 La variable IFS264
3.3 La commande interne shift265
3.4 La commande interne set265
3.5 Traitement syntaxique des options avec getopts267
3.6 Fonctions269
3.7 Gestion des signaux271
3.8 La commande eval272
4. Quelques exercices273
Chapitre 9
Les bases de la programmation en Perl
1. Présentation générale du Perl285
2. L'essentiel du langage287
2.1 Structure d'un programme287
2.2 Éléments du langage288
2.3 Scalaires289
2.3.1 Nombres littéraux289
2.3.2 Chaînes littérales290
2.3.3 Variables scalaires291
2.4 Opérateurs sur les scalaires291
2.4.1 Opérateurs sur les nombres291
2.4.2 Opérateurs sur les chaînes292
2.4.3 Opérateurs d'affectation292
2.4.4 Syntaxes abrégées d'affectation292
2.4.5 Valeur indéfinie293
2.5 Entrées/sorties de base293
2.5.1 Saisie clavier293
2.5.2 Fonctions chop et chomp294
2.5.3 Sortie à l'écran, fonction print294
2.5.4 Un premier script simple294
2.6 Listes et tableaux295
2.6.1 Listes littérales295
2.6.2 Variables de type tableau296
2.6.3 Affectations globales296
2.6.4 Accès aux éléments297
2.6.5 Quelques fonctions utiles sur les tableaux298
2.6.6 Un exemple de script300
2.7 Instructions de contrôle301
2.7.1 Tests simples : if/unless301
2.7.2 Tests séquentiels : if... elsif302
2.7.3 Boucle while/until303
2.7.4 Boucle for303
2.7.5 Boucle foreach305
2.7.6 Instructions de branchement307
2.7.7 Instructions abrégées307
2.8 Tableaux associatifs (hachages)308
2.8.1 Affectations globales309
2.8.2 Affectations de plusieurs éléments à la fois310
2.8.3 Fonctions sur les tableaux associatifs310
2.8.4 Un exemple de script312
2.9 Références313
3. Expressions régulières316
3.1 L'essentiel des motifs316
3.1.1 Motifs correspondant à un seul caractère316
3.1.2 Motifs de regroupement317
3.1.3 Parenthèses de mémorisation317
3.1.4 Motifs d'ancrage318
3.1.5 Diverses notations complémentaires318
3.2 Utilisation des expressions319
3.2.1 L'opérateur =(...)319
3.2.2 Confondre minuscules et majuscules319
3.2.3 Utiliser un séparateur différent du /319
3.2.4 Substitutions320
3.2.5 Fonctions split et join320
3.2.6 Un exemple de script321
3.3 Utilisation interactive de l'interpréteur Perl322
4. Fonctions324
4.1 Définition et utilisation324
4.2 Paramètres, visibilité, retour324
4.3 Aspects complémentaires326
4.3.1 Variables semi-privées326
4.3.2 Retour d'un scalaire ou d'une liste selon le contexte327
4.3.3 Utilisation de références327
4.3.4 Références sur fonctions328
4.3.5 Un exemple de script329
4.4 Fonctions intégrées et modules330
4.4.1 Documentation des fonctions intégrées331
4.4.2 Terminologie liée aux modules332
4.4.3 Programmation orientée objet334
4.4.4 Exemple d'utilisation d'un module non orienté objet335
5. Gestion des fichiers et des répertoires337
5.1 Ouverture de fichier et entrées/sorties337
5.1.1 Lectures338
5.1.2 Écritures339
5.1.3 Données littérales intégrées au script340
5.1.4 Un exemple de script341
5.2 Informations sur les fichiers342
5.3 Gestion des répertoires344
5.3.1 Changement de répertoire344
5.3.2 Traitement des caractères spéciaux (globalisation)344
5.3.3 Parcourir un répertoire345