next up previous contents index
Siguiente: Fontanería Subir: Tutorial de Anterior: Tipos de intérpretes de   Índice General   Índice de Materias

Caracteres comodín

Una característica importante de la mayoría de sistemas es la posibilidad de referirse a más de un fichero usando caracteres especiales. Estos caracteres comodín le permiten referirse a todos los nombres de fichero que contengan el carácter ``n''.

El comodín `*'' especifica cualquier carácter o cadena de caracteres en el nombre de un fichero. Cuando usa el carácter ``*'' en un nombre de fichero, el intérprete de órdenes lo reemplaza con todas las posibles sustituciones de los nombres de fichero en el directorio al que esté haciendo referencia.

He aquí un rápido ejemplo. Suponga que Larry tiene los ficheros frog, joe, y stuff en su directorio actual.
\begin{tscreen}
/home/larry\char93  ls \\
frog\ \ \ \ \ joe\ \ \ \ \ stuff \\
/home/larry\char93
\end{tscreen}

Para especificar todos los ficheros que contienen la letra ``o'' en el nombre de fichero, use la instrucción

Como puede ver, cada instancia de ``*'' es reemplazada con todas las sustituciones que coinciden con los nombres de fichero del directorio actual.

El uso de ``*'' sólo, simplemente coincide con todos los nombres de fichero, porque todos los caracteres coinciden con el comodín.
\begin{tscreen}
/home/larry\char93  ls * \\
frog\ \ \ \ \ joe\ \ \ \ \ stuff \\
/home/larry\char93
\end{tscreen}

Aquí hay algunos ejemplos más:
\begin{tscreen}
/home/larry\char93  ls f* \\
frog \\
/home/larry\char93  ls *f...
... \\
/home/larry\char93  ls s*f \\
stuff \\
/home/larry\char93
\end{tscreen}

El proceso de cambiar un ``*'' en una serie de nombres de fichero se llama expansión de comodines y lo hace el intérprete de órdenes. Esto es importante: una orden individual, como ls, nunca ve el ``*'' en su lista de parámetros. El intérprete de órdenes expande el comodín para incluir todos los nombres de fichero que coinciden. Así, la orden
\begin{tscreen}
/home/larry\char93  ls *o*
\end{tscreen}
es expandido por el intérprete de órdenes a
\begin{tscreen}
/home/larry\char93  ls frog joe
\end{tscreen}

Una nota importante del comodín ``*'' : no ve las coincidencias de los nombres de fichero que empiezan con un único punto (``.''). Estos ficheros se tratan como ficheros ocultos -- aunque no están realmente escondidos, no aparecen en los listados normales con ls y no son afectados por el uso del comodín ``*''.

He aquí un ejemplo. Mencionamos antes que cada directorio contiene dos entradas especiales: ``.'' se refiere al directorio actual, y ``..'' , que se refiere al directorio padre. Sin embargo, cuando usa ls, estas dos entradas no se muestran.
\begin{tscreen}
/home/larry\char93  ls \\
frog\ \ \ \ \ joe\ \ \ \ \ stuff \\
/home/larry\char93
\end{tscreen}
Si usa el parámetro -a con ls, sin embargo, puede visualizar los nombres de fichero que empiezan con ``.''. Observe:
\begin{tscreen}
/home/larry\char93  ls -a \\
.\ \ \ \ \ ..\ \ \ \ \ .bash\_prof...
...\ \ \ \ frog
\ \ \ \ \ joe\ \ \ \ \ stuff \\
/home/larry\char93
\end{tscreen}
El listado contiene las dos entradas especiales, ``.'' y ``..'', así como otros dos ficheros "ocultos"--.bash_profile y .bashrc. Estos dos ficheros son ficheros de inicio usados por bash cuando larry entra en el sistema. Se describen en página [*].

Hay que fijarse en que cuando usa el comodín ``*'' , ninguno de los nombres de fichero que empiezan por ``.'' son visualizados.
\begin{tscreen}
/home/larry\char93  ls * \\
frog\ \ \ \ \ joe\ \ \ \ \ stuff \\
/home/larry\char93
\end{tscreen}
Esto es una característica de seguridad: si el comodín ``*'' tiene coincidencias con nombres de fichero que empiezen por ``.'', también tendría coincidencia con los nombres de directorios ``.'' y ``..''. Esto puede ser peligroso al usar ciertas órdenes.

Otro comodín es ``?''. El comodín ``?'' sólo se expande a un carácter. Así, ``ls ?'' muestra todos los nombres de fichero de un sólo carácter. Y ``ls termca?'' mostraría ``termcap'' pero no ``termcap.backup''. Aquí hay otros ejemplos:
\begin{tscreen}
/home/larry\char93  ls j?e \\
joe \\
/home/larry\char93  ls f?...
...\
/home/larry\char93  ls ????f \\
stuff \\
/home/larry\char93
\end{tscreen}

Como puede ver, los comodines le permiten especificar muchos ficheros a la vez. En el sumario de órdenes que empieza en la página [*], dijimos que las órdenes cp y mv realmente pueden copiar o mover más de un fichero a la vez. Por ejemplo,
\begin{tscreen}
/home/larry\char93  cp /etc/s* /home/larry
\end{tscreen}
copia todos los ficheros de /etc cuyo nombre empieza por ``s'' al directorio /home/larry. El formato de la orden cp es realmente
\begin{tscreen}
cp \cparam{ficheros} \cparam{destino}
\end{tscreen}
donde ficheros lista los nombres de fichero a copiar, y destino es el fichero o directorio destino. La orden mv tiene una sintaxis idéntica.

Si está copiando o moviendo más de un fichero, el destino tiene que ser un directorio. Sólo puede copiar o mover un único fichero a otro fichero.


next up previous contents index
Siguiente: Fontanería Subir: Tutorial de Anterior: Tipos de intérpretes de   Índice General   Índice de Materias
Ismael Olea 2002-09-26