Vous êtes sur la page 1sur 10

Préface

L’utilisateur ou le programmeur qui découvre Unix1 doit rapidement faire face à un


nombre déconcertant de programmes, dont la plupart ont souvent un grand nombre
d’options. Lui viennent alors à l’esprit de questions comme « À quoi sert ce
programme » et « Comment l’utiliser ? ».
Nous avons écrit ce livre pour répondre à ces questions. Nous vous apprendrons
comment combiner les outils Unix avec le shell standard pour effectuer les opérations
que vous souhaitez réaliser : c’est tout l’art des scripts shell. L’écriture de ces scripts
demande non seulement de connaître le langage du shell, mais également les différents
programmes Unix, la raison de l’existence de chacun d’eux et comment les utiliser sépa-
rément ou en association avec d’autres.
Pourquoi apprendre à écrire des scripts shell ? Parce que, souvent, les problèmes
moyennement complexes peuvent se décomposer en sous-problèmes plus simples,
chacun d’eux pouvant alors être résolu par l’un des outils Unix. Un script shell bien
écrit peut souvent résoudre un problème en bien moins de temps qu’il n’en faut avec
un langage de programmation conventionnel comme C ou C++. Les scripts shell
peuvent également être portables ; c’est-à-dire utilisables sur différents systèmes Unix
conformes à la norme POSIX, moyennant peu de modifications, voire aucune.
Lorsque l’on évoque les programmes Unix, on utilise délibérément le terme outils.
L’approche boîte à outils d’Unix pour résoudre les problèmes a longtemps été désignée
par l’expression « philosophie des outils logiciels »2.
Pour résumer cette approche de résolution des problèmes, utilisons une analogie bien
connue. Un couteau suisse est le genre d’objet qu’il est très utile d’avoir dans sa poche :
il a plusieurs lames, un tournevis, un décapsuleur, un cure-dents, etc. Des modèles plus
gros fournissent même des outils supplémentaires, comme un tire-bouchon ou une
loupe. Cependant, c’est tout ce que vous pouvez faire avec un couteau suisse : bien qu’il

1. Dans ce livre, nous utiliserons le terme Unix pour désigner non seulement les variantes commercia-
les du système Unix original, comme Solaris, Mac OS X et HP-UX, mais également les systèmes
libres apparentés, comme GNU/Linux et les différents systèmes BSD, BSD/OS, NetBSD, FreeBSD et
OpenBSD.
2. Cette approche a été popularisée par l’ouvrage Software Tools, publié par Addison-Wesley.
xii Préface

puisse parfaitement convenir pour couper une petite branche ou pour une petite sculp-
ture, il est complètement inadapté à la construction d’une niche ou d’une mangeoire à
oiseaux, par exemple. Pour cela, vous utiliserez des outils spécialisés, comme un
marteau, une scie, une pince ou un rabot. Il en va de même pour les problèmes de
programmation : il vaut mieux utiliser des outils logiciels spécialisés.

Notre public
Nous avons écrit ce livre pour les utilisateurs et pour les développeurs travaillant dans
un environnement Unix, qui ont besoin d’écrire des scripts shell. Vous pouvez, par
exemple, être un étudiant en informatique disposant de votre premier compte sur le
système Unix de votre université et vouloir apprendre ce que vous pouvez faire avec, qui
serait impossible sous Windows (en ce cas, vous devrez sûrement écrire plusieurs scripts
pour adapter votre environnement à votre goût). Vous pouvez également être un
nouvel administrateur système et devoir écrire des programmes spécialisés pour votre
société ou votre établissement (pour, par exemple, gérer les connexions ou facturer
l’utilisation des ressources). Vous pouvez même être un développeur Mac chevronné,
basculant dans le merveilleux nouveau monde de Mac OS X, où l’installation des
programmes a lieu via des scripts shell. Qui que vous soyez, si vous souhaitez savoir
comment écrire des scripts shell, ce livre est fait pour vous. Vous y apprendrez :

Les concepts et les principes des outils logiciels


Un certain nombre de principes guident la conception et l’implémentation des
bons outils logiciels. Nous vous les expliquerons et nous vous les montrerons tout
au long de ce livre.

Ce que sont les outils Unix


