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