On March 9, 2015 3:28:02 PM GMT+01:00, Stuart Henderson <st...@openbsd.org> 
wrote:
>On 2015/03/09 11:19, Alexander Hall wrote:
>> 
>> 
>> On March 9, 2015 12:49:07 AM GMT+01:00, Stuart Henderson
>> <st...@openbsd.org> wrote:
>> >On 2015/03/08 15:06, Philip Guenther wrote:
>> >> On Sun, Mar 8, 2015 at 2:52 PM, Christian Weisgerber
>> ><na...@mips.inka.de> wrote:
>> >> > On 2015-03-08, Stuart Henderson <st...@openbsd.org> wrote:
>> >> >
>> >> >> ! needs to be escaped in tab-completion otherwise this happens.
>> >> >>
>> >> >> $ ls
>> >> >> Season 4 UPDATE!-FFdJhCSr8ng.mp4
>> >> >> $ ls Season\ 4\ UPDATE!-FFdJhCSr8ng.mp4
>> >> >> ls: Season 4 UPDATE!4: No such file or directory
>> >> >
>> >> > Huh?
>> >> >
>> >> > $ ls
>> >> > Season 4 UPDATE!-FFdJhCSr8ng.mp4
>> >> > $ ls Season\ 4\ UPDATE!-FFdJhCSr8ng.mp4
>> >> > Season 4 UPDATE!-FFdJhCSr8ng.mp4
>> >> >
>> >> > What am I missing?
>> >>
>> >> sthen apparently has "set -o csh-history" in his profile.
>> >
>> >Ah yes, that's correct, I'd forgotten I'd set this.
>> 
>> Oh, is that what makes me hate bash so much?
>> 
>> Either way, in order not to escape stuff overly much, would it make
>> sense to make the ! escaping depend on the csh-history option?
>
>That can be done like this, but it feels like too much magic to me.

Yeah that's overkill. And I don't encounter many files on the command line with 
a bang in the name anyway, so I'm fine with the simpler variant. 

/Alexander 

>
>Index: edit.c
>===================================================================
>RCS file: /cvs/src/bin/ksh/edit.c,v
>retrieving revision 1.39
>diff -u -p -r1.39 edit.c
>--- edit.c     17 Dec 2013 16:37:05 -0000      1.39
>+++ edit.c     9 Mar 2015 14:26:29 -0000
>@@ -806,6 +806,7 @@ x_escape(const char *s, size_t len, int 
> 
>       for (add = 0, wlen = len; wlen - add > 0; add++) {
>               if (strchr("\"#$&'()*:;<=>?[\\]`{|}", s[add]) ||
>+                  (Flag(FCSHHISTORY) && strchr("!", s[add])) ||
>                   strchr(ifs, s[add])) {
>                       if (putbuf_func(s, add) != 0) {
>                               rval = -1;

Reply via email to