Lorsque l’on écrit des scripts shell, on utilise constamment un ensemble fonda-
mental d’outils essentiels. Nous décrirons les bases du shell et des expressions régu-
lières et nous présenterons chaque outil essentiel dans le contexte d’un type de
problème particulier. En plus d’expliquer ce que font chacun de ces outils, nous
vous montrerons pourquoi chacun d’eux existe et pourquoi on lui a attribué ces
options.
Du côté des livres, Introduction à Unix est une introduction aux systèmes Unix,
permettant d’élever un lecteur ne connaissant pas Unix au rang d’utilisateur de
base. Unix in a Nutshell, à l’opposé, présente tout l’éventail des utilitaires Unix avec
peu, voire pas du tout, d’explications sur le contexte d’utilisation d’un outil particu-
lier. Notre but est de dresser un pont entre ces deux livres : nous vous apprendrons
comment exploiter les fonctionnalités que vous offre votre système Unix pour
effectuer rapidement vos travaux de façon efficace et, nous l’espérons, élégante.

Comment combiner les outils pour effectuer vos travaux


Avec les scripts shell, l’expression « le tout est supérieur à la somme de ses parties »
prend tout son sens. En utilisant le shell comme un « ciment » pour associer les
différents outils, vous pouvez accomplir des choses étonnantes moyennant peu
d’efforts.
Notre public xiii

Les extensions les plus connues des outils standard


Si vous utilisez un système GNU/Linux ou BSD, il est fort probable que vos outils
disposent de fonctionnalités et/ou d’options supplémentaires, que nous vous
présenterons également.

Les outils non standard mais indispensables


Certains programmes ne sont pas « standard » sur la plupart des Unix tradition-
nels, mais sont trop utiles pour s’en passer. Lorsque cela sera nécessaire, nous les
présenterons aussi en expliquant comment les obtenir.
Pour les développeurs et les administrateurs Unix chevronnés, la philosophie des outils
logiciels n’est pas nouvelle. Cependant, les livres qui l’ont popularisée, bien qu’ils méri-
tent toujours d’être lus, datent tous d’au moins 20 ans ! Depuis leur parution, les
systèmes Unix ont évolué dans un grand nombre de domaines. Nous pensons donc qu’il
est temps de publier une présentation actualisée de ces idées, en utilisant les versions
modernes des outils et des systèmes pour nos exemples. Voici les points forts de notre
approche :
• Notre présentation repose sur POSIX, qui regroupe une série de normes for-
melles décrivant un environnement de système d’exploitation standard, que ce
soit au niveau de la programmation (C, C++, Ada, Fortran) ou au niveau du
shell et des utilitaires. Les normes POSIX ont largement réussi à fournir aux
développeurs un moyen de créer des programmes et des scripts shells portables
entre un grand nombre de systèmes différents. Nous présentons le langage shell
et chaque outil avec ses options les plus utiles, tels qu’ils sont définis dans la der-
nière norme POSIX.
• Le nom officiel de la norme est IEEE Std. 1003.1-20013. Cette norme est divisée
en plusieurs parties facultatives, dont les plus importantes sont les spécifications
X/Open System Interface (XSI). Ces fonctionnalités documentent un ensemble
plus complet de comportements historiques d’Unix.
• Lorsque cela sera important, nous noterons les différences entre la norme
actuelle et la norme de 1992 et nous mentionnerons également les fonctionnali-
tés liées à XSI. Le site http://www.unix.org/ 4 est un bon point de départ pour
prendre connaissance des normes Unix.
• La page d’accueil de Single UNIX Specification est http://www.unix.org/version3/.
Vous pouvez avoir accès à la norme en cours à condition de vous être inscrit sur
la page http://www.unix.org/version3/online.html.
• Par endroits, la norme indique qu’un comportement particulier est « non
spécifié ». Cela permet aux éditeurs de systèmes d’implémenter des comporte-
ments historiques sous la forme d’extensions, c’est-à-dire comme des fonctionna-
lités supplémentaires allant au-delà de celles qui sont documentées dans la
norme.

3. Une version 2004 de la norme a été publiée après la finalisation de ce livre, mais les différences par
rapport à l’édition 2001 ne concernent pas l’écriture des scripts shell.
4. Vous trouverez une Foire Aux Questions (FAQ) concernant IEEE Std. 1003.1-2001 sur la page http://
www.opengroup.org/austin/papers/posix_faq.html. La page http://www.opengroup.org/austin/papers/bac-
kgrounder.html contient quelques fondements de la norme.
xiv Préface

• Nous ne nous contenterons pas de vous expliquer comment exécuter un pro-


