我正在尝试编写一个脚本,但我卡在这里。请查看代码!
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
← ↑ →↓
祝你好运...