ed (logiciel)
ed est un éditeur de texte ligne par ligne pour systèmes Unix. Ce n'est pas un éditeur de texte visuel dans le sens où il ne montre pas le texte en cours d'édition : on ne peut afficher une ligne (ou un groupe de lignes) qu'après l'avoir modifiée. L'interface de ce logiciel est entièrement textuelle : elle ne nécessite qu'un clavier à 53 touches.
Créateur | Ken Thompson |
---|---|
Développé par | Laboratoires Bell |
Première version | |
Système d'exploitation | Unix |
Type |
Utilitaire UNIX (d) Éditeur ligne par ligne |
Historique
modifiered
a été écrit à l'origine par Ken Thompson[1],[2]. Il y a implémenté pour la première fois les expressions rationnelles formalisées par Kleene[3]. Avant cette implémentation, le concept des expressions rationnelles n'était formalisé que dans des publications mathématiques, que Ken Thompson avait lues.
ed a été influencé par un précédent éditeur de l'université de Berkeley, Californie (dans laquelle Ken Thompson a été diplômé), appelé QED[4]. ed a par la suite influencé l'éditeur ex, qui à son tour a conduit à vi. Les commandes Unix non-interactives grep et sed ont été inspirées par certaines utilisations spécifiques mais habituelles de ed. Leur influence est visible dans la conception de langages de programmation tels que awk, qui a lui-même inspiré certains aspects de Perl.
Connu pour son laconisme, ed ne propose pratiquement aucun retour visuel. Par exemple, le message produit lors d'une erreur, ou quand ed veut s'assurer que vous voulez quitter sans enregistrer, est "?". Il n'indique pas le nom du fichier en cours d'édition ou le numéro de la ligne, et ne montre pas le texte résultant d'une modification, à moins d'une demande explicite. Cette pauvreté était tout à fait adaptée aux premières versions d'Unix, quand les consoles étaient des télétypes, les modems étaient lents et les disques durs et RAM étaient onéreux. Mais cet avantage a cessé lorsque les éditeurs interactifs sont devenus la norme.
À présent, ed est rarement utilisé : il a laissé la place aux éditeurs sam, vi et emacs dans les années 1980. Ses commandes ne subsistent pour l'essentiel que dans le filtre-éditeur sed, dans les scripts. ed est disponible sur pratiquement toutes les versions d'Unix et de GNU/Linux. Les personnes qui travaillent avec différentes versions d'Unix connaissent souvent les commandes les plus basiques de ed. En cas de problème, et si le système d'exploitation n'est pas au mieux, ed est le seul éditeur fonctionnel[2]. C'est probablement le seul cas où ed est encore utilisé de manière interactive, à l'exception peut-être des travaux dirigés des étudiants de première année.
Mais les commandes ed sont fréquemment imitées dans les autres éditeurs travaillant ligne par ligne. Par exemple, EDLIN, disponible dans les premières versions de MS-DOS, possède une syntaxe similaire[5], et les éditeurs de texte de nombreux MUD (LPMud et ses descendants par exemple) utilisent une syntaxe semblable à celle de ed. Toutefois, la majorité de ces éditeurs sont limités fonctionnellement.
Une version restreinte appelée red (de l'anglais « restricted ed ») peut seulement modifier les fichiers du répertoire courant et ne peut exécuter aucune commande shell.
Exemple de session interactive
modifierAfin d'illustrer le principe de fonctionnement, voici la transcription d'une session ed. Les caractères gras sont ceux produits par ed, les autres caractères ont été tapés par l'utilisateur :
a ed est l'editeur standard Unix. Voici la ligne numero deux. . 2i . 1,$l ed est l'editeur standard Unix.$ $ Voici la ligne numero deux.$ 3s/deux/trois/ 1,$l ed est l'editeur standard Unix.$ $ Voici la ligne numero trois.$ w texte 65 q
Le résultat est un fichier texte contenant le texte suivant :
ed est l'editeur standard Unix. Voici la ligne numero trois.
Explication de l'exemple
modifierCette session débute avec un fichier vide. La commande a
ajoute du texte (toutes les commandes de ed sont composées d'une seule lettre). Cette commande place l'éditeur en mode insertion, qui ne prendra fin qu'avec un point saisi seul sur une ligne. Ainsi, les deux lignes saisies avant le point isolé sont dans le tampon du fichier. La commande 2i
passe en mode insertion et permet d'insérer du texte (une seule ligne dans cet exemple) avant la ligne numéro 2. Chaque commande peut être préfixée par un numéro de ligne, ce qui la fait agir sur cette ligne.
Dans la commande 1,$l
, le l
représente la commande list. Cette commande a été préfixée par une plage de lignes, c'est-à-dire deux numéros de ligne séparés par une virgule ($
représente la dernière ligne). En retour, ed donne la liste des toutes les lignes, de la première à la dernière. Ces lignes prennent fin avec le symbole $, afin que les espaces situés en fin de ligne soient visibles.
La commande 3s/deux/trois/
est une commande de substitution (s
) appliquée sur la ligne numéro 3. La commande est ensuite composée du texte à remplacer (deux
) et du texte à mettre à sa place (trois
). Puis les lignes sont à nouveau affichées avec la commande 1,$l
, afin de s'assurer que la substitution a bien été effectuée.
La commande w texte
écrit le contenu du tampon dans le fichier "texte". ed répond alors 65, qui correspond au nombre de caractères qu'il a écrit dans le fichier. q
indique à ed que la session prend fin.
Bill Joy, vi, et ed
modifierDans la guerre des éditeurs, les partisans d'emacs disaient que "Même Bill Joy n'utilise plus vi."
Dans une entrevue de 1985, Bill Joy expliquait que, chez Sun, il utilisait un nouveau programme de publication, appelé interleaf. Lors de visites hors de laboratoires de Sun, il utilisait le bon vieux ed. Malgré l'omniprésence de vi, il ne parvenait jamais à trouver une version qui fonctionne de la manière dont il voulait. Comme ed n'a jamais été modifié, il pouvait compter sur lui pour travailler, sans passer pour un débutant.
Implémentations
modifierGNU ed
modifierGNU ed[6] est l'implémentation de l'éditeur ed par le projet GNU. C'est un logiciel libre distribué sous licence GNU GPL. Il est utilisé comme l'original UNIX pour créer, afficher, modifier et manipuler des fichiers textes, de manière interactive ou via des scripts shell. Le projet est maintenu depuis la fin des années 2000 par Antonio Diaz, le mainteneur de ddrescue.
Notes et références
modifier- Bruno Michel, « Les vrais développeurs utilisent ed! », sur Linuxfr.org, (consulté le )
- Brian Kernighan et Rob Pike, L’environnement de programmation UNIX, InterEditions, (ISBN 2729601309), annexe 1.
- (en) Ryan Velasco, Regular Expressions In Your Pocket, North Charleston (Caroline du sud), CreateSpace, , 94 p. (ISBN 978-1-5455-5009-0)
- (en) Shaels, « ED Utility », sur MICRO VIBE,
- (en) Bryan Lunduke, « Quick and Dirty: The story of 86-DOS & MS-DOS », The Lunduke Journal of Technology, (lire en ligne)
- (en) « GNU ed », sur directory.fsf.org, FSF,
Voir aussi
modifierArticles connexes
modifierLiens externes
modifier- (en) Manuel officiel de GNU ed
- (en) Page de manuel de ed (man page)
- (en) Unix Editors
- (en) Humour à propos de ed
- (en) Ed feuille de triche