Comandos ed y red de Linux



comando ed

En Tipo Unix sistemas operativos, ed es un editor de archivos interactivo.



red , abreviatura de 'educación restringida', es una versión de ed que conlleva restricciones sobre los tipos de edición que se pueden realizar.

Descripción

ed es uno de los programas de edición más antiguos que existen. Fue introducido en 1969 , hace aproximadamente 50 años, como uno de los componentes originales de Unix .



Sintaxis

|_+_| |_+_|

Opciones

-h , --ayuda Muestre un mensaje de ayuda y salga.
-V , --versión Salida de información de versión y salida.
-GRAMO , --tradicional Ejecutar en modo de compatibilidad.
-l ,
- estado-de-salida-suelta
Salga con un estado de cero (terminación normal) incluso si falla un comando. Esta opción puede resultar útil si ed está configurado para ser el editor de crontab , por ejemplo.
-pag ,
--prompt = CUERDA
ed generalmente espera la entrada del usuario en una línea en blanco; esta opción usará el cuerda STRING como mensaje en su lugar.
-r , --restringido Ejecutar en modo restringido.
-s , --tranquilo ,
--silencio
Suprime los diagnósticos.
-v , --verboso Opere prolijamente.

Descripción técnica

ed es un editor de texto orientado a líneas con una interfaz mínima. Se utiliza para crear, mostrar, modificar y manipular archivos de texto.

Si ed se invoca con un argumento de nombre de archivo, luego se lee una copia del archivo en el búfer del editor. Los cambios se realizan en esta copia y no directamente en el archivo. Al dejar de fumar ed , cualquier cambio no guardado explícitamente con un ' en 'comando se pierden.



La edición se realiza en dos modos distintos: mando y aporte . Cuando se invoca por primera vez, ed es en modo de comando . En este modo, los comandos se leen desde el entrada estándar y se ejecuta para manipular el contenido del búfer del editor. Un comando típico podría verse así:

|_+_|

que reemplaza todas las apariciones de la cadena viejo con la cuerda nuevo .

Cuando un comando de entrada, como ' a ' (adjuntar), ' I '(insertar), o' c '(cambio) se da, ed entra modo de entrada . Este modo es el medio principal para agregar texto a un archivo. En este modo, no hay comandos disponibles; en su lugar, la entrada estándar se escribe directamente en el búfer del editor. Las líneas consisten en texto hasta e incluyendo un nueva línea personaje . Se sale del modo de entrada ingresando un solo período (' . ') en una línea.

Una cosa importante para recordar es que todos ed los comandos operan en líneas enteras o rangos de líneas. Por ejemplo, el ' D 'comando borra líneas; la ' metro 'comando mueve líneas, y así sucesivamente. Es posible modificar solo una parte de una línea mediante un reemplazo específico, como en el ejemplo anterior; aunque incluso entonces, el ' s El comando 'se aplica a líneas enteras a la vez.

En general, ed Los comandos constan de cero o más direcciones de línea, seguidos de un comando de un solo carácter y posiblemente parámetros adicionales. Los comandos tienen la estructura:

|_+_|

La (s) dirección (es) indican la línea o rango de líneas que serán afectadas por el comando. Si se dan menos direcciones de las que acepta el comando, se proporcionan las direcciones predeterminadas.

Direcciones de línea

Un habla a representa el número de una línea en el búfer. ed mantiene una dirección actual que se proporciona a los comandos como la dirección predeterminada si no se especifica ninguna otra.

Cuando se lee un archivo por primera vez, la dirección actual se establece en la última línea del archivo. En general, en un momento dado, la dirección actual se establece en la última línea afectada por un comando.

Piense en la dirección como un marcador de lugar en la última línea del archivo donde ed ha hecho algo y, a menos que se indique lo contrario, la línea donde operará a continuación.

Refiriéndose a direcciones de línea

Una referencia a una dirección de línea se construye a partir de una de las bases de la lista siguiente, seguida opcionalmente por un desplazamiento numérico. El desplazamiento puede incluir cualquier combinación de dígitos, operadores (por ejemplo, ' + ' y ' - ') y espacio en blanco . Las direcciones se leen de izquierda a derecha y sus valores se calculan en relación con la dirección actual.

