UNIX: another useful tip. Bash supports a wide variety of command line editing tricks; you have the usual GUIish editing (backspace, insert new characters, delete, blah blah) through the GNU Readline library, and in addition to that you have the traditional csh-style history expansion (like ‘!!’ to refer to the previous command typed).
The latter are great, but they won’t actually be expanded until you hit Enter and run the command line. That can be inconvenient, resulting in the user being forced to reach for the rodent for some cut’n’paste instead.
Here’s a handy trick — add this line to ~/.inputrc
(creating the
file if necessary):
Control-x: shell-expand-line
Start a new bash shell. Now, if you type CTRL-X during command line entry, any shell metacharacters will be expanded on the current command line. For example:
% echo Hello world Hello world % echo Hi !$ (press CTRL-X) (current command line expands to:) % echo Hi world
There’s a
few more commands supported, but none of them are really quite
as useful as shell-expand-line
.
Update: ‘Smylers’ wrote to point me at this UKUUG talk from 2003 which discusses .inputrc expansions, and provides some insanely useful tips.
In particular, Magic Space clearly knocks this tip into a cocked hat, by performing the expansion on the fly as you type the command, with no additional keypresses — amazing! Bonus: it works if you use Emacs-mode line editing as well as Vi-mode.
I strongly recommend reading that paper — lots of other good tips there.