GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso modificare le righe precedenti in un comando a più righe in Bash?

Questo, sfortunatamente, spetta a bash , non al terminale. Le tue opzioni sono:

  1. Usa i punti e virgola invece delle nuove righe, anche se anche in questo caso non puoi spostarti su una riga dello schermo alla volta ma devi usare comandi di movimento di caratteri o parole. (Stranamente, zsh almeno ti consente di spostarti all'interno di un comando composto durante la modifica della cronologia, ma non all'interno della corrente comando.) A volte fc (che ti lancia nel tuo editor con il comando precedente) è il modo più semplice per gestire i comandi composti.

  2. Se stai usando Bash, usa la seguente combinazione di tasti:

    ctrl x e
    

    Si aprirà il comando su cui stai lavorando usando il tuo editor di testo. Salva il file ed esci. (Ho trovato il comando sulla presentazione di Shell Hater.) Gli utenti Zsh hanno questa alternativa.


La soluzione è non inserire mai un comando finché la riga multipla non è corretta, basta digitare:Ctrl v Ctrl j quando vuoi passare alla riga successiva. Meta b per tornare indietro di una parola.

grazie alla risposta di @rici


Stranamente, Ctrl+C è quello che stai cercando.

quando sei attivo

$ echo "foo bar
> baz
>

basta premere Ctrl+C (la riga di comando modificata verrà sospesa) e premi Su (storia precedente). Il tuo prompt sarà:(nota l'assenza di>)

$ echo "foo bar
baz

Ora puoi spostarti con Sinistra Giusto anche attraverso i salti di riga.

C'è solo una stranezza, devi essere sull'ultimo carattere per aggiungere un'altra riga, quindi spostati per modificare le righe esistenti (vai all'inizio con Ctrl+A ) e premi Invio se è sufficiente o vai alla fine (Ctrl+E ) per aggiungere più righe con Invio . Un altro svantaggio è che Ctrl+_ (annulla) ripristina solo le modifiche dall'ultimo Ctrl+C


Linux
  1. Come cancellare la cronologia della riga di comando BASH in Linux

  2. Come scrivere più stringhe di righe usando Bash con variabili?

  3. Come sostituire una stringa in più file nella riga di comando di Linux

  4. Bash se su una sola riga

  5. Come eseguire un comando più volte, usando bash shell?

Come utilizzare il comando di lettura Bash

Come leggere un file riga per riga in Bash

Come visualizzare la cronologia di Bash senza numeri di riga

Come commentare più righe contemporaneamente in Vim Editor

Come rimuovere le righe da un file usando il comando Sed

Come eliminare più righe in Vim