Una excepción a la regla de que las direcciones representan números de línea es la dirección especial 0 (cero). Esta dirección significa 'antes de la primera línea' y se puede utilizar en cualquier comando.

Rangos de direcciones

Un rango de direcciones son dos direcciones separadas por una coma (' , ') o punto y coma (' ; '). El valor de la primera dirección en un rango no puede exceder el valor de la segunda. Si solo se proporciona una dirección en un rango, la segunda dirección se establece en la dirección dada.

Cada dirección en una coma delimitado el rango se interpreta en relación con la dirección actual. En un rango delimitado por punto y coma, la primera dirección se usa para establecer la dirección actual y la segunda dirección se interpreta en relación con la primera.

Se reconocen los siguientes símbolos de dirección:

. La línea actual (dirección) en el búfer.
$ La última línea del búfer.
norte La norte th línea en el búfer donde norte es un número en el rango [0,$] .
- La línea anterior. Esta opción es equivalente a -1 y puede repetirse con efecto acumulativo.
^ norte La norte la línea anterior, donde norte es un número no negativo.
+ La siguiente línea. Esta opción es equivalente a +1 y puede repetirse con efecto acumulativo.
+ norte La norte la siguiente línea, donde norte es un número no negativo.
, La primera a la última línea del búfer. Esta opción es equivalente al rango de direcciones 1,$ .
; La corriente hasta las últimas líneas del búfer. Esta opción es equivalente al rango de direcciones .,$.
/ re / La siguiente línea que contiene el expresión regular re . La búsqueda llega al principio del búfer y continúa hasta la línea actual, si es necesario. // repite la última búsqueda.
? re ? La línea anterior que contiene la expresión regular re . La búsqueda llega al final del búfer y continúa hasta la línea actual, si es necesario. ?? repite la última búsqueda.
' lc La línea previamente marcada con un ' a '(marca) comando, donde lc es un minúscula letra.

Expresiones regulares

Expresiones regulares son patrones que se utilizan para seleccionar texto. Por ejemplo, el ed mando

|_+_|

imprime todas las líneas que contienen cuerda . Las expresiones regulares también son utilizadas por ' s 'comando para seleccionar el texto antiguo para ser reemplazado por el nuevo. Además de especificar literales de cadena, las expresiones regulares pueden representar clases de cadenas. Si es posible que una expresión regular coincida con varias cadenas en una línea, entonces la coincidencia más larga a la izquierda es la seleccionada.

Los siguientes símbolos se utilizan para construir expresiones regulares:

c Cualquier personaje c no enumerados a continuación, incluido ' { ', ' } ', ' ( ', ' ) ', ' < ' y ' > ', coincide con sí mismo.
c Un personaje de escape con barra invertida c que no sea ' { ', ' } ', ' ( ', ' ) ', ' < ', ' > ', ' b ', ' B ', ' en ', ' EN ', ' + ', y ' ? 'coincide con sí mismo.
. Coincide con cualquier carácter individual.
[ char-class ] Coincide con cualquier carácter individual en char-class . Para incluir un ' ] ' en char-class , debe ser el primer carácter. Se puede especificar un rango de caracteres separando los caracteres finales del rango con un ' - '; por ejemplo, ' Arizona 'especifica los caracteres en minúscula. Las siguientes expresiones literales también se pueden utilizar en char-class para especificar conjuntos de caracteres:

ed [  options  ] [  file  ]
Si ' - 'aparece como el primer o último carácter de char-class , luego se empareja. Todos los demás personajes de char-class coincidir con ellos mismos.

Patrones en char-class de la forma:

red [  options  ] [  file  ]
o,

