En este micro apunte vamos a ver para qué sirven y qué son las wildcards
Y para empezar esto sin más tramites, podemos dar el primer paso respondiendo…
¿Qué son las wildcards?
Las wildcards son caracteres especiales.
Podemos entender esto de una mejor manera si traducimos la palabra wildcards al castellano y la reemplazamos por comodines.
En una baraja o mazo de naipes, un comodín es una carta especial que podemos usar en representación de cualquier otra carta.
Del mismo modo, en informática una wildcard es un carácter especial que puede ponerse en lugar de cualquier otro carácter.
Podemos ver esto con un ejemplo básico. Tomemos el comodín “?”, que puede ir en lugar de cualquier carácter.
Sabiendo esto, escribir la palabra casa es lo mismo que decir la palabra “cas?”.
Pero lo importante es que la wildcard “?” no solo ocupa el lugar de la letra “a”. Cuando lo usamos también estamos queriendo decir “casb”, “casc”, “casd”, “case”…
Entonces…
¿Para qué sirven las wildcards?
En la shell estamos trabajando constantemente con archivos. Las wildcards son comodines de búsqueda, que nos ayuda a encontrar o trabajar con esos archivos de manera más rápida.
Por ejemplo, por medio de wildcards podemos crear patrones de búsqueda mucho más complejos.
Si un comando acepta nombres de archivos, podemos agregarle wildcards. Digamos por ejemplo que queremos remover todos los archivos que comienzan con “suel”, son del tipo .txt y tienen un carácter extra.
Podemos escribir entonces:
rm suel?.txt
Pero recordemos que con esto vamos a remover tanto “suela.txt” como también “suelo.txt” y cualquier otro archivo que comience con “suel”, tenga exactamente un carácter extra y que termine con “.txt”.
Pero si queremos expresar dos caracteres que desconocemos en lugar de solo el último, podemos poner:
rm sue??.txt
Realmente podemos combinarlo de la manera que mejor nos sirva.
Tipos de wildcards
Ya sabemos que:
El comodín ? puede ir en lugar de cualquier carácter en particular, pero reeemplaza un único caracter por vez..
Pero tenemos otra opciones, por ejemplo:
La wildcard * (asterisco) iguala a cualquier número de caracteres.
Digamos por ejemplo que queremos mover todos los archivos que comienzan con la letra “a”. Para eso usamos el comodín * (asterisco) que entra en lugar de cualquier carácter, en cualquier cantidad.
Por ejemplo decir “a*” para el sistema significa que nos estamos refiriendo tanto al archivo “amor” como al archivo “avioneta” o al archivo “antílope”.
Por esto escribir a* es lo mismo que decir “todos los nombres que comienzan con la letra a.
Conociendo esto, nos queda una cosa más para terminar.
Eso es algo conocido como…
Character Classes (clases de caracteres)
Combinando wildcards con el uso de corchetes podemos crear rangos de búsqueda bien definidos.
Por ejemplo, antes decíamos que podemos escribir la palabra “casa” como “cas?” pero con eso también nos llevamos arrastrados muchos nombres más.
Pero podemos ser más específicos y escribir
cas[aeio]
Con esto nos estamos refiriendo a cualquier palabra que empiece con “cas” y termine con cualquiera de esas cuatro vocales. Con eso cubrimos los nombres de archivos: casa, case, casi y caso.
Por otra parte podemos usar también el signo de admiración ! Que en este caso quiere decir “todos los que no sean iguales a los caracteres que aparecen en el corchete”.
Entonces podemos decir que escribir
cas[!aeio]
Descarta cualquier palabra que empieza con “cas” y termina con cualquiera de esas cuatro vocales.
Como es de esperar, también podemos usar mayúsculas. Por ejemplo decir:
[DF]*
Quiere decir “cualquier archivo cuyo nombre comience con las letras D mayúscula o F mayúscula”.
Se pueden crear rangos, por ejemplo escribir [b-n] quiere decir “todas las letras incluidas entre la letra b y la letra n”.
Y se pueden usar números también, por ejemplo el rango comprendido entre 1 y 5 nos queda de este modo
[1-5]
Conclusión
Tenemos la habilidad de combinar los comodines ? y * en conjunto con los corchetes de muchas formas.
Personalmente apenas me estoy acostumbrando al uso de wildcards, pero con esto ya expuesto tenemos las bases para saber qué son y para qué sirven.
Voy a tratar de usar todo esto para mejorar en mi camino por aprender a programar en Bash.
Pero es fácil ver porque tenemos que conocer sobre su utilización, agregar este tipo de carácter especial en nuestras búsquedas puede hacer que nuestro trabajo en la máquina sea mucho más sencillo.
Como siempre, cualquier error que encuentres o idea que quieras comentarme sobre este tema, no dejes de decírmelo en los comentarios.
¡Hasta el siguiente apunte!
Tiago de Oliveira
Excelente artículo, me ha ayudado mucho. Gracias por compartir tus conocimientos. Saludos!
Pamela Zambrana
Gracias por tu aporte
Karl apuntón
Gracias, apuntante 🙂
Concreto y al punto.
juan
que tendria que ver con anyconect creo que ya me confundi mas
Gustavo
Hola, Juan.
Por lo que pude encontrar en una búsqueda rápida, eso de anyconnect tiene que ver con algo de Cisco y “wildcard certificates”.
Al parecer en ese caso se utiliza el asterisco “*” como una wildcard, haciendo que el certificado SSL se aplique al dominio principal y a todos los subdominios que incluya.
No conozco mucho de este asunto de Cisco y certificados, pero espero que la respuesta te sirva de ayuda.
Gustavo.