Zsh 如何在命令行中获取上一个命令的第n个参数?

Zsh 如何在命令行中获取上一个命令的第n个参数?,zsh,Zsh,如果您在一个交互式shell中键入以下内容: echo this is it 然后,可以展开第一个参数: echo !^ #=> echo this echo !$ #=> echo it 也可以展开最后一个参数: echo !^ #=> echo this echo !$ #=> echo it 但现在我想知道: 如何访问第n个参数?我看了一遍,但这似乎只在脚本中起作用,因为!n只是浏览我的命令历史记录(而不是参数历史记录)-例如

如果您在一个交互式shell中键入以下内容:

echo this is it
然后,可以展开第一个参数:

echo !^    #=> echo this
echo !$    #=> echo it
也可以展开最后一个参数:

echo !^    #=> echo this
echo !$    #=> echo it
但现在我想知道:

如何访问第n个参数?我看了一遍,但这似乎只在脚本中起作用,因为
!n
只是浏览我的命令历史记录(而不是参数历史记录)-例如

    echo !1 #=> echo ls
这是有道理的,因为

    history | grep -E '^\s+1 ' #=> 1  ls
但我想要的是回声!(一些正确的索引)#=>回声是这样的:

~ $ echo this is it
~ $ echo !!:2
echo is
is
!!:n
是第n个参数
!!:n-$
是从第n个到最后一个的参数

注意:
展开到最后一个命令

根据OPs的编辑():

倒数第二个命令的第二个参数:

~ $ echo foo bar baz # This one is the target
foo bar baz
~ $ echo catz ratz batz
catz ratz batz
~ $ echo !-2:2
echo bar
bar
-n
扩展到当前命令之前的命令数为“n”的命令

注意:
-1
是相同的