On Mon, Apr 30, 2018 at 8:56 PM, Michael van Elst <mlel...@serpens.de> wrote: > jo...@bec.de (Joerg Sonnenberger) writes: > >>touch 'foo bar' >>ls foo<TAB> > > Pressing TAB after foo yields: > > $ touch 'foo bar' > $ ls foo\ bar > foo bar > > But > > $ touch 'foo*bar' > $ ls foo<TAB><TAB> > foo bar foo*bar > $ ls foo*<TAB>bar > foo bar foo*bar > > Somewhere sh knows that a space needs quoting but not a '*'. It > also doesn't understand quotes on input:
I believe this is happening in libedit. Few months back I added escaping of special characters when doing filename auto-completion. I missed '*' as one of the special characters, it's a one line fix (patch below), which I can commit. Index: filecomplete.c =================================================================== RCS file: /cvsroot/src/lib/libedit/filecomplete.c,v retrieving revision 1.48 diff -u -p -r1.48 filecomplete.c --- filecomplete.c 27 Oct 2017 18:16:09 -0000 1.48 +++ filecomplete.c 30 Apr 2018 15:51:40 -0000 @@ -151,6 +151,7 @@ needs_escaping(char c) case '{': case '}': case '&': + case '*': return 1; default: return 0; > $ rm foo\<SPACE><TAB> > Display all 411 possibilities? (y or n) > I am debugging that one :) - Abhinav