Sé que podemos escapar de un personaje especial como *(){}$
con el \
fin de ser considerados literales.
Por ejemplo \*
o\$
Pero en caso de .
que tenga que hacerlo dos veces, de lo \\.
contrario se considera un carácter especial. Ejemplo:
man gcc | grep \\.
¿Por que es esto entonces?
shell-script
grep
regular-expression
quoting
escape-characters
usuario registrado
fuente
fuente
man bash|grep \\.
Podría ser un ejemplo.man gcc | grep '\.'
.Respuestas:
En general, solo tiene que escapar una vez para que el carácter especial se considere literal. En algún momento tienes que hacerlo dos veces, porque tu patrón es usado por más de un programa.
Deje que discuta su ejemplo:
Este comando es interpretado por dos programas,
bash
intérprete ygrep
. La primera causa de escapebash
sabe\
es literal, por lo que la segunda es pasargrep
.Si a escapar de una sola vez,
\.
,bash
sabrá este punto es literal, y pasar.
agrep
. Cuandogrep
vea esto.
, piensa que el punto es un carácter especial, no literal.
Si escapa dos veces,
bash
pasará el patrón\.
agrep
. Ahoragrep
sepa que es un punto literal.fuente
grep \\. my_file
. La línea de comandos es interpretada por el shell, utilizando el primero\
para escapar del segundo, por lo que uno\
se pasa literalmente a grep. El punto.
no es especial para el shell, por lo que se pasa literalmente de todos modos. Grep luego lee el (single)\
y lo usa para escapar del punto.
.echo .
en la fiesta solo ... hace eco del.
personaje de bach .