gramme particulier : nous insisterons sur la raison pour laquelle ce programme
existe et sur les problèmes qu’il résoud. Savoir pourquoi un programme a été
écrit aide à mieux comprendre quand et comment l’utiliser.
• Beaucoup de programmes Unix ont un nombre impressionnant d’options.
Généralement, certaines d’entre elles sont plus utiles que d’autres pour les
tâches quotidiennes : nous vous les indiquerons pour chacun des programmes.
En fait, nous ne présenterons généralement pas toutes les options de chaque
programme, laissant cette tâche à la page du manuel du programme ou à
d’autres ouvrages de référence, comme Unix in a Nutshell (O’Reilly) et Linux en
concentré (O’Reilly).
Lorsque vous aurez fini ce livre, vous aurez non seulement compris les outils Unix, mais
vous aurez également intégré l’esprit d’Unix et la philosophie des outils logiciels.

Prérequis
Vous devriez déjà savoir :
• vous connecter à votre système Unix ;
• lancer des programmes à partir de la ligne de commande ;
• créer des enchaînements simples de commandes et utiliser des redirecteurs sim-
ples d’entrées/sorties, comme < et > ;
• placer des travaux à l’arrière-plan avec & ;
• créer et modifier des fichiers ;
• rendre les scripts exécutables avec chmod.
En outre, si vous comptez essayer les exemples que nous donnons en tapant les
commandes sur votre terminal (ou, plus probablement, dans un émulateur de
terminal), nous vous conseillons d’utiliser un shell POSIX, comme une version récente
de ksh93 bash ou zsh. Attention, le /bin/sh des systèmes Unix commerciaux peut ne pas
être totalement conforme à POSIX.
Vous trouverez au chapitre 14 les URL permettant de télécharger ksh93, bash et zsh.

Plan de l’ouvrage
Nous conseillons de lire ce livre dans l’ordre, car chaque chapitre repose sur les concepts
et les explications donnés dans les chapitres qui le précèdent. Voici les résumés de
chaque chapitre :

Chapitre 1, Fondements
Nous dresserons un bref historique d’Unix et nous présenterons notamment l’envi-
ronnement informatique des laboratoires Bell, où Unix a été conçu, qui a motivé
l’essentiel de la philosophie des outils logiciels. Dans ce chapitre, nous présenterons
également les principes que doit respecter un bon outil logiciel et qui sont ensuite
développés tout au long de ce livre.
Plan de l’ouvrage xv

Chapitre 2, Introduction
Ce chapitre marque le début de notre exposé. Nous commencerons par décrire les
langages compilés et les langages de scripts, avec leurs différences. Puis, nous
présenterons les bases minimales de l’écriture des scripts shell à l’aide de deux
scripts simples mais utiles. Cette présentation comprend les commandes, les
options, les paramètres, les variables du shell, l’affichage avec echo et printf, les
redirections d’entrées/sorties de base, la recherche des commandes, l’accès aux para-
mètres à partir d’un script et la trace d’exécution d’un script. Nous concluerons ce
chapitre en étudiant l’internationalisation et la localisation, problèmes prenant
une part croissante dans le « village global » actuel.
Chapitre 3, Recherches et substitutions
Dans ce chapitre, nous introduirons la recherche de texte à l’aide des expressions
régulières. Nous expliquerons également comment modifier et extraire du texte.
Ces opérations fondamentales forment la base de nombreux scripts shell.
Chapitre 4, Outils pour traiter le texte
Nous y décrirons un certain nombre d’outils de traitement du texte utilisés cons-
tamment dans les scripts. Deux des outils les plus importants présentés ici sont sort
et uniq, qui permettent d’organiser les données et de réduire leur volume. Nous
étudierons également comment reformater des paragraphes, compter des unités
textuelles, imprimer des fichiers et récupérer les premières ou les dernières lignes
d’un fichier.
Chapitre 5, De la puissance des pipes
Dans ce chapitre, nous présenterons plusieurs petits scripts démontrant comment
la combinaison d’utilitaires simples permet d’obtenir des traitements puissants et,
ce qui est important, plus souples d’emploi. Ce chapitre est essentiellement un
recueil de problèmes et de leurs solutions. Son thème directeur est que toutes ces
solutions sont formées d’enchaînements de commandes.
Chapitre 6, Variables, structures conditionnelles et boucles
Dans ce chapitre, nous aborderons le reste du langage shell. Dans celui-ci, nous
étudierons les variables et l’arithmétique du shell, le concept important de code de
retour et comment prendre des décisions et répéter des traitements. Nous termine-
rons par une présentation des fonctions shell.
Chapitre 7, Entrées, sorties, fichiers et évaluation des commandes
Ce chapitre termine la description du shell en s’intéressant aux entrées/sorties, aux
différentes substitutions effectuées par le shell, à l’utilisation des apostrophes
simples et doubles, à l’ordre d’évaluation de la ligne de commande et aux
commandes internes du shell.
Chapitre 8, Scripts en production
Nous présenterons des combinaisons d’outils Unix permettant de créer des traite-
ments textuels plus complexes. Les programmes de ce chapitre sont plus longs que
ceux du chapitre 5, mais encore suffisamment courts pour être compris en quelques
minutes. Pourtant, ils accomplissent des tâches qu’il serait très difficile de réaliser
avec des langages conventionnels comme C, C++ ou Java+.
xvi Préface

