Autor(es) original(es) | Ken Thompson |
---|---|
Desarrollador(es) | Laboratorios Bell de AT&T |
Lanzamiento inicial | 1973, hace 50-51 años |
Escrito en | do |
Sistema operativo | Unix , similar a Unix , Plan 9 |
Plataforma | Multiplataforma |
Tipo | Editor de texto |
Licencia | Plan 9: Licencia MIT |
ed (pronunciado como letras distintas, /ˌiːˈdiː / ) [ 1 ] es un editor de línea parasistemas operativos Unix y similares . Fue una de las primeras partes del sistema operativo Unix que se desarrolló , en agosto de 1969. [2] Sigue siendo parte de los estándares POSIX y Open Group para sistemas operativos basados en Unix, [3] junto con el editor de pantalla completa más sofisticado vi .
El editor de texto ed fue uno de los tres primeros elementos clave del sistema operativo Unix ( ensamblador , editor y shell ) desarrollado por Ken Thompson en agosto de 1969 en un PDP-7 en AT&T Bell Labs . [2] Muchas características de ed provienen del editor de texto qed desarrollado en la Universidad de California, Berkeley, alma mater de Thompson . [4] Thompson estaba muy familiarizado con qed y lo había reimplementado en los sistemas CTSS y Multics . Las versiones de qed de Thompson fueron notables por ser las primeras en implementar expresiones regulares . Las expresiones regulares también se implementan en ed, aunque su implementación es considerablemente menos general que la de qed.
Dennis M. Ritchie produjo lo que Doug McIlroy describió más tarde como el ed "definitivo", [5] y aspectos de ed influyeron en ex , que a su vez generó vi . El comando no interactivo de Unix grep se inspiró en un uso especial común de qed y más tarde de ed, donde el comando g/re/p
realiza una búsqueda global de expresiones regulares e imprime las líneas que contienen las coincidencias. El editor de flujo de Unix, sed, implementó muchas de las características de scripting de qed que no eran compatibles con ed en Unix. [6] [ verificación fallida ] [7]
Las características de ed incluyen:
Famoso por su brevedad, ed, compatible con terminales de teletipo como Teletype Model 33 , casi no da respuesta visual, [8] y ha sido llamado (por Peter H. Salus ) "el editor más hostil al usuario jamás creado", incluso cuando se lo compara con el contemporáneo (y notoriamente complejo) TECO . [2] Por ejemplo, el mensaje que ed producirá en caso de error, y cuando quiera asegurarse de que el usuario desea salir sin guardar, es "?". No informa el nombre del archivo actual o el número de línea, ni siquiera muestra los resultados de un cambio en el texto, a menos que se solicite. Las versiones anteriores (c. 1981) ni siquiera pedían confirmación cuando se emitía un comando de salida sin que el usuario guardara los cambios. [8] Esta brevedad era apropiada en las primeras versiones de Unix, cuando las consolas eran teletipos , los módems eran lentos y la memoria era valiosa. A medida que la tecnología informática mejoró y se relajaron estas restricciones, los editores con más respuesta visual se convirtieron en la norma.
En la práctica actual, ed rara vez se utiliza de forma interactiva, pero sí se utiliza en algunos scripts de shell . Para uso interactivo, ed fue absorbido por los editores sam , vi y Emacs en la década de 1980. ed se puede encontrar en prácticamente todas las versiones de Unix y Linux disponibles y, como tal, es útil para personas que tienen que trabajar con múltiples versiones de Unix. En los sistemas operativos basados en Unix, algunas utilidades como SQL*Plus ejecutan ed como editor si las variables de entorno EDITOR y VISUAL no están definidas. [9] Si algo sale mal, ed es a veces el único editor disponible. Esta es a menudo la única vez que se usa de forma interactiva.
La versión de ed proporcionada por GNU tiene algunos modificadores para mejorar la retroalimentación. El uso ed -v -p:
proporciona un mensaje de aviso simple y permite mensajes de retroalimentación más útiles. [10] El -p
modificador está definido en POSIX desde XPG2 (1987). [3]
Los comandos ed suelen imitarse en otros editores basados en líneas. Por ejemplo, EDLIN en las primeras versiones de MS-DOS y en las versiones de 32 bits de Windows NT tiene una sintaxis algo similar, y los editores de texto de muchos MUD ( LPMud y sus descendientes, por ejemplo) utilizan una sintaxis similar a la de ed. Sin embargo, estos editores suelen tener funciones más limitadas.
A continuación se muestra un ejemplo de transcripción de una sesión de ed. Para mayor claridad, los comandos y el texto escritos por el usuario se muestran en caracteres normales y el resultado de ed se resalta .
aed es el editor de texto estándar de Unix.Esta es la línea número dos..2yo
.,yoed es el editor de texto estándar de Unix.$ $ Esta es la línea número dos.$w texto.txt633s/two/three/
,yoed es el editor de texto estándar de Unix.$ $ Esta es la línea número tres.$w texto.txt65q
El resultado final es un archivo de texto simple text.txt
que contiene el siguiente texto:
ed es el editor de texto estándar de Unix.
Esta es la línea número tres.
El comando comienza con un archivo vacío y a
agrega texto (todos los comandos ed son letras simples). El comando pone a ed en modo de inserción , insertando los caracteres que siguen y termina con un solo punto en una línea. Las dos líneas que se ingresan antes del punto terminan en el búfer del archivo. El 2i
comando también entra en modo de inserción e insertará el texto ingresado (una sola línea vacía en nuestro caso) antes de la línea dos. Todos los comandos pueden tener como prefijo un número de línea para operar en esa línea.
En la línea ,l
, la L minúscula representa el comando list. El comando tiene como prefijo un rango, en este caso ,
que es un atajo para 1,$
. Un rango son dos números de línea separados por una coma ( $
significa la última línea). A cambio, ed enumera todas las líneas, desde la primera hasta la última. Estas líneas terminan con signos de dólar, de modo que el espacio en blanco al final de las líneas sea claramente visible.
Una vez que se inserta la línea vacía en la línea 2, la línea que dice "Esta es la línea número dos" es ahora en realidad la tercera línea. Este error se corrige con , un comando de sustitución. Lo aplicará a la línea correcta; después del comando aparece el texto que se debe reemplazar y luego el reemplazo. Ahora se muestra que la lista de todas las líneas con la línea es correcta.3s/two/three/
3
,l
w text.txt
escribe el buffer en el archivo text.txt
haciendo que ed responda con 65 , la cantidad de caracteres escritos en el archivo. q
finalizará una sesión ed.
El Proyecto GNU tiene numerosos chistes sobre ed alojados en su sitio web. Además, la documentación de glibc señala un código de error llamado ED
errorstr, cuya descripción es simplemente un signo de interrogación, que indica que "el usuario experimentado sabrá qué es lo que está mal". [11]
Un tiempo después surgió la demanda de otro programa de propósito especial, gres, para la sustitución: g/re/s. Lee McMahon se encargó de escribirlo y pronto previó que la familia no tendría fin: g/re/d, g/re/a, etc. A medida que su concepto se fue desarrollando, se convirtió en algo habitual…