Oct
24
Using arguments from the previous command
One of my favorite bash tricks is the ability to grab the last argument of the previous command with <ESC>.
$ vim program.sh
$ chmod +x <ESC>.
$ ./<ESC>.
But what if you need other arguments than just the last one? You can specify an argument number. For example <ESC>1<ESC>. gets you the first argument for your command.
$ mv foo bar
$ mv <ESC>. <ESC>1<ESC>. # rename bar back to foo
As a bonus, <ESC>0<ESC>. gets the previous command itself.
The Meta Key
If your terminal is configured for it, you can save time by holding down the Meta key (often ALT or OPTION) while pressing the number and . instead of pressing escape.
$ mv foo bar
$ mv <ALT>+. <ALT>+1<ALT>+.
Other Methods of Accessing Arguments
This post explaining the use of !! has some great tricks for working with arguments.
The one that jumped out to me is !!* which grabs all the arguments from your previous command:
$ touch README.md .gitignore LICENSE.txt
$ git add !!*