Un comodín es un carácter que se puede usar como sustituto de cualquiera de una clase de caracteres en una búsqueda, lo que aumenta en gran medida la flexibilidad y eficiencia de las búsquedas.
Los comodines se usan comúnmente en comandos de shell en Linux y otros sistemas operativos similares a Unix. Un shell es un programa que proporciona una interfaz de usuario de solo texto y cuya función principal es ejecutar comandos escritos por los usuarios y mostrar sus resultados.
Los comodines también se utilizan en expresiones regulares y lenguajes de programación. Las expresiones regulares son un sistema de coincidencia de patrones que utiliza cadenas (es decir, secuencias de caracteres) construidas de acuerdo con reglas de sintaxis predefinidas para encontrar las cadenas deseadas en el texto.
El término comodín o comodín se usó originalmente en juegos de cartas para describir una carta a la que se le puede asignar cualquier valor que desee su titular. Sin embargo, su uso se ha extendido de manera que ahora se usa para describir un factor desconocido o impredecible en una variedad de campos.
Comodín de estrella
Se utilizan tres tipos de comodines con los comandos de Linux. El comodín de estrella, que es el mismo que un asterisco (*), es el que se emplea con más frecuencia y, por lo general, el más útil. El comodín de estrella tiene el significado más amplio de cualquiera de los comodines, ya que puede representar cero caracteres, todos los caracteres individuales o cualquier cadena.
Como ejemplo, el comando file proporciona información sobre cualquier objeto del sistema de archivos (es decir, archivo, directorio o enlace) que se le proporciona como argumento (es decir, entrada). Debido a que el comodín de estrella representa cada cadena, se puede usar como argumento para que file devuelva información sobre cada objeto en el directorio especificado. Por lo tanto, lo siguiente mostraría información sobre cada objeto en el directorio actual (es decir, el directorio en el que el usuario está trabajando actualmente):
file *
Si no hay coincidencias, se devuelve un mensaje de error, como *: can’t stat `*’ (No hay dicho archivo o directorio).. En el caso de este ejemplo, la única manera de que no haya coincidencias es si el directorio estuviera vacío.
Los comodines se pueden combinar con otros caracteres para representar partes de cadenas. Por ejemplo, para representar cualquier objeto de sistema de archivos que tenga un .extensión de nombre de archivo jpg,*.se usaría jpg. Del mismo modo, a* representaría todos los objetos que comienzan con una letra minúscula (es decir, pequeña) a.
Como otro ejemplo, lo siguiente indicaría al comando ls (que se usa para listar archivos) que proporcione los nombres de todos los archivos en el directorio actual que tengan an .html o a .extensión txt:
ls *.html *.txt
Del mismo modo, lo siguiente indicaría al comando rm (que se usa para eliminar archivos y directorios) que elimine todos los archivos del directorio actual que tengan la cadena xxx en su nombre:
rm *xxx*
Comodín de signo de interrogación
El signo de interrogación (?) se usa como carácter comodín en comandos de shell para representar exactamente un carácter, que puede ser cualquier carácter individual. Por lo tanto, dos signos de interrogación en sucesión representarían dos caracteres cualesquiera en sucesión, y tres signos de interrogación en sucesión representarían cualquier cadena que constara de tres caracteres.
Por lo tanto, por ejemplo, lo siguiente devolvería datos sobre todos los objetos del directorio actual cuyos nombres, incluidas las extensiones, tengan exactamente tres caracteres de longitud:
file ???
Y lo siguiente proporcionaría datos sobre todos los objetos cuyos nombres tengan uno, dos o tres caracteres de longitud:
file ? ?? ???
Como en el caso del comodín de estrella, el comodín de signo de interrogación se puede usar en combinación con otros caracteres. Por ejemplo, lo siguiente proporcionaría información sobre todos los objetos del directorio actual que comienzan con la letra a y tienen cinco caracteres de longitud:
file a????
El comodín de signo de interrogación también se puede usar en combinación con otros comodines cuando está separado por algún otro carácter. Por ejemplo, lo siguiente devolvería una lista de todos los archivos del directorio actual que tienen una extensión de nombre de archivo de tres caracteres:
ls *.???
Comodín entre corchetes
El tercer tipo de comodín en los comandos de shell es un par de corchetes, que pueden representar cualquiera de los caracteres encerrados entre corchetes. Por lo tanto, por ejemplo, lo siguiente proporcionaría información sobre todos los objetos en el directorio actual que tienen una x, y y/o z en ellos:
file **
Y lo siguiente sería una lista de todos los archivos que tenían una extensión que comienza con x, y o z:
ls *.*
Los mismos resultados se pueden lograr simplemente usando los comodines de estrella y signo de interrogación. Sin embargo, es claramente más eficiente usar el comodín de corchete.
Cuando se usa un guion entre dos caracteres entre corchetes, indica un rango que incluye esos dos caracteres. Por ejemplo, lo siguiente proporcionaría información sobre todos los objetos del directorio actual que comienzan con cualquier letra de la a a la f:
file *
Y lo siguiente proporcionaría información sobre cada objeto en el directorio actual cuyo nombre incluya al menos un número:
file **
El uso de los corchetes para indicar un rango puede combinarse con su uso para indicar una lista. Así, por ejemplo, lo siguiente proporcionaría información sobre todos los objetos del sistema de archivos cuyos nombres comienzan con cualquier letra de la a a la c o comienzan con s o t:
file *
Del mismo modo, se pueden especificar múltiples conjuntos de rangos. Así, por ejemplo, lo siguiente devolvería información sobre todos los objetos cuyos nombres comienzan con las tres primeras o las tres últimas letras minúsculas del alfabeto:
file *
A veces puede ser útil tener una sucesión de comodines entre corchetes cuadrados. Por ejemplo, el siguiente sería mostrar todos los archivos en el directorio actual que consisten jones seguido por un número de tres dígitos:
ls jones