Tuesday, December 28, 2010

Linux Toolbox: Bang (!) Commands

Most modern shells support csh's bang commands - bash, tcsh and zsh all do.  While some bang commands don't work in all those shells, all of the following do.

For the purposes of these tips, every tip will assume these are the last three commands you ran:

% which firefox
% make
% ./foo -f foo.conf
% vi foo.c bar.c


Getting stuff from the last command:

Full line:  % !!           becomes:  % vi foo.c bar.c
Last arg :  % svn ci !$    becomes:  % svn ci bar.c
All args :  % svn ci !*    becomes:  % svn ci foo.c bar.c
First arg:  % svn ci !!:1  becomes:  % svn ci foo.c

Accessing commandlines by pattern:

Full line:  % !./f          becomes:  % ./foo -f foo.conf
Full line:  % vi `!whi`     becomes:  % vi `which firefox`
Last arg :  % vi !./f:$     becomes:  % vi foo.conf
All args :  % ./bar !./f:*  becomes:  % ./bar -f foo.conf
First arg:  % svn ci !vi:1  becomes:  % svn ci foo.c

The double bang !! comes in very handy whenever you need to re-execute a command using sudo if you don't have the required permissions, all you need to do is execute the following:

sudo !!

via: ILUG Mailing List

No comments:

Post a Comment