如何从历史记录中的最后一个命令访问第二个参数?

Abd*_*red 11 command-line bash command-history history-expansion

我开始学习一些正则表达式,因此我反复使用这个命令:

grep pattern /usr/share/dict/american-english 
Run Code Online (Sandbox Code Playgroud)

只有模式变化的部分,所以我不得不一遍又一遍地写长表达“ /usr/share/dict/american-english ”。

有人评论说,可以通过键入神秘的字符组合而不是完整的表达式来从命令历史记录中扩展命令的参数。你能告诉我那些神秘的字符组合吗?

Doo*_*nob 23

您可以使用<M-.>(或者<Esc>.如果您的 Meta 键用于其他用途),即 Meta-dot(或 <esc> dot),其中 Meta 通常是 Alt 键,来调用上一个命令的最后一个参数。所以,首先你要输入

$ grep foo /usr/share/dict/american-english
Run Code Online (Sandbox Code Playgroud)

然后如果你想搜索其他东西,你可以输入

$ grep bar
Run Code Online (Sandbox Code Playgroud)

键入一个空格然后Esc.(即先按转义键,然后按句点键):

$ grep bar /usr/share/dict/american-english
Run Code Online (Sandbox Code Playgroud)

您还可以使用以下任一项:

$ grep bar !:2
$ grep bar !$
Run Code Online (Sandbox Code Playgroud)

where!:2和 分别!$表示“第二个参数”和“最后一个参数”。