小编典典

如何使用上一个命令中的参数?

all

我知道Esc+.给了你最后一个命令的最后一个参数。

但我对最后一个命令的第一个参数感兴趣。是否有键绑定可以这样做?

在同一行中,是否有从最后一个命令获取第 n 个参数的通用方法?我知道在 bash 脚本中,您可以使用$0$1,但这些在命令行上不起作用。

此外,如何遍历先前命令的第 0 个参数,就像我们可以通过连续按Esc+来处理最后一个参数一样.


阅读 128

收藏
2022-04-07

共1个答案

小编典典

正如M-.(meta-dot or esc-dot or alt-dot) 是 readline 函数一样yank-last- argM-C-y(meta-control-y or esc-ctrl-y or ctrl-alt-y) 是 readline 函数yank- nth-arg。如果不指定n,它会拉出上一个命令的第一个参数。

要指定参数,请按 Escape 和数字或按住 Alt 并按数字。您可以这样做Alt--开始指定一个负数,然后释放 Alt
并按下数字(这将从参数列表的末尾开始计算。

例子:

输入以下命令

$ echo a b c d e f g
a b c d e f g

现在在下一个提示符下,输入echo(后面有空格),然后

Alt- Ctrl-y你现在会看到:

$ echo a

无需按下Enter,请执行以下操作

Alt- 3 Alt- Ctrl-y

Alt- - 2 Alt- Ctrl-y

现在你会看到:

$ echo ace

顺便说一句,您可以echo通过选择参数 0 将其放在线上:

Alt- 0 Alt- Ctrl-y

编辑:

要回答您添加到原件中的问题:

您可以按Alt-0然后反复按Alt-.逐步执行之前的命令 (arg
0)。同样Alt--然后重复Alt-.将允许您逐步完成之前的倒数第二个参数。

如果历史上的某一行没有合适的论据,就会敲响警钟。

如果您经常使用某个特定的组合,您可以定义一个宏,这样一键即可执行它。此示例将通过按Alt-
Shift-从先前命令中调用第二个参数Y。您可以选择任何您喜欢的可用按键来代替这个按键。您可以反复按它以逐步浏览以前的内容。

要试用它,请在 Bash 提示符下输入宏:

bind '"\eY": "\e2\e."'

要使其持久化,请将此行添加到您的~/.inputrc文件中:

"\eY": "\e2\e."

不幸的是,这似乎不适用于 arg 0 或负参数数。

2022-04-07