In the tcsh manpage, the effects of set complete = enhance are defined as follows:[...] completion 1) ignores case and 2) considers periods, hyphens and underscores ('.', '-' and '_') to be word separators and hyphens and underscores to be equivalent.As regards 1), I know that readline can be configured to ignore case through set completion-ignore-case on. So my question concerns only 2).For instance, if I have a directory containing several files with similar basenames but different extensions like this:$ lsfile0.dat file1.dat file2.dat files.shthen I want the shell to be able to complete on file extension:$ cat .sh<TAB>$ cat files.shIs there a way to achieve or, at least, mimic this behavior in bash?EDITFollowing first answers, here are other examples that show more accurately how the tcsh feature works:$ lsabc.foo abc.bar cab.foo cab.bar$ cat a.f<TAB>$ cat abc.fooor:$ cat .b<TAB>abc.bar cab.bar$ cat .barActually, tcsh completes both basename and extension. The behavior intended here is to list the possibilities if more than one, as usual with TAB completion, not to insert them all.
How to get the equivalent of tcsh's enhanced completion in bash?
bash;autocomplete
This is not quite what you need but close. The Ctrl + x, g shortcut (C-x g in emacsspeak) shortcut will list the expansinos of a glob. So, in your example:$ cat *.b*<Ctrl><x><g>abc.bar  cab.bar  So, unlike what you describe for tcsh, this needs a valid glob. In other words, it does the equivalent of $ echo *.b*Note that the shortcut is pressing Ctrl and x together, then releasing them and pressing g.This is documented in man bash:   glob-list-expansions (C-x g)          The list  of  expansions  that  would  have  been  generated  by          glob-expand-word  is  displayed,  and the line is redrawn.  If a          numeric argument is supplied, an  asterisk  is  appended  before          pathname expansion.