Come tornare alla riga precedente di uno script nel terminale?


8

Sto cercando di scrivere una sceneggiatura ma sono bloccato qui. Vedi il codice per favore!

aug@august:~/play$ for i in {1..100..4}
> do
> echo "august"
> touch august $i+$2
> mkdir dir

C'è un modo per andare alla riga precedente? Voglio dire, c'era un mistype, l'ho fatto touch august $i+$2. ENTERTasto premuto , quindi sono andato per la nuova linea. Come posso tornare alla riga precedente?


dovresti scrivere uno script in un file, quindi eseguirlo dal terminale. È inoltre possibile utilizzare il tasto SU per il comando precedente, ma non è possibile ripristinare il comando.
shantanu,

Risposte:


1

bashL'editor della riga di comando non supporta questo, o fai come suggerisce anwar o mantieni tutto su una riga separata da punti e virgola o inseriscilo in un file di script.

In una nota a margine, zshha funzionalità che aiutano con questo. L' zsheditor di linea ( zle) è un editor più completo e supporta lo spostamento all'interno di un comando multilinea. Quando il comando diventa troppo lungo da gestire zle, ha una funzione integrata edit-command-line, che apre la riga di comando nel tuo editor preferito. Di solito non è vincolato, prova con:

bindkey "^[e" edit-command-line

Alt-e ora dovrebbe attivarlo, salvare ed uscire per tornare alla riga di comando.


1

Dopo aver premuto Entere ricevuto un messaggio di errore, puoi semplicemente tornare indietro nella cronologia:

Basta premere il tasto sulla tastiera per correggere l'errore di battitura. Se premi il tasto il terminale ti mostrerà questa linea:

for i in {1..100..4}; do echo "august"; touch august $i+$2; mkdir;

Correggi le informazioni errate touch august $i+$2e aggiungi donea alla fine del comando.

Quindi premere il Entertasto. Questo dovrebbe risolvere il tuo problema.


1

come spiegato qui , in bash hai Comandi per la manipolazione della storia come indicato nel suo manuale. Uno di questi è edit-and-execute-command.

Questo aprirà il tuo editor con i tuoi comandi già digitati in un file temporaneo e potrai correggere facilmente le righe precedenti. Puoi farlo in modalità emacs C-xC-ee in modalità vi premendo vin modalità normale.

comando edit-and-execute (C-xC-e)

Richiamare un editor sulla riga comandi corrente ed eseguire il risultato come comandi shell. Bash tenta di invocare $ VISUAL, $ EDITOR ed emacs come editor, in questo ordine.


Wow. Anni di Linux, e lo so.
azzamsa,

0

Questo è ciò che ha funzionato per me.

CTRL+ Cdalla corrente command. Quindi premere il tasto . Ora puoi modificare qualunque riga desideri spostandoti con arrow buttons- o .

In bocca al lupo...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.