Reputation: 8055
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
Upvotes: 14
Views: 1943
Reputation: 22428
This way:
~ $ echo this is it
~ $ echo !!:2
echo is
is
!!:n
is the n'th arg
!!:n-$
is args from n'th to last
Note: !!
expands to the last command
Second argument of the second to last command:
~ $ 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
expands to the command that was 'n' number of commands before the current command.
Note: !-1
and !!
are the same.
Upvotes: 17