,s/old/new/g
dónde col-olmo es un elemento de clasificación interpretado de acuerdo con la configuración regional del sistema.
[^ char-class ] Coincide con cualquier carácter, que no sea una nueva línea, no en char-class . char-class se define como arriba.
^ Si ' ^ 'es el primer carácter de una expresión regular, luego ancla la expresión regular al comienzo de una línea. De lo contrario, se empareja a sí mismo.
$ Si ' $ 'es el último carácter de una expresión regular, ancla la expresión regular al final de una línea. De lo contrario, se empareja a sí mismo.
( re ) Define una subexpresión (posiblemente nula) re . Las subexpresiones pueden ser anidado . Una referencia posterior posterior del formulario ' norte ', dónde norte es un número en el rango [1,9] , se expande al texto que coincide con el norte la subexpresión. Por ejemplo, la expresión regular ' (a.c ) 1 'coincide con la cadena' abcabc ', pero no ' abcadc '. Las subexpresiones se ordenan con respecto a su izquierda delimitador .
* Coincide con la expresión regular o subexpresión de un solo carácter que la precede inmediatamente cero o más veces. Si ' * 'es el primer carácter de una expresión regular o subexpresión, luego coincide con él mismo. La ' * 'operador a veces produce resultados inesperados. Por ejemplo, la expresión regular ' b* 'coincide con el comienzo de la cadena' abbb ', a diferencia de la subcadena' bebé ', ya que una coincidencia nula es la única coincidencia más a la izquierda.
{ norte , metro }

{ norte , }

{ norte }
Coincide con la expresión regular o subexpresión de un solo carácter que la precede al menos norte y como mucho metro veces. Si metro se omite, entonces coincide al menos norte veces. Si también se omite la coma, entonces coincide exactamente norte veces. Si alguna de estas formas aparece primero en una expresión regular o subexpresión, entonces se interpreta literalmente (es decir, la expresión regular ' {2} 'coincide con la cadena' {2} ', y así).
<

>
Ancla la expresión regular o subexpresión de un solo carácter que la sigue inmediatamente al principio ( < ) o terminando ( < ) de una palabra, es decir, en ASCII , una cadena máxima de caracteres alfanuméricos, incluido el guión bajo (' _ ').

Los siguientes operadores extendidos están precedidos por una barra invertida ( ) para distinguirlos de los tradicionales ed sintaxis.

'

'
Coincide incondicionalmente con el principio ( ' ) o terminando ( ' ) de una línea.
? Opcionalmente, coincide con la expresión regular o subexpresión de un solo carácter que la precede inmediatamente. Por ejemplo, la expresión regular ' a [bd] ? c 'coincide con las cuerdas' abc ', ' adc ' y ' y '. Si ? ocurre al comienzo de una expresión regular o subexpresión, luego coincide con un literal ' ? '.
+ Coincide con la expresión regular o subexpresión de un solo carácter que la precede inmediatamente una o más veces. Entonces la expresión regular ' a+ 'es la abreviatura de' aa * '. Si + ocurre al comienzo de una expresión regular o subexpresión, luego coincide con un literal ' + '.
 Coincide con el principio o el final (cadena nula) de una palabra. Así, la expresión regular ' bhello b ' es equivalente a ' '. Sin embargo, ' cama y desayuno 'es una expresión regular válida mientras que' ' no es.
B Coincidencias (una cadena nula) dentro de una palabra.
en Coincide con cualquier carácter de una palabra.
EN Coincide con cualquier carácter que no esté en una palabra.

Comandos

Todas ed Los comandos son caracteres únicos, aunque algunos requieren parámetros adicionales. Si los parámetros de un comando se extienden a lo largo de varias líneas, cada línea, excepto la última, debe terminar con una barra invertida ( ).

En general, se permite como máximo un comando por línea. Sin embargo, la mayoría de los comandos aceptan un sufijo de impresión, que es cualquiera de ' pag ' (impresión), ' l '(lista), o' norte '(enumerar), para imprimir la última línea afectada por el comando.

Una interrupción (típicamente ^C ) tiene el efecto de cancelar el comando actual y devolver el editor al modo de comando.

ed reconoce los siguientes comandos. Los comandos se muestran junto con la dirección predeterminada o el rango de direcciones proporcionado si no se especifica ninguno (entre paréntesis).

