如何在命令行获得先前命令的第n个参数?

问题描述:

如果你在一个交互式shell,并键入类似:如何在命令行获得先前命令的第n个参数?

echo this is it 

后来的后来,你可以展开第一个参数:

echo !^ #=> echo this 

或者你可以展开最后一个参数:

echo !$ #=> echo it 

但现在我想知道:

我该怎么交流请问第一个参数是n?我通过a related bash question看了看,但是好像只有工作在一个脚本时,因为!n刚刚经过我的命令历史记录(而不是我的论点历史) - 例如

echo !1 #=> echo ls 

这是有道理的,因为

history | grep -E '^\s+1 ' #=> 1 ls 

,但我要的是echo !(some correct index) #=> echo is

这样:

~ $ echo this is it 
~ $ echo !!:2 
echo is 
is 

!!:n是第n ARG
!!:n-$是从第n个参数传递给持续

注:!!扩展到最后一个命令


作为每OPS的EDIT( moved):

第二个参数第二个到最后一个命令:

~ $ 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!!是相同的。