UNIX has utilities like whereis (50.5) and which (50.8) to look for a command on the system. But whereis doesn't look in your shell's search path, so it may not find shell scripts in local system directories or your bin directory (4.2). And to use which, you have to know the exact name of the command, because which only shows the first command with that name in your path.
If you're like me, you can't always remember the name of the command you're looking for. "Wasn't it called reference or refer or something like that?" The findcmd script saves me a lot of guessing. It shows all command names, in all directories in my search path, that contain some string. So, I'll look for command names that have "ref" in them:
%findcmd ref
/home/jerry/.bin/zrefile /usr/bin/X11/xrefresh /usr/local/bin/grefer /bin/cxref /bin/refer /usr/bin/cxref /usr/bin/refer ./preferences
findcmd | After a couple of tries, I usually find the command I want. The findcmd script is on the CD-ROM. |
---|
First, the script edits a copy of your
PATH (6.4)
to change any current directory entry to a dot (:.:
).
Next, a colon (:
) in the
IFS (35.21)
variable lets the shell split the PATH at the colons;
a
for loop (44.16)
steps through each directory in the PATH
and runs ls -l to find matching files.
Finally, a
sed (34.24)
script reads through the output of all the ls
commands in the loop, editing and printing matching lines (executable files with
the program name we want).
-