[ .,. ] a Agrega texto al búfer después de la línea direccionada, que puede ser la dirección 0 (cero). El texto se ingresa en el modo de entrada. La dirección actual se establece en la última línea ingresada.
[ .,. ] c Cambia líneas en el búfer. Las líneas direccionadas se eliminan del búfer y el texto se agrega en su lugar. El texto se ingresa en el modo de entrada. La dirección actual se establece en la última línea ingresada.
[ .,. ] D Elimina las líneas direccionadas del búfer. Si hay una línea después del rango eliminado, la dirección actual se establece en esta línea. De lo contrario, la dirección actual se establece en la línea anterior al rango eliminado.
[ .,. ] es expediente Ediciones expediente y establece el valor predeterminado Nombre del archivo . Si expediente no se especifica, se utiliza el nombre de archivo predeterminado. Todas las líneas del búfer se eliminan antes de que se lea el nuevo archivo. La dirección actual se establece en la última línea leída.
es ! mando Edita la salida estándar de ' ! mando ', (ver ! mando debajo). El nombre de archivo predeterminado no se modifica. Todas las líneas del búfer se eliminan antes de que se lea la salida del comando. La dirección actual se establece en la última línea leída.
ES expediente Ediciones expediente incondicionalmente. Esta opción es similar a la es comando, excepto que los cambios no escritos se descartan sin previo aviso. La dirección actual se establece en la última línea leída.
F expediente Establece el nombre de archivo predeterminado en expediente . Si expediente no se especifica, se imprime el nombre de archivo sin escape predeterminado.
[ 1,$ ] gramo/ re / lista de comandos Se aplica lista de comandos a cada una de las líneas direccionadas que coinciden con una expresión regular re . La dirección actual se establece en la línea coincidente actualmente antes lista de comandos es ejecutado. Al final de ' gramo ', la dirección actual se establece en la última línea afectada por lista de comandos .

Cada comando en lista de comandos debe estar en una línea separada, y cada línea, excepto la última, debe terminar con una barra invertida ( ). Se permiten todos los comandos, excepto ' gramo ', ' GRAMO ', ' v ', y ' V '. Una nueva línea sola en lista de comandos es equivalente a un ' pag 'comando.
[ 1,$ ] GRAMO/ re / Edita de forma interactiva las líneas direccionadas que coinciden con una expresión regular re . Para cada línea coincidente, se imprime la línea, se establece la dirección actual y se solicita al usuario que ingrese un lista de comandos . Al final de ' GRAMO ', la dirección actual se establece en la última línea afectada por (la última) lista de comandos .

El formato de lista de comandos es el mismo que el del ' gramo 'comando. Una nueva línea por sí sola actúa como una lista de comandos nula. Un solo ' & 'repite la última lista de comandos no nulos.
H Alterna la impresión de explicaciones de errores. Por defecto, las explicaciones no se imprimen. Se recomienda que ed Los scripts comienzan con este comando para ayudar en la depuración.
h Imprime una explicación del último error.
[ . ] I Inserta texto en el búfer antes de la línea actual. El texto se ingresa en el modo de entrada. La dirección actual se establece en la última línea ingresada.
[ .,.+1 ] j Une las líneas direccionadas. Las líneas direccionadas se eliminan del búfer y se reemplazan por una sola línea que contiene su texto unido. La dirección actual se establece en la línea resultante.
[ . ] a c Marca una línea con una letra minúscula c . A continuación, la línea se puede direccionar como ' c (una cita simple seguida de c ) en comandos posteriores. La marca no se borra hasta que la línea se elimina o modifica de otra manera.
[ .,. ] l Imprime las líneas direccionadas sin ambigüedades. Si se invoca desde una terminal, ed hace una pausa al final de cada página hasta que se ingresa una nueva línea. La dirección actual se establece en la última línea impresa.
[ .,. ] metro [ . ] Mueve líneas en el búfer. Las líneas direccionadas se mueven después de la dirección de destino correcta, que puede ser la dirección 0 (cero). La dirección actual se establece en la última línea movida.
[ .,. ] norte Imprime las líneas direccionadas junto con sus números de línea. La dirección actual se establece en la última línea impresa.
[ .,. ] pag Imprime las líneas direccionadas. Si se invoca desde una terminal, ed hace una pausa al final de cada página hasta que se ingresa una nueva línea. La dirección actual se establece en la última línea impresa.
PAG Activa y desactiva el símbolo del sistema. A menos que se haya especificado un indicador con la opción de línea de comandos -pag cuerda , el símbolo del sistema está desactivado de forma predeterminada.
q En paz ed .
Q En paz ed incondicionalmente. Esta opción es similar a la q comando, excepto que los cambios no escritos se descartan sin previo aviso.
[ $ ] r expediente Lee expediente a después de la línea dirigida. Si expediente no se especifica, se utiliza el nombre de archivo predeterminado. Si no había un nombre de archivo predeterminado antes del comando, entonces el nombre de archivo predeterminado se establece en expediente . De lo contrario, el nombre de archivo predeterminado no se modifica. La dirección actual se establece en la última línea leída.
[ $ ] r !mando Lee después de la línea direccionada la salida estándar de ' !mando ', (ver el !mando debajo). El nombre de archivo predeterminado no se modifica. La dirección actual se establece en la última línea leída.
[ .,. ] s/ re / reemplazo /