Chapitre 9, Présentation de awk


Dans ce chapitre, nous décrirons l’essentiel du langage awk. C’est un langage puis-
sant et des programmes awk simples, ou moins simples, peuvent être utilisés avec
d’autres programmes de la boîte à outils logicielle pour extraire, manipuler et
formater aisément des données.

Chapitre 10, Les fichiers


Nous présenterons les outils de base permettant de manipuler les fichiers. Cela
recouvre l’énumération des fichiers, la création de fichiers temporaires, ainsi que la
commande find, qui permet de trouver des fichiers correspondant à des critères
spécifiques. Nous étudierons également deux commandes importantes permettant
de gérer l’occupation disque, puis différents programmes de comparaisons de
fichiers.

Chapitre 11, Fusionner de bases de données utilisateurs


Nous lierons tout ce que nous avons appris en résolvant un problème intéressant et
moyennement complexe.

Chapitre 12, Vérification orthographique


Dans ce chapitre, nous utiliserons le problème de la vérification orthographique
pour montrer comment le résoudre de différentes façons. Nous présenterons
l’enchaînement classique du shell, ainsi que deux petits scripts qui facilitent l’utili-
sation des commandes ispell et aspell dans les vérifications par lots. Nous termi-
nerons par un programme de vérification orthographique de taille raisonnable,
mais puissant, écrit en awk, qui démontre bien l’élégance de ce langage.

Chapitre 13, Processus


Nous passerons du royaume du traitement des textes à celui de la gestion des tâches
et du système en présentant les utilitaires dédiés à la gestion des processus. Dans ce
chapitre, nous présenterons également la commande sleep qui permet aux scripts
d’attendre qu’un événement survienne, ainsi que les d’autres outils permettant de
différer l’exécution d’une commande ou de la lancer à un instant précis. Enfin,
nous décrirons la commande trap, qui permet de contrôler les signaux Unix depuis
un script shell.

Chapitre 14, Portabilité du shell et extensions


Dans ce chapitre, nous décrirons quelques unes des extensions les plus utiles, dispo-
nibles à la fois dans ksh et bash mais qui ne sont pas POSIX. Dans de nombreux cas,
vous pourrez les utiliser sans problème dans vos scripts. Nous étudions également
un certain nombres de pièges qui menacent les auteurs de scripts ; cela couvre à la
fois l’écriture des scripts et les éventuelles variations des implémentations. En
outre, nous expliquerons comment télécharger et installer ksh et bash. Enfin, nous
concluerons en expliquant les phases d’initialisation et de terminaison du shell, qui
varient selon les différentes implémentations.

Chapitre 15, Introduction aux scripts shell sécurisés


Ce chapitre est consacré aux problèmes de sécurité liés aux scripts shell.
Conventions utilisées xvii

Annexe A, Écrire des pages de manuel


Dans cette annexe, nous expliquerons comment écrire une page de manuel. C’est
une compétence utile, pourtant négligée dans les ouvrages sur Unix.
Annexe B, Fichiers et systèmes de fichiers
Nous décrirons le modèle du système de fichiers par flots d’octets d’Unix en le
comparant aux autres systèmes de fichiers historiques, plus complexes, et en expli-
quant pourquoi cette simplicité est une vertu.
Annexe C, Commandes Unix importantes
Dans cette annexe, nous fournirons plusieurs listes de commandes Unix. Nous vous
conseillons d’apprendre ces commandes et leurs effets afin d’accroître encore vos
compétences de développeur Unix.
Bibliographie
Vous y trouverez une liste de sources d’informations supplémentaires concernant
l’écriture de scripts shell sous Unix.
Glossaire
Le glossaire donnera les définitions des termes et des concepts importants présentés
dans ce livre.

