edlin

FreeDOS EdLin es un editor de texto orientado a líneas libre que replica el uso de un editor privativo del mismo. Verás que guarda ciertas similitudes al editor ed.

EDLIN original fue programado por Tim Paterson en agosto de 1980. Al mismo tiempo de escribirlo, entró en tratativas con Seattle Computer Products para renombrar el sistema QDOS a 86-DOS 0.2. Poco después se licenciaría a Micro-soft, quien licenciaría el uso de todo el paquete bajo la marca MS-DOS.

Compila FreeDOS Edlin

Para poder utilizar EdLin deberás por primera vez compilarlo. Ejecuta este bloque de comandos en la terminal:

mkdir ~/amd64_bin ;
cd /tmp ;
wget https://sourceforge.net/projects/freedos-edlin/files/freedos-edlin/2.23/edlin-2.23.tar.gz ;
tar xvzf edlin-2.23.tar.gz ;
cd /tmp/edlin-2.23/ ;
./configure ;
make ;
cp /tmp/edlin-2.23/edlin ~/amd64_bin ;
rm -r /tmp/edlin-2.23/

Podrás ahora invocar EdLin en si mismo:

edlin fichero.txt

EdLin es un editor modal. Su prompt de órdenes es un caracter *, mientras que el prompt de escritura es un caracter :.

Por convención EdLin opera con bloques de sólo 11 líneas. Puedes utiliza orden ? para ver la ayuda con comandos.

Para comenzar a agregar líneas ingresa la orden a y al recibir su prompt :, comienza a mecanografiar tu línea. Antes de introducirla, podrás borrar y reescribir caracteres. Para introducir la línea en el búfer de EdLin, presiona la tecla intro.

Para cesar el modo de inserción, introduce un . en una línea aislada y volverás al prompt de comandos *.

Para listar las últimas 11 líneas ingresa la orden l, y para listar todas las líneas desde la primera, ingresa 1l.

Podrás guardar el fichero con el comando w fichero.txt. Podrás salir con el comando e.

Recuerda que en UNIX las líneas de texto no necesariamente se limitan a una cantidad de caracteres específico, pueden equivaler a párrafos completos. Este comportamiento es diferente al clásico EdLin de MS-DOS.

Para realizar operaciones más complejas debes emplear la sintaxis de comandos de EdLin.

En esta, asumiento que los valores entre corchetes [] son opcionales,

  1. # es un número de línea, aunque también puede indicarse:
    1. .=para referir a la línea actual,
    2. $=para referir la última línea del documento,
    3. o ya sea un numeral posicional, de tipo + o - otro número.

Luego, los comandos son:

