我刚刚在终端中执行了以下命令:
$ while read i
> do
> echo $i
> done
4
4
但是当我尝试使用向上箭头历史功能重新运行命令时,我只得到部分命令,如下所示:
$ while read i
如何在 KSH 中使用向上箭头打印整个 while 循环?
答案1
原始 ksh 中的行编辑非常有限。您可能想使用它的“克隆”之一,例如 zsh 或 bash。
对于 ksh93,我发现如果您使用vi
编辑模式 ( ksh -o vi
) 而不是emacs
orgmacs
模式,则调用多行命令不会工作,尽管换行符呈现为^J
.这也是您pdksh
在所有编辑模式中所获得的及其衍生版本。
请注意,您还可以输入这些换行符,以便Ctrl+VCtrl+J在一行上输入多行代码,然后即使在emacs
模式下也可以稍后调用它。
另一种选择是fc
在真实的文本编辑器中编辑上一行:
fc while
将$FCEDIT
在ex
包含while
.然后在编辑器中保存并退出后运行它。
¹zsh
还有一个ksh
模拟模式,使其表现得更接近,以防您确实依赖ksh
某些ksh
行为(使用emulate ksh
或 调用zsh
as时输入ksh
)