Conventions utilisées
Il est sous-entendu qu’après avoir saisi au clavier une commande shell, vous pressiez la
touche Entrée. Sur certains claviers, rien n’est écrit sur la touche Entrée : quoi qu’il en
soit, c’est la grosse touche située à droite.
Les caractères désignés par Ctrl-X, où X est une lettre quelconque, sont saisis en pressant
la touche Ctrl (ou Ctl, ou Control) puis en pressant la touche correspondant à la lettre
indiquée. Bien que nous indiquions cette lettre en majuscule, vous pouvez la presser
sans utiliser la touche Majuscule.
Les autres caractères spéciaux sont le caractère de nouvelle ligne (qui est identique à
Ctrl-J), le Backspace (qui est identique à Ctrl-H), Esc, Tab et Suppr (parfois désigné par
Del, Delete ou Rubout).
Nous utilisons différentes polices dans ce livre :
Italique
Nous utilisons l’italique pour mettre en évidence des termes spéciaux lorsqu’ils
apparaissent pour la première fois, pour les adresses de courrier électronique et les
URL. Nous l’employons également lorsque nous citons les pages du manuel et
pour indiquer des paramètres formels qui devront être remplacés par des valeurs
réelles. Les commentaires des exemples sont également en italique.
Châsse fixe
Cette police indique les noms de fichiers Unix, les commandes internes et externes,
ainsi que les options de ces commandes. Elle sert également à faire ressortir les
noms de variables, les mots-clés du shell, les options, les noms de fonctions, les
suffixes des noms de fichiers. Dans les exemples, le contenu des fichiers ou la sortie
xviii Préface

des commandes sont en châsse fixe, tout comme les lignes de commande ou les
exemples de saisie lorsqu’ils apparaissent dans du texte normal. En résumé, tout ce
qui est lié à l’utilisation de l’ordinateur est dans cette police.
Châsse fixe grasse
Nous l’utilisons dans le texte pour faire ressortir les expressions régulières et les
motifs du shell par rapport au texte à comparer. Nous l’employons également dans
les exemples afin de montrer les interactions entre l’utilisateur et le shell. Tout ce
que tape l’utilisateur sera dans cette police. Par exemple :
$ pwd L'utilisateur a tapé ça
/home/tolstoy/novels/w+p Le système a affiché ça
$

Châsse fixe en italique


Nous utilisons cette police dans le texte et les lignes de commande pour indiquer
des paramètres formels qui devront être remplacés par des valeurs réelles. Par
exemple :
$ cd répertoire

Cette icône signale un conseil, une suggestion ou une remarque


d’ordre général.

Cette image vous met en garde.

Les références aux pages de manuel Unix sont représentées selon le style standard :
nom(N), où nom est le nom de la commande et N est le numéro de la section (générale-
ment 1) dans laquelle se trouve l’information. grep(1), par exemple, désigne la page de
manuel de la commande grep située dans la section 1. La documentation de référence
est désignée sous le terme « page de manuel » ou, de façon abrégée, « manpage ».
Nous désignons les appels systèmes Unix et les appels de fonctions de la bibliothèque C
sous la forme open(), printf(). Le manuel Unix est découpé en sections : la section 1
concerne les commandes utilisateur, la section 2 les appels système et la section 3 les
fonctions de la bibliothèque C (il y a d’autres sections, mais elles ne nous concernent
pas ici). Le problème est que certaines commandes utilisateur portent le même nom
que certains appels système ou que certaines fonctions C : c’est justement le cas de
printf, qui est à la fois une commande shell et une fonction C (pour différencier les
pages de manuel, on note printf(1) et printf(3)). C’est aussi le cas de open sur Mac OS
X car c’est à la fois une commande utilisateur (open(1)) et un appel système (open(2)).
La commande man, par défaut, recherche d’abord dans les pages de la section 1, puis de
la section 2, puis de la section 3, etc. par conséquent, lorsqu’il y a ambiguîté, vous devez
préciser la section qui vous intéresse :
$ man 2 open Visualise la page de open(2)
$ man 3 printf visualise la page de printf(3)
Lorsque l’on introduit une nouvelle commande, un encadré comme ci-dessous décrit
l’outil, ses options principales, son utilisation et son but.
Le code xix

Exemple
Utilisation
prog [ options ... ] [ paramètres ... ]
Cette section montre comment lancer la commande, qui s’appelle ici prog.
Objectif
Cette section décrit pourquoi ce programme existe.
Options principales
Cette section énumère les options utiles pour une utilisation classique du
programme concerné.
Comportement
Cette section résume ce que fait le programme.
Avertissements
S’il y a un point à surveiller, il est mentionné ici.

