Is there a way in Bash to recall the argument of the previous command?
I usually do vi file.c
followed by gcc file.c
.
Is there a way in Bash to recall the argument of the previous command?
Is there a way in Bash to recall the argument of the previous command?
I usually do vi file.c
followed by gcc file.c
.
Is there a way in Bash to recall the argument of the previous command?
You can use $_
or !$
to recall the last argument of the previous command.
Also Alt + .
can be used to recall the last argument of any of the previous commands.
If the previous command had two arguments, like this
ls a.txt b.txt
and you wanted the first one, you could type
!:1
giving
a.txt
Or if you wanted both, you could type
!:1-2
giving
a.txt b.txt
You can extend this to any number of arguments, eg:
!:10-12
In the command line you can press esc-. or alt+.
It cycles through the previous arguments you used.
!!:n
where n
is the 0-based position of the argument you want.
For example:
echo 'one' 'two'
# "one two"
echo !!:2
# "two"
The !
prefix is used to access previous commands.
Other useful commands:
!$
- last argument from previous command!^
- first argument (after the program/built-in/script) from previous command!!
- previous command (often pronounced "bang bang")!n
- command number n
from history
!pattern
- most recent command matching pattern
!!:s/find/replace
- last command, substitute find
with replace
More info on command history
If you know the number given in the history for a particular command, you can pretty much take any argument in that command using following terms.
Use following to take the second argument from the third command in the history,
!3:2
Use following to take the third argument from the fifth last command in the history,
!-5:3
Using a minus sign, you ask it to traverse from the last command of the history.
Yes, you can use !$
to recall the last argument of the preceding command.
!* runs a new command with all previous arguments.
ls /tmp
cd !*
#you are now in /tmp