Как вернуться к предыдущей строке скрипта в терминале?

8

Я пытаюсь написать сценарий, но я застрял здесь. Смотрите код, пожалуйста!

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

Есть ли способ перейти на предыдущую строку? Я имею в виду, что был опечатка, я сделал в touch august $i+$2. Нажал ENTERклавишу, поэтому я перешел на новую линию. Как я могу вернуться к предыдущей строке?

rɑːdʒɑ
источник
Вы должны написать скрипт в файле, а затем запустить его из терминала. Вы также можете использовать клавишу ВВЕРХ для предыдущей команды, но нет способа отменить команду.
Шантану

Ответы:

1

bashРедактор командной строки не поддерживает это, либо делайте так, как подсказывает anwar, либо храните все в одной строке, разделенные точкой с запятой, или помещайте это в файл сценария.

На заметку, zshесть функции, которые помогают с этим. zshСтрочный редактор ( zle) является более полнофункциональным редактором и поддерживает перемещение внутри команды многострочных. Когда команда становится слишком длинной для обработки, zleона имеет встроенную функцию edit-command-line, которая открывает командную строку в вашем любимом редакторе. Обычно это не связано, попробуйте с:

bindkey "^[e" edit-command-line

Alt-e должен активировать его, сохранить и выйти, чтобы вернуться в командную строку.

Тор
источник
1

После того, как вы нажали Enterи получили сообщение об ошибке, вы можете просто вернуться в историю:

Просто нажмите клавишу на клавиатуре, чтобы исправить опечатку. Если вы нажмете клавишу, терминал покажет вам эту строку:

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

Исправьте опечатки вокруг touch august $i+$2и добавьте doneв конце команды.

Затем нажмите Enterклавишу. Это должно решить вашу проблему.

Анвар
источник
1

как объяснено здесь , в bash у вас есть команды для управления историей, как указано в руководстве. Одним из них является edit-and-execute-command.

Это откроет ваш редактор с вашими командами, уже введенными во временный файл, и вы можете легко исправить предыдущие строки. Вы можете добиться этого в режиме emacs с помощью C-xC-e, и в режиме vi, нажав vв обычном режиме.

команда редактирования и выполнения (C-xC-e)

Вызвать редактор в текущей командной строке и выполнить результат как команды оболочки. Bash пытается вызвать $ VISUAL, $ EDITOR и emacs в качестве редактора в указанном порядке.

kalnar
источник
Ух ты. Годы Linux, и я просто знаю это.
Аззамса
0

Это то, что сработало для меня.

CTRL+ Cот текущего command. Затем нажмите . Теперь вы можете редактировать любую нужную вам строку, перемещаясь с arrow buttons- или .

Удачи...

Аакаш Шах
источник