Orden Resultado
# Edita sólo la línea #
a agrega una línea a continuación
[#],[#],#,[#]c Copiar línea/rango de líneas
[#][,#]d borrar linea/rango de líneas
efichero.txt Guardar y salir
[#]i Inserta una línea previamente
[#][,#]l lista 11 líneas/rango de líneas
[#],[#],#m mueve el rango de líneas a una posición de línea
[#][,#]p pagina un rango de líneas
q Salir de Edlin
[#][,#][?]rcadena1,cadena2 Reemplazar una cadena de caracteres por otra.
[#][,#][?]scadena Buscar una cadena de caracteres
[#]tfichero.txt Transferir un fichero
[#]wfichero.txt Guardar un fichero

Veamos algunos ejemplos de edición avanzada según estos criterios.

Editar línea única

Para editar únicamente la décimo novena línea, en el prompt de comandos indica 19. EdLin te presentará la línea solicitada en la terminal como referencia. Al reescribirla, se reemplazará únicamente la línea número 19 del búfer de memoria.

Insertar líneas

Para pasar al modo de inserción antes de la décimo tercer línea, en el modo de comandos introduce 13i. Mientras introduces texto, podrás utilizar las secuencias de escape indicadas anteriormente.

Si deseas abandonar el modo de inserción, ingresa . en una línea aislada (si necesitas una línea que sólo contenga literalmente un punto, deberías indicarlo como \.).

Luego de abandonar el modo de inserción, el puntero pasará a la línea siguiente, a no ser que la inserción se hubiese suspendido al final del búfer, en cuyo caso el puntero pasará a ser la última línea del búfer, naturalmente.

Listar líneas

Use [#][,#]l para listar líneas de texto en la pantalla. Si se omite el primer parámetro, mostrará el texto que comienza 11 líneas antes de la línea actual.

Si se omite el segundo parámetro, se mostrará una pantalla de texto que comenzará con la línea especificada en el primer parámetro.

Si se omiten ambos parámetros, se mostrará una pantalla de texto que comience 11 líneas antes de la línea actual.

En caso que el número de líneas a mostrar sea más largo que el número de líneas de la pantalla, edlin lo consultará antes de paginar la pantalla.

Mover líneas

Para mover un bloque de texto a la línea anterior a la indicada en el tercer parámetro utiliza [#],[#],#m. Funciona igual a copiar, sólo que borrará el bloque original

Presentar líneas

Utiliza 12,23p para presentar el rango de líneas 11 a 23 en pantalla. Es similar al comando l (“listar”) con la excepción que los parámetros por defecto comienzan en la línea actual en lugar de hacerlo con las 11 líneas posteriores.

Copiar un rango de líneas

Utiliza 9,12,33,1c para copiar un rango de líneas consecutivo a otra localización del búfer. En orden, los parámetros son:

  1. La primer línea a copiar (en este caso 9, pero por defecto es la línea actual)
  2. La última línea a copiar (en este caso 12, pero por defecto es la línea actual)
  3. La línea anterior donde deseas insertar el rango de líneas (en este ejemplo, 33)
  4. La cantidad de iteraciones que quieres copiar el rango indicado (por defecto es 1 sola copia)
Una vez que copies las líneas, te conveniente usar el comando l (“listar”) para ver los nuevos números de línea resultantes.

Borrar rango de líneas

Utilice d para borrar la línea actual.

Pero si utilizas [#][,#]d podrás borrar un rango de líneas consecutivas del búfer. Los parámetros son la primer línea y de la última línea a borrar.

Si omites el primer parámetro, borrarás el bloque de texto desde la línea actual hasta la línea especificada como segundo parámetro (asegúrese de incluir la ,).

Si omites el segundo parámetro, borrarás unicamente la línea especificada en el primer parámetro.

Cadenas de caracteres en EdLin

Podrás encerrar las cadenas de caracteres tanto en apóstrofes '...'como comillas "...", o podrán contener las siguientes secuencias de escape:

\a Carácter de campana
\b Carácter de Retroceder (borrado)
\e Escape
\f Alimenta papel
\t Tabulador horizontal
\v Tabulador vertical
\" Comillas
\' Apóstrofe
\. Punto
\\ Barra invertida
\dNNN Valor decimal, donde cada N es un dígito decimal (de 0 a 9)
\xXX Valor Hexadecimal, donde cada X es un dígito hexadecimal (de 0 a F, tanto en mayúsculas como minúsculas)
\OOO Valor octal, donde cada O es un dígito cotal (de 0 a 7)
\^C Caracter de Control, tal como \^J para un caracter Control+j literal (linefeed).
Reemplazar una cadena

Utiliza [#][,#][?]r$,$ para reemplazar todas las ocurrencias de la primer cadena con la segunda cadena entre las dos líneas especificadas.

Si omite el primer parámetro, reemplazará a partir de la línea posterior a la actual. Si omite el segundo parámetro, dejará de reemplazar texto en la última línea del búfer.

Si incluye un ?, edlin mostrará un mensaje de confirmación antes de reemplazar el texto

Búsqueda de cadena

Use [#][,#][?]s$ para buscar la primer línea que contenga la subcadena especificada.

Si omite el primer parámetro, comenzará a buscar desde la línea actual. Si omite el segundo parámetro, dejará de buscar al llegar al final del búfer. Si incluye el ?, edlin solicitará confirmación ante cada encuentro. Si responde “no”, continuará la búsqueda. Si responde “yes” finalizará la búsqueda.

Si la búsqueda localiza la subcadena, la línea actual será la línea donde finalizó la búsqueda.

Trabajo de Ficheros en EdLin

Transferir un fichero

Utilice [#]t fichero.txt para insertar el contenido de fichero.txt. Lo hará incorporándolo antes del número de línea especificado. Si omites especificar un número de línea, se insertará antes de la línea actual.

Grabar un fichero

[#]w fichero.txt graba las primeras líneas # en del fichero especificado en el disco. Si omites el número de línea, se grabarán todas las líneas del búfer en disco.

  • edlin.txt
  • Última modificación: 2023/11/14 17:11
  • por peron