[ .,. ] s/ re / reemplazo /gramo

[ .,. ] s/ re / reemplazo / norte
Reemplaza el texto en las líneas direccionadas que coinciden con una expresión regular re con reemplazo. De forma predeterminada, solo se reemplaza la primera coincidencia de cada línea. Si el ' gramo 'Se da el sufijo (global), luego se reemplazan todas las coincidencias. La ' norte 'sufijo, donde norte es un número positivo, sólo hace que norte th fósforo para ser reemplazado. Es un error si no se realizan sustituciones en ninguna de las líneas direccionadas. La dirección actual se establece en la última línea afectada.

La re y reemplazo puede estar delimitado por cualquier carácter que no sea el espacio y la nueva línea (ver el ' s 'comando a continuación). Si se omite uno o dos de los últimos delimitadores, la última línea afectada se imprime como si el sufijo de impresión ' pag 'fueron especificados.

Un sin escape ' & 'en reemplazo se reemplaza por el texto coincidente actualmente. La secuencia de caracteres ' metro ', dónde metro es un número en el rango [1,9] , es reemplazado por el metro la expresión de referencia inversa del texto coincidente. Si el reemplazo consiste en un solo ' % ', se utiliza el reemplazo de la última sustitución. Las líneas nuevas se pueden incrustar en reemplazo si se escapan con una barra invertida ( ).
[ .,. ] s Repite la última sustitución. Esta forma de ' s 'el comando acepta un sufijo de conteo' norte ', o cualquier combinación de los caracteres' r ', ' gramo ', y ' pag '. Si un sufijo de cuenta ' norte 'se da, entonces solo el norte Se reemplaza el partido. La ' r El sufijo 'hace que se utilice la expresión regular de la última búsqueda en lugar de la de la última sustitución. La ' gramo 'sufijo alterna el sufijo global de la última sustitución. La ' pag 'sufijo alterna el sufijo de impresión de la última sustitución. La dirección actual se establece en la última línea afectada.
[ .,. ] t [ . ] Copia las líneas direccionadas después de la dirección de destino correcta, que puede ser la dirección 0 (cero). La dirección actual se establece en la última línea copiada.
tu Deshace el último comando y restaura la dirección actual a la que tenía antes del comando. Los comandos globales ' gramo ', ' GRAMO ', ' v ', y ' V '. se tratan como un solo comando por deshacer. ' tu 'es su propia inversa.
[ 1,$ ] v / re / lista de comandos Se aplica lista de comandos a cada una de las líneas direccionadas que no coinciden con una expresión regular re . Esta opción es similar a la ' gramo 'comando.
[ 1,$ ] V / re / Edita de forma interactiva las líneas direccionadas que no coinciden con una expresión regular re . Esta opción es similar a la ' GRAMO 'comando.
[ 1,$ ] en expediente Escribe las líneas direccionadas en el archivo. Cualquier contenido anterior del archivo se pierde sin previo aviso. Si no hay un nombre de archivo predeterminado, el nombre de archivo predeterminado se establece en expediente , de lo contrario no se modifica. Si no se especifica ningún nombre de archivo, se utiliza el nombre de archivo predeterminado. La dirección actual no se modifica.
[ 1,$ ] wq expediente Escribe las líneas direccionadas en un archivo y luego ejecuta un ' q 'comando.
[ 1,$ ] en !mando Escribe las líneas direccionadas en la entrada estándar de ' !mando ', (ver el !mando debajo). El nombre de archivo predeterminado y la dirección actual no se modifican.
[ 1,$ ] EN expediente Agrega las líneas direccionadas al final del archivo. Esta opción es similar a la ' en ', espere que el contenido anterior del archivo no sea destruido. La dirección actual no se modifica.
[ . ] x Copia (coloca) el contenido del búfer de corte después de la línea direccionada. La dirección actual se establece en la última línea copiada.
[ .,. ] y Copia (tira) las líneas direccionadas al búfer de corte. El búfer de corte se sobrescribe con el ' y ', ' s ', ' j ', ' D ', o ' c 'comandos. La dirección actual no se modifica.
[ .+1 ] con norte Rollos norte líneas a la vez comenzando en la línea dirigida. Si norte no se especifica, entonces se usa el tamaño de ventana actual. La dirección actual se establece en la última línea impresa.
! mando Ejecuta mando vía sh . Si el primer carácter de mando es ' ! ', luego se reemplaza por el texto de la anterior' !mando '. ed no procesa mando para barra invertida ) escapa. Sin embargo, un % 'se reemplaza por el nombre de archivo predeterminado. Cuando el shell regresa de la ejecución, un ' ! 'se imprime en la salida estándar. La línea actual no se modifica.
[ .,. ] # Comienza un comentario ; el resto de la línea, hasta una nueva línea, se ignora. Si se proporciona una dirección de línea seguida de un punto y coma, la dirección actual se establece en esa dirección. De lo contrario, la dirección actual no se modifica.
[ $ ] = Imprime el número de línea de la línea direccionada.
[ .+1 ] Imprime la línea con la dirección y establece la dirección actual para esa línea.