Le code
Ce livre est rempli d’exemples de commandes shell et de programmes conçus pour être
utilisés quotidiennement par un utilisateur ou un programmeur : ils ne servent pas
uniquement à illustrer la fonctionnalité que l’on décrit. Nous vous encourageons forte-
ment à les modifier et à les améliorer.
Le code de ce livre est couvert par les termes de la licence publique générale de GNU
(GPL), qui autorise la copie, la réutilisation et la modification des programmes.
Consultez le fichier COPYING inclus avec les exemples pour connaître les termes exacts de
cette licence.
Le code des exemples est disponible sur le site web de ce livre : http://www.oreilly.fr/cata-
logue/2841773752.html.
Si vous utilisez le code de ces exemples, nous apprécierions, bien que nous ne l’exigions
pas, que vous mentionniez le titre, les auteurs, l’éditeur et l’ISBN de ce livre. Par
exemple : Introduction aux scripts shell, de Arnold Robbins et Nelson H.F. Beebe. Copy-
right 2005 O’Reilly Media, Inc., 0-596-00595-4. »

Outils Unix pour les systèmes Windows


N’ombreux sont les programmeurs qui, ayant débuté avec des systèmes Unix et étant
passés ensuite dans le monde Windows, ont recherché un environnement à la Unix
(notamment lorsqu’ils ont eu à faire face à l’horrible ligne de commande de MS-DOS !).
Il n’est donc pas surprenant d’apprendre qu’il existe de nombreuses interfaces de type
shell Unix pour les systèmes Windows.
Au cours des dernières années sont apparus, non plus simplement des clones du shell,
mais des environnements Unix complets. Deux d’entre eux utilisent bash et ksh93,
tandis qu’un autre fournit sa propre implémentation du shell. Dans cette section, nous
xx Préface

décrirons chacun de ces environnements (dans l’ordre alphabétique) et nous vous indi-
querons comment les télécharger sur Internet.

Cygwin
L’environnement cygwin a été créé par Cygnus Consulting (maintenant racheté par Red
Hat). En développant d’abord cgywin.dll, une bibliothèque partagée fournissant une
émulation des appels systèmes Unix, cette société a pu porter un grand nombre d’utili-
taires GNU sur les différentes versions de Microsoft Windows. Cette émulation
comprend une couche réseau TCP/IP dotée de l’API des sockets de Berkeley. Bien que
cet environnement puisse parfaitement fonctionner avec Windows 95/98/ME, il prend
tout son intérêt avec Windows/NT, Windows 2000 et Windows XP.
L’environnement cygwin utilise le shell bash, le compilateur GCC et les autres utilitaires
GNU pour former une boîte à outils Unix. Une commande mount sophistiquée permet
d’établir une correspondance entre la notation C:\chemin de Windows et les noms de
fichiers Unix.
Le point de départ du projet cygwin est la page http://www.cygwin.com/. La première
chose à télécharger est le programme d’installation : en le lançant, vous choisissez les
paquetages supplémentaires que vous souhaitez installer. Cette installation repose
entièrement sur Internet : il n’existe pas de CD officiels de cygwin, en tous cas créés par
les responsables du projet.

DJGPP
La suite DJGPP fournit des outils GNU compilés en 32 bits pour l’environnement MS-
DOS. Pour citer la page web :
DJGPP est un système de développement 32 bits complet C/C++ pour les PC Intel 80386 (et supé-
rieur) tournant sous MS-DOS. Il contien des portages de nombreux utilitaires de développement
GNU. Les outils de développement, ainsi que les programmes qu’ils produisent exigent au mini-
mum un 80386. Dans la plupart des cas, les programmes produits peuvent être vendus librement et
sans devoir de royalties.
Le nom de cette suite provient des initiales de D.J. Delorie, qui a porté le compilateur
C++ de GNU, g++, sur MS-DOS, et des initiales de g++, GPP. Elle a évolué pour devenir
un environnement Unix complet, au-dessus de MS-DOS, doté de tous les outils GNU et
du shell bash. À la différence de cygwin ou d’UWIN (voir plus bas), vous n’avez pas
besoin de Windows : un processeur 32 bits et MS-DOS suffisent (bien que vous puissiez
évidemment utiliser DJGPP dans une fenêtre MS-DOS de Windows).
Le site web de cette suite est http://www.delorie.com/djgpp/.