Página siguiente Página anterior Índice general

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.

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 refiriendo.

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 refiere al directorio padre. Como ya hemos visto, al usar ls 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”.

Estos dos archivos son usados en el arranque por el intérprete de comandos bash cuando diego realiza el login.


Página siguiente Página anterior Índice general