6. Caracteres “Comodín”

Una característica importante de la mayoría de los intérpretes de comandos en Unix es la capacidad para referirse a más de un archivo usando expresiones regulares. En su forma más simple, esto consiste en la utilización de los llamados comodines que permiten referirse a, por ejemplo, todos los archivos cuyo nombre contiene una determinada secuencia de caracteres. Las expresiones regulares son una forma de describir un conjunto de cadenas.

6.1. Los comodines  * y ?

El comodín * hace referencia cualquier cadena de caracteres en el nombre del archivo. Cuando se usa el carácter * para referirse al nombre de un archivo, el intérprete de comandos lo sustituye por todas las combinaciones posibles provenientes de los archivos en el directorio al cual nos estamos reriendo.
Veamos un ejemplo rápido. Supongamos que diego tiene los archivos hugo, paco y luis en el directorio actual.
/home/diego$ ls
hugo luis paco
/home/diego$

Para listar todos los archivos con la letra o en su nombre, usamos la orden:

/home/diego$ ls *o*
hugo paco
/home/diego$
Como podemos ver, el comodín * ha sido sustituido con todas las combinaciones posibles que coincidían de entre los archivos del directorio actual.
El uso de * solo, hace referencia a todos los archivos, puesto que todos los caracteres coinciden con el comodín.

/home/diego$ ls *
hugo luis paco
/home/diego$
Veamos algunos otros ejemplos:
/home/diego$ ls h*
hugo
/home/diego$ ls *is
luis
/home/diego$ ls *u*
hugo luis
/home/diego$ ls p*o
paco
/home/diego$
El proceso de la sustitución de caracteres como * en nombres de archivos es llamado expansión de comodines y es efectuado por el intérprete de comandos. Esto es importante: los comandos, como ls, nunca ven el * en su lista de parámetros. Es el intérprete quien expande los comodines para incluir todos los nombres de archivos que se adaptan. Por lo tanto la orden:
/home/diego$ ls *o*
es expandida para obtener
/home/diego$ ls hugo paco

Otro carácter comodín es ?. Este carácter comodín sólo expande un único carácter. Luego ls ? mostrará todos los nombres de archivos con un carácter de longitud, y ls termca?, por ejemplo, mostrará termcap pero no termcap.backup. Aquí tenemos otro ejemplo:
/home/diego$ ls hu?o
hugo
/home/diego$ ls p??o
paco
/home/diego$ ls ???s
luis
/home/diego$
Como podemos ver, los caracteres comodín nos permiten referirse a más de un archivo a la vez. En el sumario de comandos básicos dijimos que cp y mv pueden copiar o mover múltiples archivos de una vez. Por ejemplo:
/home/diego$ cp /etc/s* /home/diego
copiará todos los archivos de /etc que comiencen con s al directorio /home/diego.

6.2. Los comodines y los archivos ocultos

Los comodines * y ? no coincidirán con nombres de archivos que comiencen con un punto (.). Estos archivos son tratados como ocultos. Los archivos de este tipo no son mostrados en un listado normal de ls y no son afectados por el uso de * y ?.
Por ejemplo, ya hemos mencionado que cada directorio tiene dos entradas especiales: ., que hace referencia al directorio actual, y .., que se reere al directorio padre. Como ya hemos visto, al usarls esas dos entradas no se muestran:
/home/diego$ ls
hugo luis paco
/home/diego$
Si usamos el parámetro -a con ls podremos ver nombres de archivos que comienzan con .. Observemos:
/home/diego$ ls -a
. .. .bash_profile .bashrc hugo luis paco
/home/diego$
Ahora podemos ver las dos entradas especiales, . y .., así como otros dos archivos ocultos:
.bash_profile y .bashrc.20

7. Comunicación entre procesos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s