On Mon, Apr 30, 2018 at 8:56 PM, Michael van Elst <[email protected]> wrote:
> [email protected] (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