Ed (editor de texto)

Compartir Imprimir Citar

ed (pronunciado con letras distintas) es un editor de líneas para sistemas operativos Unix y similares a Unix. Fue una de las primeras partes del sistema operativo Unix que se desarrolló en agosto de 1969. Sigue siendo parte de los estándares POSIX y Open Group para sistemas operativos basados en Unix, junto con el editor de pantalla completa más sofisticado vi.

Historia e influencia

El editor de texto de 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. Muchas características de ed provienen del editor de texto qed desarrollado en la Universidad de California, Berkeley, alma mater de Thompson. Thompson estaba muy familiarizado con qed y lo había vuelto a implementar en los sistemas CTSS y Multics. Las versiones de qed de Thompson fueron notables como las primeras en implementar expresiones regulares. Las expresiones regulares también se implementan en ed, aunque su implementación es considerablemente menos general que en qed.

Dennis M. Ritchie produjo lo que Doug McIlroy describió más tarde como el "definitivo" ed, y los aspectos de ed pasaron a influir en ex, que a su vez generó vi. El comando grep no interactivo de Unix se inspiró en un uso especial común de qed y ed posterior, donde el comando g/re/p significa buscar globalmente la expresión regular re e imprima las líneas que lo contienen. El editor de secuencias de Unix, sed, implementó muchas de las funciones de secuencias de comandos de qed que no eran compatibles con ed en Unix.

Características

Las características de ed incluyen:

(En)famoso por su concisión, ed casi no brinda retroalimentación visual, y ha sido llamado (por Peter H. Salus) "el editor más hostil al usuario jamás creado", incluso cuando se compara con el TECO contemporáneo (y notoriamente complejo). Por ejemplo, el mensaje que ed generará en caso de error, y cuando quiera asegurarse de que el usuario desea salir sin guardar, es "?". No informa el nombre de archivo actual o el número de línea, ni 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. Esta brevedad era apropiada en las primeras versiones de Unix, cuando las consolas eran teletipos, los módems eran lentos y la memoria era preciosa. A medida que mejoró la tecnología informática y se relajaron estas restricciones, los editores con más comentarios visuales se convirtieron en la norma.

El hombre página para Ed

En la práctica actual, ed rara vez se usa de forma interactiva, pero encuentra uso en algunos scripts de shell. Para uso interactivo, ed fue subsumido 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 las personas que tienen que trabajar con múltiples versiones de Unix. En los sistemas operativos basados en Unix, algunas utilidades como SQL*Plus se ejecutan como editor si las variables de entorno EDITOR y VISUAL no están definidas. Si algo sale mal, a veces ed es 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 cambios para mejorar la retroalimentación. El uso de ed -v -p: proporciona un indicador simple y habilita mensajes de retroalimentación más útiles. El interruptor -p está definido en POSIX desde XPG2 (1987).

Los comandos ed a menudo se imitan en otros editores basados en líneas. Por ejemplo, EDLIN en las primeras versiones de MS-DOS y las versiones de 32 bits de Windows NT tiene una sintaxis algo similar, y los editores de texto en muchos MUD (LPMud y descendientes, por ejemplo) usan una sintaxis similar a ed. Estos editores, sin embargo, suelen tener una función más limitada.

Ejemplo

Aquí hay una transcripción de ejemplo de una sesión de educación. Para mayor claridad, los comandos y el texto escrito por el usuario están en formato normal, y la salida de ed está enfatizada.

a
ed es el editor de texto estándar Unix.
Esta es la línea número dos.
.
2i

.
,l
ed es el editor de texto estándar Unix.$$Esta es la línea número dos. $3/dos/tres/
,l
ed es el editor de texto estándar Unix.$$Esta es la línea número tres.$texto
65q

El resultado final es un archivo de texto simple que contiene el siguiente texto:

ed es el editor de texto estándar Unix.

Esta es la línea número tres.

Comenzó con un archivo vacío, el comando a agrega texto (todos los comandos ed son letras individuales). 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 comando 2i 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 el prefijo de un número de línea para operar en esa línea.

En la línea ,l, la L minúscula representa el comando de lista. El comando está precedido por 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, por lo que el espacio en blanco al final de las líneas es 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." ahora es en realidad la tercera línea. Este error se corrige con 3s/two/three/, un comando de sustitución. El 3 lo aplicará a la línea correcta; siguiendo el comando está el texto a ser reemplazado, y luego el reemplazo. Al enumerar todas las líneas con ,l, ahora se muestra que la línea es correcta.

w text escribe el búfer en el archivo "text" haciendo que ed responda con 65, el número de caracteres escritos en el archivo. q terminará una sesión de ed.

Referencias culturales

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 con su descripción (errorstr) simplemente un único signo de interrogación, señalando "el usuario experimentado sabrá qué es lo que está mal."