Ed restringida

red opera como ed , excepto que solo puede editar archivos en el directorio actual y no puede ejecutar comandos de shell.

Ejemplos de

Empezando

La forma más sencilla de empezar ed es solo ejecutarlo sin opciones en la línea de comando:

|_+_|

Este comando coloca el cursor en una nueva línea, pero no recibirá ningún otro mensaje o indicación de que está en ed . Abandonar ed y regrese al símbolo del sistema de su shell, escriba q y presione enter:

|_+_|

También podrías haber dejado de usar capital Q , que es una salida 'incondicional': se cerrará independientemente de si tiene cambios que aún no se han escrito en un archivo.

Volvamos a ed :

|_+_|

Ahora escriba intencionalmente un comando que ed no reconocerá, para causar un error. No hay o comando, así que escriba eso:

|_+_| |_+_|

La ' ? 'significa que algo salió mal. Por defecto, ed tiene una interfaz tan mínima que no le da un mensaje de error específico. Si ha ocurrido un error, puede averiguar qué sucedió usando el h mando:

|_+_| |_+_|

Y entonces ed está listo para otro comando.

Para activar los mensajes de error para que siempre se muestren inmediatamente de forma predeterminada, utilice el H mando:

|_+_|

Haciendo a ed más amigable

Es más fácil de usar ed si tiene un símbolo del sistema. Vamos a dejar ed ...

|_+_|

... que nos devuelve al símbolo del sistema de nuestro shell. Ahora comencemos ed de nuevo usando el -pag opción, que dice ed para utilizar un símbolo del sistema. Especificamos qué indicador queremos usar como cuerda siguiendo inmediatamente -pag . Por ejemplo, usemos el indicador simple ' > '. Así es como invocamos ed :

|_+_|

Ahora, cuando ed se inicia, vemos nuestro mensaje:

|_+_|

Agregar texto y verlo

