A barra invertida é um caractere especial para muitas aplicações:
-
incluindo o shell: você precisa escapar usando outra barra invertida ou mais elegantemente, usando aspas simples quando possível:
$ printf '%s\n' foo\bar 'foo\bar' foo\bar foo\barAqui o comando recebeu dois argumentos com o valor
foo\bar, que foram ecoados como estão no terminal.(Acima, usei
printfem vez deecho, já que muitas implementações deechotambém fazem sua própria interpretação de barra invertida (aqui expandiria\bem um caractere de retrocesso)). -
Mas a barra invertida também é um caractere especial para
grep. Este comando reconhece muitas seqüências especiais como\(,\|,\.e assim por diante. Assim, da mesma forma, você precisa alimentar o grep com um\duplo para um caractere real de barra invertida. Isso significa que, usando o shell, você precisa digitar:grep 'foo\bar'ou equivalentemente:
grep foo\\bar(ambas as linhas dizem ao shell para transmitir
foo\barcomo argumento paragrep). -
Muitos outros comandos interpretam barras invertidas em alguns de seus argumentos ... e dois níveis de escape são necessários (um para escapar da interpretação do shell, um para escapar da interpretação do comando).
A propósito, para o shell, aspas simples '…' previnem qualquer tipo de interpretação de caracteres, mas aspas duplas apenas previnem algumas delas: em particular $ , ' e \ permanecem caracteres ativos em "…" .