在 shell 中输入一个很长的命令。现在继续向上箭头进入历史记录,对其进行调整,使其更长。在某个时候,你会想:“一开始我就应该把它变成多行命令”。那么,既然命令只有一行,有没有办法把它拆分开来?
例子:
foo | grep "aaaaaaaaaaaaaaaaaa" | grep "bbbbbbbbbbbbbb" | more
现在,为了更容易地继续编辑:
foo |\ << enter some control character here to split the line
grep "aaaaaaaaaaaaaaaaaa" |\
grep "bbbbbbbbbbbbbb" |\
more
在上面的例子中,将光标定位在管道符之后、输入反斜杠、然后输入Ctrl+是行不通的Enter。Shift+ Enter、Ctrl+N等也不行。根据按键的不同,新行会以 开头,但它似乎在等待最后一个字符(上方,而不是)>
后面的文本。more
foo |
摆脱这种情况的传统方法是复制行(使用鼠标或从.history
),将其粘贴到编辑器中,将其拆分并\
在每行上添加 EOL,然后将其复制/粘贴回 CLI。这很丑陋和原始。
有没有更简单的方法来分解终端中的长行多个命令?
答案1
多行命令始终会以单行形式存档在命令历史记录中。在终端提示符下,您无法编辑一行以使其显示在多行上。
实现此目的的方法是,在默认编辑器中打开命令。将光标放在命令中的任意位置,按Ctrl+ XE。这将在默认编辑器(在 Ubuntu 上)中打开命令nano
,您可以在其中进行所有编辑,包括拆分行。在 nano 中,按Ctrl+SX保存更改并关闭编辑器:您的命令将立即执行。