Comment revenir à la ligne précédente d'un script dans le terminal?

8

J'essaie d'écrire un script mais je suis coincé ici. Voir le code s'il vous plaît!

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

Y a-t-il un moyen d'aller à la ligne précédente? Je veux dire qu'il y avait une erreur de frappe, je l'ai fait touch august $i+$2. ENTERTouche pressée , j'ai donc opté pour une nouvelle ligne. Comment revenir à la ligne précédente?

rɑːdʒɑ
la source
vous devez écrire un script dans un fichier puis l'exécuter à partir du terminal. Vous pouvez également utiliser la touche UP pour la commande précédente, mais aucun moyen de revenir à la commande.
shantanu le

Réponses:

1

bashL'éditeur de ligne de commande de ne prend pas cela en charge, soit comme le suggère anwar, soit conservez tout sur une seule ligne séparée par des points-virgules ou placez-le dans un fichier de script.

D'un côté, zsha des fonctionnalités qui aident à cela. L' zshéditeur de ligne ( zle) est un éditeur plus complet et prend en charge le déplacement dans une commande multi-ligne. Lorsque la commande devient trop longue à gérer, zleelle dispose d'une fonction intégrée edit-command-line, qui ouvre la ligne de commande dans votre éditeur préféré. Ce n'est généralement pas lié, essayez avec:

bindkey "^[e" edit-command-line

Alt-e devrait maintenant l'activer, enregistrer et quitter pour revenir à la ligne de commande.

Thor
la source
1

Après avoir appuyé Enteret reçu un message d'erreur, vous pouvez simplement revenir dans l'historique:

Appuyez simplement sur la touche de votre clavier pour corriger la faute de frappe. Si vous appuyez sur la touche, le terminal vous montrera cette ligne:

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

Corrigez les trucs mal tapés autour touch august $i+$2et ajoutez un doneà la fin de la commande.

Appuyez ensuite sur la Entertouche. Cela devrait résoudre votre problème.

Anwar
la source
1

comme expliqué ici , dans bash vous avez des commandes pour manipuler l'historique comme indiqué dans son manuel. L'un d'eux l'est edit-and-execute-command.

Cela ouvrira votre éditeur avec vos commandes déjà tapées dans un fichier temporaire et vous pourrez corriger facilement les lignes précédentes. Vous pouvez y parvenir en mode emacs par C-xC-e, et en mode vi en appuyant sur ven mode normal.

commande d'édition et d'exécution (C-xC-e)

Appelez un éditeur sur la ligne de commande actuelle et exécutez le résultat en tant que commandes shell. Bash tente d'appeler $ VISUAL, $ EDITOR et emacs en tant qu'éditeur, dans cet ordre.

kalnar
la source
Sensationnel. Des années de Linux, et je le sais.
azzamsa
0

C'est ce qui a fonctionné pour moi.

CTRL+ Cdu courant command. Appuyez ensuite sur . Vous pouvez maintenant modifier la ligne de votre choix en vous déplaçant avec le arrow buttons- ou .

Bonne chance...

Aakash Shah
la source