Aliases and Variables Keep Things Short and Simple

Tuesday Sep 2nd 2008 by Juliet Kemp

Tip of the Trade: To save on keystrokes, set up aliases that take command line variables as an argument.

Juliet Kemp
Aliases are great for saving typing time, and you probably already have a handful set up. But you may not be aware that it's possible to set up aliases that take command line variables as an argument. Read on for an example.

Note: You can set up the commands given below either directly from the command line or by putting them into your shell config file (e.g., ~/.bashrc or ~/.tcshrc) and then sourcing that.

Occasionally, I want to check which desktop belongs to a particular user. I have a local LDAP directory value set for this, so the command

ldapsearch "(localUser=username)"
does the trick. I want to set up an alias for this, with the command line argument taking the place of username.

In tcsh, this can be done straightforwardly using !:1 for the first argument, !:2 for the second, and so on. Remember, you'll need to escape the ! in the alias definition.

So for my LDAP search:

alias finduser 'ldapsearch "(localUser=!:1)"'
Then the following:
$ finduser username

Unfortunately, in bash/sh/ksh this is no good, as you can't put arguments in aliases. What you can do to produce the same effect is write a function.

function finduser() { ldapsearch "(localUser=$1)"; }
(Note the ; at the end of the command.)

To pass in further arguments to bash, you use $2, $3 and so on. Or, to pass in all the arguments on the command line, $*. This gives much more scop for saving your typing fingers!

Mobile Site | Full Site
Copyright 2017 © QuinStreet Inc. All Rights Reserved