you could do that, but it adds a fair amount of awkwardness into the lexer; i'm not sure that's justified. rc uses ~ instead of ^ for the same reason, which i would have done in the inferno shell, except that i wished to re-use the existing filepat module. an alternative might be to scan the pattern before passing to filepat, substituting [~ by [^; it would be quite simple, just add something like the following to patquote() if(word[i] == '[' && i < len word - 1 && word[i+1] == '~') word[i+1] = '^'; although that does potentially break some existing shell scripts and it's not clear whether ['^'b] should continue to have the same meaning. i'll do this if there's a consensus...