Según Wikipedia, un metacaracter es cualquier carácter que tenga un significado especial, como un quilate (^), un signo de dólar ($) o un asterisco (*).
En términos de Linux, hay un buen número de estos metacaracteres y sus significados difieren dependiendo del comando o programa que esté ejecutando.
Índice de contenidos
El punto final como un metacaracter (.)
El humilde punto final se usa para donar la posición actual cuando se ejecutan comandos como cd, find o sh, pero dentro de aplicaciones como awk, grep y sed se usa para denotar cualquier carácter.
Como ejemplo, el siguiente comando encontrará todos los archivos mp3 en la carpeta actual y debajo.
encontrar -nombre *.mp3
Si ejecuta ese comando en su directorio de trabajo actual (pwd) entonces probablemente obtendrá resultados, asumiendo que mantiene sus archivos mp3 en una carpeta de música dentro de su carpeta de inicio.
Ahora mira este comando:
ps -ef | grep f..efox
El comando ps lista todos los procesos en ejecución en su ordenador. El comando grep toma líneas de entrada y busca un patrón.
Por lo tanto, el comando ps -ef obtiene una lista de procesos en ejecución y se la da a grep que busca cualquier línea en la lista que tenga f..efox donde el . pueda significar cualquier carácter.
Si tienes Firefox funcionando, obtendrás una coincidencia. Del mismo modo, si tienes un programa llamado fonefox o freefox en funcionamiento, también se devolverán.
El asterisco como metacaracter (*)
El asterisco es un metacaracter más conocido universalmente y se utiliza para significar 0 o más cuando se busca un patrón.
Por ejemplo:
encontrar -nombre *.mp3
El *.mp3 devuelve una coincidencia para cualquier nombre de archivo que termine en.mp3. Del mismo modo, podría haber usado el asterisco con el comando grep como se muestra a continuación:
ps -ef | grep F*efox
Vale la pena señalar que esto difiere ligeramente porque el asterisco significa cero o más, así que además de encontrar firefox, facefox y fonefox también puede encontrar flutefox, ferretfox e incluso sólo fefox.
El quilate como un metacaracter (^)
El quilate (^) se utiliza para indicar el comienzo de una línea o una cadena. Entonces, ¿cómo se usa?
El comando ls se utiliza para listar todos los archivos de una carpeta de la siguiente manera:
ls
Si desea conocer todos los archivos de una carpeta que comienza con una determinada cadena, como «gnome», puede utilizar el quilate para especificar esa cadena.
Por ejemplo:
ls | grep ^gnome
Tenga en cuenta que esto sólo enumera los archivos que empiezan con gnome. Si desea que los archivos que tienen un gnomo en el nombre de archivo en cualquier lugar, entonces volvería a revertir al asterisco.
En el ejemplo anterior, el ls devuelve una lista de nombres de archivos y pasa esa lista a grep, que se utiliza para la concordancia de patrones. grep sabe que el símbolo de quilates significa encontrar cualquier cosa que empiece con los caracteres que vienen después de él y, en este caso, es un gnomo.
El símbolo del dólar como un metacaracter ($)
El símbolo del dólar puede tener múltiples significados como metacaracteres dentro de Linux.
Cuando se utiliza para hacer coincidir los patrones, significa lo opuesto a quilate y denota cualquier patrón que termine con una cuerda en particular.
Por ejemplo:
ls | grep png$
Esto lista todos los archivos que terminan con png.
El símbolo del dólar también se utiliza para acceder a las variables de entorno dentro de la shell bash.
Por ejemplo:
Exportar perro=molly
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>))echo $dog
La línea export dog=molly crea una variable de entorno llamada dog y establece su valor en molly. Para acceder a la variable de entorno se utiliza el símbolo $. Con el símbolo $ el echo $dog statement muestra molly pero sin él, el echo dog statement sólo muestra la palabra perro.
Escapar Metacaracteres
A veces no quieres que el metacaracter tenga un significado especial. ¿Qué pasa si tienes un archivo llamado f.refox y un archivo llamado firefox.
Ahora mire el siguiente comando:
ls | grep f.refox
¿Qué crees que se devuelve? Tanto f.refox como firefox son devueltos porque ambos coinciden con el patrón.
Para devolver sólo f.refox necesitarías escapar de la parada completa para realmente significar una parada completa de la siguiente manera:
ls | grep f\.refox
Metacaracteres comunes y sus significados
Carácter Significado Cualquier carácter*Cero o más caracteres^ Coincide con cualquier línea o cadena que empiece con un patrón (i.e. ^gnome)$ Coincide con cualquier línea o cadena que termine con un patrón (i.e gnome$)Escapa el siguiente carácter para eliminar su significado especial[]Coincidir con uno de una lista o rango (i.e [«abc», «def»] o[1..9]+Coincidir con uno o más caracteres precedentes (i.e grep a+)?Coincidir con cero o con uno de los Metacaracteres de Linux anteriores