我们如何将历史中的现有命令拆分为多行

我们如何将历史中的现有命令拆分为多行

在 shell 中输入一个很长的命令。现在继续向上箭头进入历史记录,对其进行调整,使其更长。在某个时候,你会想:“一开始我就应该把它变成多行命令”。那么,既然命令只有一行,有没有办法把它拆分开来?

例子:

foo | grep "aaaaaaaaaaaaaaaaaa" | grep "bbbbbbbbbbbbbb" | more

现在,为了更容易地继续编辑:

foo |\    << enter some control character here to split the line
grep "aaaaaaaaaaaaaaaaaa" |\
grep "bbbbbbbbbbbbbb" |\
more

在上面的例子中,将光标定位在管道符之后、输入反斜杠、然后输入Ctrl+是行不通的EnterShift+ EnterCtrl+N等也不行。根据按键的不同,新行会以 开头,但它似乎在等待最后一个字符(上方,而不是)>后面的文本。morefoo |

摆脱这种情况的传统方法是复制行(使用鼠标或从.history),将其粘贴到编辑器中,将其拆分并\在每行上添加 EOL,然后将其复制/粘贴回 CLI。这很丑陋和原始。

有没有更简单的方法来分解终端中的长行多个命令?

答案1

多行命令始终会以单行形式存档在命令历史记录中。在终端提示符下,您无法编辑一行以使其显示在多行上。

实现此目的的方法是,在默认编辑器中打开命令。将光标放在命令中的任意位置,按Ctrl+ XE。这将在默认编辑器(在 Ubuntu 上)中打开命令nano,您可以在其中进行所有编辑,包括拆分行。在 nano 中,按Ctrl+SX保存更改并关闭编辑器:您的命令将立即执行。

相关内容