GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo edito líneas anteriores en un comando de varias líneas en Bash?

Eso, lamentablemente, depende de bash , no a la terminal. Sus opciones son:

  1. Utilice puntos y comas en lugar de saltos de línea, aunque incluso así no puede subir una línea de pantalla a la vez, sino que debe utilizar comandos de movimiento de caracteres o palabras. (Curiosamente, zsh al menos te permite moverte dentro de un comando compuesto al editar el historial, pero no dentro del actual comando.) A veces fc (que lo lanza a su editor con el comando anterior) es la forma más fácil de manejar comandos compuestos.

  2. Si está usando Bash, use la siguiente combinación de teclas:

    ctrl x e
    

    Abrirá el comando en el que está trabajando usando su editor de texto. Guarde el archivo y salga. (Encontré el comando en la presentación de Shell Hater). Los usuarios de Zsh tienen esta alternativa.


La solución es nunca ingresar un comando hasta que la línea múltiple sea correcta, simplemente escriba:Ctrl v Ctrl j cuando desee pasar a la siguiente línea. Meta b retroceder una palabra.

crédito a la respuesta de @rici


Curiosamente, Ctrl+C es lo que buscas.

cuando estás en

$ echo "foo bar
> baz
>

simplemente presione Ctrl+C (la línea de comando editada se suspenderá) y presione Arriba (historia-anterior). Su indicación será:(tenga en cuenta la ausencia de>)

$ echo "foo bar
baz

Ahora puedes moverte con Izquierda Derecho incluso a través de saltos de línea.

Solo hay una peculiaridad, debe estar en el último carácter para agregar otra línea, así que muévase para editar las líneas existentes (vaya a comenzar con Ctrl+A ) y presione Enter si eso es suficiente o ir al final (Ctrl+E ) para agregar más líneas con Enter . Otro inconveniente es que Ctrl+_ (deshacer) solo restaura los cambios desde el último Ctrl+C


Linux
  1. Cómo borrar el historial de línea de comandos BASH en Linux

  2. Cómo contar el número de líneas en un archivo en Linux (ejemplos de comandos wc y nl)

  3. ¿Cómo escribir una cadena de varias líneas usando Bash con variables?

  4. Cómo reemplazar una cadena en varios archivos en la línea de comando de Linux

  5. ¿Cómo ejecuto múltiples comandos en segundo plano en bash en una sola línea?

Cómo usar el comando de lectura Bash

Cómo leer un archivo línea por línea en Bash

Cómo mostrar el historial de Bash sin números de línea

Cómo comentar varias líneas a la vez en Vim Editor

Cómo quitar líneas de un archivo usando el comando Sed

Cómo eliminar varias líneas en Vim