如何使用添加的参数重复命令

Moy*_*yli 7 bash command-history

我知道如何重复命令并在其后添加更多文本,!!如下所示:

ls -l
!! tmp
Run Code Online (Sandbox Code Playgroud)

第二行扩展为ls -l tmp.

但是如果我想在单词之间向命令添加参数怎么办?例如,如果我已完成以下操作:

ls tmp
Run Code Online (Sandbox Code Playgroud)

...然后我经常想将-l参数添加到命令中,但不重新输入整个内容或按下并使用箭头键将光标设置到正确的位置。!! -l不起作用,因为它变得ls tmp -l无效。(实际上,该命令比我在这里使用的简单示例要长得多。)

换句话说,我正在寻找类似的东西?? -l在那里??的东西,重复前面的命令,但增加了-l在第一和第二个单词之间。


只是为了清楚起见,ls -l tmp只是一个简化的例子。现实生活中的用例更接近于类似的东西/very/long/path/to/very-long-command --with=a --very=long --parameter=list

小智 3

!!:0是前一个命令的第 0 个字,并且!!:*是除第 0 个字之外的所有字。

!!:0 -l !!:*
Run Code Online (Sandbox Code Playgroud)

是您正在寻找的命令。

来源https://www.gnu.org/software/bash/manual/bash.html#Word-Designators