No hemos dado ed un nombre de archivo, por lo que comienza con un búfer vacío para ingresar texto. Ingresemos algunos ahora. Usamos el a comando para agregar texto; en los comandos a continuación también mostramos el indicador antes del comando, para mayor claridad.

|_+_|

Ahora tenemos líneas en blanco donde podemos escribir nuestro texto. Lo ingresamos como en cualquier procesador de texto, presionando enter al final de cada línea. Cuando terminamos, ingresamos a un período solo en una nueva línea, para decirle ed hemos terminado:

|_+_|

Hemos ingresado cuatro líneas; el editor sale de ahí y nos da otro ed símbolo del sistema. Si entramos en el pag comando, imprime la línea donde dejamos de editar:

|_+_| |_+_|

La mayoría ed Los comandos pueden tener el prefijo rango de direcciones para especificar qué rango aplicar al texto. Entonces, si queremos imprimir líneas 1 mediante 4 , podríamos usar el comando 1,4p :

|_+_| |_+_|

Si omitimos los números de línea (pero dejamos la coma), ed asume valores máximos de inicio y fin, por lo que imprime todo el búfer:

|_+_| |_+_|

En caso de que olvidemos en qué número de línea lo dejamos, podemos usar el = mando:

|_+_| |_+_|

Podemos continuar agregando líneas usando el a comando nuevamente, e ingresando un punto en una nueva línea cuando hayamos terminado:

|_+_| |_+_| |_+_| |_+_|

Ahora estamos en la línea 5:

|_+_| |_+_|

Podemos cambiar a otra línea ingresando ese número de línea. Cuando lo hacemos ed imprime esa línea para hacernos saber dónde estamos:

|_+_| |_+_|

Ahora si entramos a , comenzaríamos a agregar líneas después de la línea 3. O podemos usar el I comando para comenzar a insertar líneas antes de línea 3:

|_+_| |_+_|

Revisemos para ver dónde nos deja el editor después de esta inserción. Esto se conoce como dónde se 'direcciona' el búfer y debería ser la última línea del búfer:

|_+_| |_+_|

Veamos las seis líneas:

|_+_| |_+_|

Eliminemos la tercera línea usando el D mando. Ponemos un 3 antes de D , para especificar que la línea 3 es la línea que se eliminará:

|_+_|

... y ver el búfer cambiado:

|_+_| |_+_|

Si desea ver líneas con el número de línea al principio, utilice el norte mando. Por ejemplo:

|_+_| |_+_| |_+_| |_+_| |_+_| |_+_|

Para cambiar una línea (reemplazarla por completo), puede usar el c mando. Puede ingresar varias líneas de texto, por lo que aún debe poner un punto en una nueva línea para indicar que ha terminado:

|_+_| |_+_|

También funciona en varias líneas:

|_+_| |_+_| |_+_| |_+_|

Y podemos unir líneas con el j mando:

|_+_|

Veamos esos cambios:

|_+_| |_+_|

Entendiendo los rangos

Exploremos los rangos un poco más. Seleccionemos la línea 2, luego imprimamos una línea antes y después:

|_+_| |_+_| |_+_| |_+_|

Ya hemos visto que podemos especificar todo el búfer usando una sola coma como rango (' , '):

|_+_| |_+_|

Hemos estado usando una sola coma (' , ') para representar todo el rango de búfer en nuestros comandos. Un signo de porcentaje (' % ') hace lo mismo:

|_+_| |_+_|

Al especificar rangos, podemos representar la última línea usando un signo de dólar (' $ '):

|_+_| |_+_|

Si no especifica un rango, la mayoría de los comandos asumen un rango de la línea direccionada actualmente. También puede especificar la línea con la dirección actual explícitamente usando un punto (' . '):

|_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_|

Marcado de líneas para una referencia más fácil

Puede marcar una línea con el a comando, dándole un 'marcador' de cualquier letra minúscula. A continuación, puede consultar la línea marcada con una comilla simple seguida de esa letra. Por ejemplo, aquí marcamos la línea 3 con la carta a , luego imprima esa línea refiriéndose a ella con 'a :

