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


8

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

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

有什么办法走上一行吗?我的意思是我在中打错了touch august $i+$2。按下ENTER键,所以我换了新的电话。如何返回上一行?


您应该在文件中编写脚本,然后从终端运行它。您也可以将UP键用于上一个命令,但无法还原该命令。
shantanu 2012年

Answers:


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+$2done在命令末尾添加 。

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


1

为解释在这里,在bash你有命令操纵历史的陈述,在它的说明书。其中之一是edit-and-execute-command

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

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

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


哇。多年的linux,我只是知道这一点。
azzamsa,

0

这对我有用。

CTRL+ C从当前command。然后按。现在,您可以通过移动arrow buttons- 或编辑任意行

祝好运...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.