When I first began using Linux I was quite disappointed in the performance of the tab key under Bash. Not only did it not function like it does in 4OS2, which I was used to at the time, but it insisted on beeping just because it had more than one match. At the time I was not yet used to the idea that such behaviours could be changed so I just pulled my PC speaker (I can't remember the last time I'd heard anything useful come out of that). As it happens, there is a better way: the /etc/inputrc file (some systems also support a per-user equivalent, ~/.inputrc).
Bash has a number of interesting and useful options that can be set through the /etc/inputrc file. The complete list of these can be found in the man page for bash. I found the following two to be particularly handy:
set bell-style none
- Turns off that incessant beeping.
- Makes the tab key behave like it does in 4OS2 - when it finds multiple matches, it gives you the first one. Hitting the tab key again gives the next matching filename. (I believe you need at least Bash 2.0 for this one to work.)