Many AIX and UNIX users use bash as their preferred shell. Navigating in the history with the cursor keys is certainly used countless times a day by all users. As long as the interesting commands are only a short time ago, this works very well. However, for commands longer in the past, access using the cursor keys is relatively time-consuming. Who wants to press the cursor keys 50 times to access a command?
The bash history expansion mechanism offers a much more efficient option here. Previous commands can be accessed using the history expansion character “!“. The commands can be specified in different ways:
- The number of the command: !31
- The nth previous command: !-n (e.g. !-3 for the third last command)
- The last command that begins with a specific character string: !ca
- The last command that has a specific character string anywhere: !?ca
However, the possibilities of the bash are far from exhausted. You can specifically access individual arguments of a previous command and even make changes.
Here are a few of those options:
- !! (run the last command again)
- ^op^art (run the last command again, but replace “op” with “art“)
- cat !?sam?:% (run the cat command on the last argument containing the string “sam“)
- vi !$ (Run vi on the last argument of the last command)
A description of these and other bash options can be found here: