! 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
ok? 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 8 Mar 2015 19:47:31 -0000 @@ -805,7 +805,7 @@ x_escape(const char *s, size_t len, int int rval = 0; for (add = 0, wlen = len; wlen - add > 0; add++) { - if (strchr("\"#$&'()*:;<=>?[\\]`{|}", s[add]) || + if (strchr("\"#$&'()*:;<=>?[\\]`{|}!", s[add]) || strchr(ifs, s[add])) { if (putbuf_func(s, add) != 0) { rval = -1;