3. Patrones de englobamiento del shell

Probablemente Usted ya usa caracteres de englobamiento sin saberlo. Cuando Usted especifica un archivo en Windows® o cuando busca un archivo, Usted usa * para hacer coincidir con una cadena arbitraria de caracteres. Por ejemplo, *.txt hace coincidir a todos los archivos cuyo nombre termina con .txt. Nosotros también los usamos mucho en la última sección. Pero el englobamiento va más allá que el simple *.

Cuando Usted ingresa un comando como ls *.txt y presiona Intro, la tarea de encontrar cuales archivos se corresponden con el patrón *.txt no la realiza el comando ls, sino el shell en sí mismo. Esto requiere de una pequeña explicación sobre como interpreta el shell la línea de comandos. Cuando Usted ingresa:

$ ls *.txt
leerme.txt recetas.txt

primero la línea de comandos se separa en palabras (ls y *.txt, en este ejemplo). Cuando el shell ve un * en una palabra, interpretará toda la palabra como un patrón de englobamiento y la reemplazará con los nombres de todos los archivos que se correspondan con el patrón. Por lo tanto, justo antes que el shell la ejecute, la línea se convirtió en la línea ls leerme.txt recetas.txt, lo que da el resultado esperado. El shell reacciona así frente a otros caracteres como:

Aquí tiene algunos patrones y su significado:



[7] ¡Cuidado! Aunque esto es cierto para la mayoría de los idiomas, puede no ser cierto bajo su propia configuración de idioma (locale). Esta característica depende del orden de comparación (collating order). En algunos sistemas, [a-z] se corresponderá con a, A, b, B, (...) , z. Y ni siquiera mencionamos el hecho que algunos idiomas tienen caracteres acentuados.