如何返回终端中脚本的上一行?

如何返回终端中脚本的上一行?

我正在尝试编写一个脚本,但我卡在这里。请查看代码!

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

有没有办法回到上一行?我的意思是我输入了错误,我输入了touch august $i+$2。我按下了ENTER键,所以我换了一行。我怎样才能回到上一行?

答案1

bash的命令行编辑器不支持此功能,请执行以下操作安瓦尔建议或将所有内容放在一行上,用分号分隔,或将其放入脚本文件中。

顺便提一下,zsh具有可帮助实现此目的的功能。zsh行编辑器 ( zle) 是一个功能更全面的编辑器,支持在多行命令内移动。当命令变得太长而无法处理时,zle它有一个内置功能,edit-command-line,可在您最喜欢的编辑器中打开命令行。它通常不受约束,请尝试:

bindkey "^[e" edit-command-line

Alt-e现在应该激活它,保存并退出以返回命令行。

答案2

按下Enter并收到错误消息后,您可以返回历史记录:

只需按下键盘上的键即可修复拼写错误。如果你按下键,终端将显示以下行:

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

纠正错误输入的内容并在命令末尾touch august $i+$2添加 。done

然后按下Enter按键。这应该可以解决你的问题。

答案3

正如解释的那样这里,在 bash 中,您可以使用手册中所述的用于操作历史记录的命令。其中之一是edit-and-execute-command

这将打开编辑器,其中的命令已在临时文件中输入,您可以轻松更正前面的行。您可以在 emacs 模式下按 来实现此目的,在普通模式下C-xC-e按 vi 模式来实现此目的。v

编辑并执行命令(C-xC-e)

在当前命令行上调用编辑器,并将结果作为 shell 命令执行。Bash 尝试按顺序调用 $VISUAL、$EDITOR 和 emacs 作为编辑器。

答案4

这对我有用。

CTRL+C从当前行开始command。然后按。现在,您可以使用-或移动来编辑您想要的任何一行。arrow buttons

祝你好运...

相关内容