% Linux Installation and Getting Started    -*- TeX -*-
% wildcard.tex
% Copyright (c) 1992, 1993 by Matt Welsh, Larry Greenfield and Karl Fogel
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by
% the copyright for the entire document, in the file "copyright.tex".
%
% Traducci\'on al espa\~nol por Eduardo Lluna Gil <elluna@aii.upv.es>
%
% $Log: wildcard.tex,v $
% Revision 0.5.0.1  1996/02/10 23:45:15  rcamus
% Primera beta publica
%
%


\section{Car\'acteres comod\'{\i}n}

\index{int\'erpretes de comandos!car\'acteres comod\'{\i}n para|(}
\index{car\'acteres comod\'{\i}n!en nombres de fichero|(}
\index{nombres de ficheros!car\'acteres comod\'{\i}n en|(}
\index{car\'acteres comd\'{\i}n!defined}
Una caracter\'{\i}stica importante de la mayor\'{\i}a de los 
int\'erpretes de comandos en Unix es la capacidad para referirse a 
m\'as de un fichero usando car\'acteres especiales. Estos llamados {\bf 
comodines} le permiten referirse a, por ejemplo, todos los ficheros que 
contienen el car\'acter ``{\tt n}''.

\index{*@{\tt *}}
\index{car\'acteres comod\'{\i}n!*@{\tt *}}
El comod\'{\i}n ``{\tt *}'' hace referencia cualquier car\'acter o cadena de
car\'acteres en el fichero. Por ejemplo, cuando usa el car\'acter ``{\tt 
*}'' en el nombre de un fichero, el int\'erprete de comandos lo 
sustituye por todas las combinaciones posibles provenientes de los 
ficheros en el directorio al cual nos estamos refiriendo.

Veamos un ejemplo r\'apido. Supongamos que Larry tiene los ficheros {\tt frog}, 
{\tt joe} y {\tt stuff} en el directorio actual.
\begin{tscreen}
/home/larry\# {\em ls} \\
frog\ \ \ \ \ joe\ \ \ \ \ stuff \\
/home/larry\#
\end{tscreen}

Para aceder a todos los ficheros con la letra ``o'' en su nombre, hemos de
usar la orden
\begin{tscreen}
/home/larry\# {\em ls *o*} \\
frog\ \ \ \ \ joe \\
/home/larry\#
\end{tscreen}
Como puede ver, el comod\'{\i}n ``{\tt *}'' ha sido sustituido con todas las
combinaciones posibles que coincidian de entre los ficheros del directorio
actual. 

El uso de ``{\tt *}'' solo, simplemente se refiere a todos los ficheros,
puesto que todos los car\'acteres coinciden con el comod\'{\i}n.
\begin{tscreen}
/home/larry\# {\em ls *} \\
frog\ \ \ \ \ joe\ \ \ \ \ stuff \\
/home/larry\#
\end{tscreen}

Veamos unos pocos ejemplos m\'as.
\begin{tscreen}
/home/larry\# {\em ls f*} \\
frog \\
/home/larry\# {\em ls *ff} \\
stuff \\
/home/larry\# {\em ls *f*} \\
frog\ \ \ \ \ stuff \\
/home/larry\# {\em ls s*f} \\
stuff \\
/home/larry\# 
\end{tscreen}

\index{expansi\'on de comodines!defined}
\index{int\'erprete de comandos!expansi\'on de comodines}
El proceso de la sustituci\'on de ``{\tt *}'' en nombres de ficheros es
llamado {\bf expansi\'on de comodines} y es efectuado por el int\'erprete de
comandos. Esto es importante: las \'ordenes individuales, como {\tt ls}, 
{\em nunca\/} ven el ``{\tt *}'' en su lista de par\'ametros. Es el 
int\'erprete quien expande los comodines para incluir todos los nombres 
de ficheros que se adaptan. Luego la orden
\begin{tscreen}
/home/larry\# {\em ls *o*}
\end{tscreen}
es expandida para obtener
\begin{tscreen}
/home/larry\# {\em ls frog joe}
\end{tscreen}

\index{ficheros!ocultos!no cuadran con comodines}
Una nota importante acerca del car\'acter comod\'{\i}n ``{\tt *}''. El uso 
de este comod\'{\i}n {\em NO} cuadrar\'a con nombres de ficheros que 
comiencen con un punto (``{\tt .}''). Estos ficheros son tratados como 
``ocultos''--- aunque no est\'an realmente ocultos, simplemente no son 
mostrados en un listado normal de {\tt ls} y no son afectados por el uso 
del comod\'{\i}n ``{\tt *}''. 

He aqu\'{\i} un ejemplo. Ya hemos mencionado que cada directorio tiene dos
entradas especiales: ``{\tt .}'' que hace referencia al directorio actual y
``{\tt ..}'' que se refiere al directorio padre. De cualquier forma, cuando
use {\tt ls} esas dos entradas no se mostrar\'an.
\begin{tscreen}
/home/larry\# {\em ls} \\
frog\ \ \ \ \ joe\ \ \ \ \ stuff \\
/home/larry\# 
\end{tscreen}
Si usa el par\'ametro {\tt -a} con {\tt ls} podr\'a ver nombres de ficheros que
comienzan por ``{\tt .}''. Observe:
\begin{tscreen}
/home/larry\# {\em ls -a} \\
.\ \ \ \ \ ..\ \ \ \ \ .bash\_profile\ \ \ \ \ .bashrc\ \ \ \ \ frog
\ \ \ \ \ joe\ \ \ \ \ stuff \\
/home/larry\# 
\end{tscreen}
Ahora podemos ver las dos entradas especiales, ``{\tt .}'' y ``{\tt ..}'',
as\'{\i} como otros dos ficheros ``ocultos''---{\tt .bash\_profile} y 
{\tt .bashrc}. Estos dos ficheros son usados en el arranque por {\tt bash}
cuando larry se presenta al sistema. M\'as informaci\'on sobre esto en la
Secci\'on~\ref{sec-init-scripts}.

Note que cuando usamos el comod\'{\i}n ``{\tt *}'', no se muestra ninguno de 
los nombres de fichero que comienzan por ``{\tt .}''.
\begin{tscreen}
/home/larry\# {\em ls *} \\
frog\ \ \ \ \ joe\ \ \ \ \ stuff \\
/home/larry\# 
\end{tscreen}
Esto es una caracter\'{\i}stica de seguridad: si ``{\tt *}'' coincidiera con
ficheros que comienzan por ``{\tt .}'' actuar\'{\i}a sobre ``{\tt .}'' y 
``{\tt ..}''. Esto puede ser peligroso con ciertas \'ordenes.

\index{car\'acteres comod\'{\i}n!?@{\tt ?}}
\index{?@{\tt ?}}
Otro car\'acter comod\'{\i}n es ``{\tt ?}''. Este car\'acter comod\'{\i}n 
solo expande un \'unico car\'acter. Luego ``{\tt ls ?}'' mostrar\'a todos 
los nombres de ficheros con un car\'acter de longitud, y ``{\tt ls 
termca?}'' mostrar\'a ``{\tt termcap}'' pero {\em no\/} ``{\tt 
termcap.backup}''. Aqu\'{\i} tenemos otro ejemplo:
\begin{tscreen}
/home/larry\# {\em ls j?e} \\
joe \\
/home/larry\# {\em ls f??g} \\
frog \\
/home/larry\# {\em ls ????f} \\
stuff \\
/home/larry\# 
\end{tscreen}

Como puede ver, los car\'acteres comod\'{\i}n le permiten referirse a m\'as de un
fichero a la vez. En el resumen de \'ordenes en la
Secci\'on~\ref{sec-command-summ} dijimos que {\tt cp} y {\tt mv} pueden copiar
o mover m\'ultiples ficheros de una vez. Por ejemplo,
\begin{tscreen}
/home/larry\# {\em cp /etc/s* /home/larry}
\end{tscreen}
copiar\'a todos los ficheros de {\tt /etc} que comiencen por ``{\tt s}'' al
directorio {\tt /home/larry}. Por lo tanto, el formato de la orden {\tt cp}
es realmente
\begin{tscreen}
cp \cparam{fichero1} \cparam{fichero2} \cparam{fichero3} \ldots
\cparam{ficheroN}  \cparam{destino}
\end{tscreen}
donde \cparam{fichero1} a \cparam{ficheroN} es la lista de los ficheros a
copiar, y \cparam{destino} es el fichero o directorio destino donde
copiarlos. {\tt mv} tiene id\'entica sintaxis.

Notese que si est\'a copiando o moviendo m\'as de un fichero, 
\cparam{destino} debe ser un directorio. Solo puede copiar o mover un 
{\em \'unico\/} fichero a otro fichero. 


\index{int\'erpretes de comandos!car\'acteres comod\'{\i}n para|)}
\index{car\'acteres comod\'{\i}n!en nombres de fichero|)}
\index{nombres de ficheros!car\'acteres comod\'{\i}n en|)}
