# Ed (editor de text)

ed és un editor de línia pel sistema operatiu Unix. Va ser una de les primeres parts a ser desenvolupades en el sistema operatiu Unix, a l'agost de 1969. És part dels estàndards per a sistemes operatius basats en Unix POSIX i Open Group, juntament amb editors de pantalla completa més sofisticats, com vi.

## Història i influència

L'editor de text ed va ser un del primers tres elements claus del sistema operatiu Unix —ensamblador, editor i intèrpret d'ordres—desenvolupat per Ken Thompson a l'Agost de 1969 en un PDP-7 als Laboratoris de Bell de l'AT&T. Moltes característiques d'ed van provenir de l'editor de text qed, editor de text desenvolupat a l'alma mater de Thompson, la Universitat de Califòrnia a Berkeley. Thompson estava molt familiaritzat amb qed, i ja l'havia re-implementat en els sistemes CTSS i Multics. Les versions de Thompson de qed van ser notòries per ser les primeres en implementar expressions regulars. L'editor ed també implementa expressions regulars però són considerablement menys generals que en qed.
Dennis M. Ritchie va produir el que Doug McIlroy més tard va descriure com l'ed "definitiu", i alguns aspectes d'ed van acabar influenciant ex, que al seu torn va fer possible vi. La comanda no-interactiva de Unix grep va ser inspirat en un dels usos especials més comuns de qed i més tard d'ed, on l'ordre g/re/p significa buscar globalment l'expressió regular re i imprimir les línies que el contenen. L'editor de corrent de Unix sed va implementar moltes de les característiques de script de qed que no van ser suportades per ed en Unix. Al seu torn, sed va influir en el disseny del llenguatge de programació AWK – que va inspirar aspectes de Perl.

## Característiques

Característiques de ed inclou:
* Disponible en qualsevol sistema Unix (i obligatori en els sistemes que s'adapten a la Single Unix Specification).
* Un editor modal que dona suport al mode de comandes, mode de text i mode de visualització.
* Suport d'expressions regulars.
* Suport d'execució de comandes a través de l'entrada estàndard.
Famós per la seva inflexibilitat, ed no dona gairebé cap informació visual, i ha estat definit (per Peter H. Salus) "L'editor de text més hostil a usuaris", fins i tot en comparació al contemporani (i notòriament complex) TECO.[1] Per exemple, el missatge que ed produeix en cas d'error, o quan es vol assegurar de que l'usuari vol sortir del programa sense salvar és "?". No informa ni del fitxer actual ni de la línia actual, ni tan sols mostra els resultats d'un canvi en el text, tret que es demani expressament. Versions més antigues (al voltant del 1981) ni tan sols demanaven confirmació quan l'usuari premia la comanda de sortir sense que hagués guardat els canvis. Aquesta inflexibilitat era necessària en les primeres versions de Unix, on les consoles eren teletips, els mòdems eren lents i la memòria era un recurs preuat. A mesura de que la tecnologia millorava i aquestes restriccions es feien menys necessàries, els editors amb més informació visual van esdevenir la norma.
Actualment, ed és rarament utilitzat interactivament, però s'utilitza encara en alguns scripts de línia d'ordres. Per a ús interactiu, ed va ser aparcat a favor d'altres editors com sam, vi i Emacs durant la dècada dels 80. Encara avui en dia es pot trobar ed en qualsevol versió de Unix o Linux i, per tant, pot ser útil per a persones que han de treballar amb múltiples versions de Unix. Degut a això, en alguns sistemes basats en Unix utilitats com SQL *Plus criden a ed si les variables d'entorn EDITOR o VISUAL no han estat definides. A més, quan alguna cosa va malament, ed és a vegades l'únic editor disponible. Aquesta és potser la raó principal per a la que s'utilitza ed interactivament avui en dia.
Les comandes d'ed són sovint imitades en altres editors de línia. Per exemple, EDLIN en les primeres versions de MS-DOS i versions de 32-bit de Windows NT té una sintaxi bastant similar, i molts editors de text en molts MUDs (LPMud i descendents, per exemple) utilitzen una sintaxi similar a ed. Aquests editors, tanmateix, tenen unes funcionalitats més limitades.

## Exemple

Aquí es presenta un exemple de transcripció d'una sessió d'ed. Per claredat, les ordres i el text escrits per l'usuari s'escriuen en lletra normal, i la sortida d'ed està emfatitzada (amb signes de dòlar representant salts de línia també per claredat).
El resultat de final és un arxiu de text contenint el text següent:
Començant amb un arxiu buit, la comanda a afegeix text (totes les ordres d'ed són d'un sol caràcter). La comanda posa a ed dins del mode d'inserció, inserint els caràcters que segueixen; i acaba quan l'usuari introdueix un sol punt en una línia. Les dues línies que s'introdueixen abans del punt s'afegeixen a la memòria intermèdia del fitxer. La comanda 2i també fa entrar a ed en mode d'inserció, i inserirà el text entrat (una línia buida en el nostre cas) abans de la línia dos. Totes les ordres poden ser prefixades per un número de línia per operar en aquella línia.
La línia ,l (L minúscula) demana a ed llistar totes les línies. La comanda comença per un interval, en el qual , és una drecera de 1,$. Una interval consisteix en dos números de línia separades per una coma ($ significa final de línia). Amb això, ed llista totes les línies des del principi fins al final.
Una vegada inserim una línia buida a la línia 2, la línia que diu "Aquesta és la segona línia." es converteix en la tercera línia. Aquest error es corregeix amb 3s/segona/tercera/, que és una comanda de substitució. El 3 indica el número de línia a canviar, després s'indica quin text es vol canviar, i finalment s'escriu la seva substitució. Llistant totes les línies amb ,l ens donarà ara el resultat desitjat.
w fitxer escriu el buffer a l'arxiu "fitxer", amb el qual ed escriu 65, que són el nombre de bytes escrits. La comanda q finalitza la sessió d'ed.

## ed com a influenciador

La influència d'ed en utilitats de Unix són notables. Més generalment, ed continua servir com un model d'interfície per programes que han de modificar seqüències de fitxers i per les quals el component de scripts és extremadament important, fins i tot quan els fitxers tenen poca semblança amb les línies de text manipulades per ed.

## Referències

* ↑ Salus, Peter H. The Daemon, the Gnu and the Penguin. Groklaw, 2005.
* ↑ ed – Commands & Utilities Reference, The Single UNIX® Specification, Issue 7 from The Open Group
* ↑ The Peter H. Salus, Daemon, the Gnu and the Penguin.
* ↑ D. M. Ritchie and K. L. Thompson, "QED Text Editor", MM-70-1373-3 Arxivat 2015-02-03 at Archive-It (June 1970), reprinted as "QED Text Editor Reference Manual", MHCC-004, Murray Hill Computing, Bell Laboratories (October 1972).
* ↑ McIlroy, M. D. (1987).
* 1 2 Donald A. Norman «The truth about UNIX». Datamation, 1981.
* ↑ Administering SQL*Plus. https://docs.oracle.com/cd/E11882_01/server.112/e10839/admn_sqlpls.htm#UNXAR166 Accessed 7/23/2016.

## Vegeu també

* vi
* sed

## Enllaços externs

* ed: editor de text – Referència de Comandes i Utilitats, The Single UNIX® Specification, Número 7 de The Open Group
* A History of UNIX before Berkeley secció 3.1 descriu la història d'ed