If you're at an interactive shell and you type something like:
echo this is it
Then later you can expand the first argument:
echo !^ #=> echo this
Or you can expand the last argument:
echo !$ #=> echo it
But now I'm wondering:
How would I access the nth argument? I looked through a related bash question, but it seems like that only works when in a script, because !n
just goes through my command history (instead of my argument history) - for example
echo !1 #=> echo ls
which makes sense, because
history | grep -E '^\s+1 ' #=> 1 ls
but what I want is echo !(some correct index) #=> echo is
This way:
!!:n
is the n'th arg!!:n-$
is args from n'th to lastNote:
!!
expands to the last commandAs per OPs' EDIT (moved):
Second argument of the second to last command:
!-n
expands to the command that was 'n' number of commands before the current command.Note:
!-1
and!!
are the same.