¿Cómo volver a la línea anterior de un script en la terminal?

8

Estoy tratando de escribir un guión pero estoy atrapado aquí. ¡Mira el código por favor!

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

¿Hay alguna manera de ir a la línea anterior? Quiero decir que había un tipo incorrecto, lo hice touch august $i+$2. Presioné la ENTERtecla, así que fui por una nueva línea. ¿Cómo puedo volver a la línea anterior?

rɑːdʒɑ
fuente
debe escribir el script en un archivo y luego ejecutarlo desde la terminal. También puede usar la tecla ARRIBA para el comando anterior, pero no hay forma de revertir el comando.
shantanu

Respuestas:

1

bashEl editor de línea de comandos no admite esto, ya sea como sugiere anwar o mantenga todo en una línea separada por punto y coma o póngalo en un archivo de script.

En una nota al margen, zshtiene características que ayudan con esto. El zsheditor de línea ( zle) es un editor con más funciones y admite el movimiento dentro de un comando de varias líneas. Cuando el comando se vuelve demasiado largo para manejarlo zle, tiene una función integrada edit-command-line, que abre la línea de comandos en su editor favorito. Por lo general, no está vinculado, intente con:

bindkey "^[e" edit-command-line

Alt-e Ahora debe activarlo, guardar y salir para volver a la línea de comandos.

Thor
fuente
1

Después de presionar Entery recibir un mensaje de error, puede volver al historial:

Simplemente presione la tecla en su teclado para corregir el error tipográfico. Si presiona la tecla, el terminal le mostrará esta línea:

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

Corrija las cosas mal escritas touch august $i+$2y agregue un doneal final del comando.

Luego presiona la Entertecla. Esto debería solucionar tu problema.

Anwar
fuente
1

como se explica aquí , en bash tienes Comandos para manipular el historial como se indica en su manual. Uno de ellos es edit-and-execute-command.

Esto abrirá su editor con sus comandos ya escritos en un archivo temporal y puede corregir líneas anteriores fácilmente. Puede lograr esto en modo emacs C-xC-ey en modo vi presionando ven modo normal.

comando de edición y ejecución (C-xC-e)

Invoque un editor en la línea de comando actual y ejecute el resultado como comandos de shell. Bash intenta invocar $ VISUAL, $ EDITOR y emacs como editor, en ese orden.

kalnar
fuente
Guau. Años de Linux, y solo sé esto.
azzamsa
0

Esto es lo que funcionó para mí.

CTRL+ Cde la corriente command. Luego presione el . Ahora puede editar la línea que desee moviéndose con arrow buttons- o .

Buena suerte...

Aakash Shah
fuente