Oops, sent prematurely: I further argue that '\\' should send a single backslash to the shell, so that you can write !echo '\\n" to get the output '\n'.
On Tue, Jul 13, 2021 at 11:49 AM John Cowan <co...@ccil.org> wrote: > The Posix standard says "Within the text of that shell command line, the > unescaped character '%' shall be replaced with the remembered pathname". > Now if "unescaped" means anything at all here, it means "not preceded by a > backslash", just like everywhere else in Posix. So the current GNU > behavior is unequivocally wrong. > > Both the GNU and BSD man pages say that escape sequences are not treated > specially in the "!" command, and this also seems to be wrong or at best > misleading. The BSD behavior of "echo '\%' is to output "\%", which is > certainly not illegal. > > But we must ask if it is the most useful behavior. I contend that it is > not. If you want to pass a '%' character to the shell, the obvious way to > do so is by writing '\%', just as the way to get '*' interpreted literally > in a regex is to write '\*'. The BSD behavior is not only surprising, it > makes it impossible to send a simple '%' to the shell at all. This is the > problem which escape sequences were designed to solve. > > So I argue that the sequence '\%' in a '!' command should send '%' to the > shell without a backslash, and that the man page be fixed. I further argue > that '\\' s >