|_+_| |_+_| |_+_|

Mover y copiar líneas

Puede mover líneas de un lugar a otro usando el metro mando:

|_+_| |_+_| |_+_|

Puede copiar líneas a otra ubicación utilizando el t mando:

|_+_| |_+_| |_+_|

Escribir y leer archivos

Cuando esté listo para escribir en un archivo, puede usar el F comando para especificar un nombre de archivo:

|_+_| |_+_|

Ahora podemos escribir a myfile.txt utilizando la en mando. ed nos dice cuántos bytes se escribieron:

|_+_| |_+_|

Si especificamos un nombre de archivo después en , ed escribe en ese nombre de archivo y nos dice cuántos bytes:

|_+_| |_+_|

Para abrir un archivo para editarlo, use el es comando con el nombre del archivo que desea abrir. ed lee el archivo en el búfer y le permite saber cuántos bytes se leyeron en:

|_+_| |_+_|

Si intenta abrir un archivo para editarlo cuando tiene cambios sin guardar en su búfer actual, recibirá un error. Para abrir un archivo de todos modos, perdiendo cualquier cambio no escrito en el búfer actual, use mayúsculas ES :

|_+_| |_+_|

Lo mismo ocurre con la salida ed : si intenta utilizar el q comando para salir y tiene cambios sin guardar, recibe un error. Para salir sin escribir sus cambios, use mayúsculas Q :

|_+_|

Para abrir un archivo desde la línea de comando, especifíquelo como último argumento al invocar ed . El archivo se lee en el búfer y ed informa cuántos bytes se leyeron y le indicará un comando. Por ejemplo:

|_+_| |_+_|

Buscar y reemplazar texto

Eliminemos todas las líneas de nuestro búfer y rehagamos el archivo antes de los siguientes ejemplos:

|_+_| |_+_| |_+_|

Para buscar texto en su archivo, use el / comando con el texto a buscar:

|_+_| |_+_|

Para ejecutar globalmente un comando en líneas que coincidan con una expresión regular, use el formulario de comando gramo/ expresión regular / mando . Por ejemplo, aquí vamos a gramo busque globalmente líneas que contengan las letras consecutivas ' re ', y pag rint esas líneas:

|_+_| |_+_|

Para ejecutar un comando en las líneas que no no coincidir con una expresión regular dada, use la forma de comando v / expresión regular / mando :

|_+_| |_+_|

Para realizar la sustitución de texto, use el formulario de comando s/ texto para reemplazar / texto de reemplazo / . Especificamos un rango antes del s para que busque más que solo la línea con la dirección actual:

|_+_| |_+_| |_+_|

De forma predeterminada, solo la primera aparición de texto para reemplazar en una línea se sustituye. Para reemplazar cada ocurrencia en cada línea coincidente, especifique gramo después de la segunda barra, para una sustitución 'global':

|_+_| |_+_| |_+_|

Conclusión

Con suerte, esto le ha dado suficiente familiaridad con ed para poder utilizarlo, y hacer uso de las referencias disponibles anteriormente. ed puede ser muy útil cuando se trabaja en un sistema con recursos mínimos del sistema, o cuando se repara un sistema que no puede arrancar más allá de un nivel de ejecución muy básico. Es el progenitor de muchos editores modernos y, una vez que te acostumbras, su simplicidad puede hacer que las tareas básicas e importantes sean fáciles de realizar.

bfs - Un editor que puede cargar archivos muy grandes.
gato - Salida del contenido de un archivo.
editar - Un editor de texto.
ex - Modo editor de línea del nosotros editor de texto.
sujeción - Filtrar texto que coincide con una expresión regular.
ksh - El intérprete de comandos del shell Korn.
pico - Un sencillo editor de texto.
y - Una utilidad para filtrar y transformar texto.
sh - El intérprete de comandos del shell Bourne.
stty - Establecer opciones para la pantalla de su terminal.
umask - Obtener o establecer la máscara de creación del modo de archivo.
nosotros - Editor de texto basado en el modo visual de ex .
yo vine - Una versión avanzada de nosotros .