Trabajando con Unix - Comodines

1 - Comodines

[editar]
Tutorial creado por Mononeurona. Extraido de: http://www.mononeurona.org/index.php?idp=166
28 de Octubre de 2005
Se dan por conocidos los comandos para mantener ficheros cp, mv, y rm. A veces, se querrá tratar con más de un fichero a la vez, en realidad, con muchos a la vez. Por ejemplo, se quiere copiar todos los ficheros que empiecen por data en un directorio llamado /backup. Se podría hacer esto ejecutando muchos comandos cp, o escribiendo cada fichero en una línea de comando. Estos dos métodos llevan mucho tiempo, incluso, se tienen muchas posibilidades de cometer errores.

Una buena manera de hacer este trabajo es teclear:

/home/larry/report$ ls -F

1993-1 1994-1 data1 data5

1993-2 data-new data2

/home/larry/report$ mkdir ~/backup

/home/larry/report$ cp data* ~/backup

/home/larry/report$ ls -F ~/backup

data-new data1 data2 data5

/home/larry/report$

Como se puede observar, el asterisco indica a cp que tome todos los ficheros que empiecen por data y los copie a /backup. ¿Qué cree que "cp d*w /backup" puede haber hecho?



¿Qué ocurre realmente?

Buena pregunta. De hecho, hay un par de caracteres especiales interceptados por el shell, bash. El carácter "*" , un asterisco, dice "cambia esta palabra con todos los ficheros que se ajusten a esta especificación". Así, el comando "cp data* /backup" , como el de arriba, cambia a "cp data-new data1 data2 data5 /backup" antes de ejecutarse.

Para ilustrar esto, introduciré un comando nuevo, echo. echo es un comando extremadamente simple; repite, o muestra, cualquier parámetro. De este modo:

/home/larry$ echo Hola!

Hola!

/home/larry$ echo Como se encuentra?

Como se encuentra?

/home/larry$ cd report

/home/larry/report$ ls -F

1993-1 1994-1 data1 data5

1993-2 data-new data2

/home/larry/report$ echo 199*

1993-1 1993-2 1994-1

/home/larry/report$ echo *4*

1994-1

/home/larry/report$ echo *2*

1993-2 data2

/home/larry/report$

Como se puede ver, el shell expande el comodín y pasa todos los ficheros al programa que se va a ejecutar. Esto plantea una pregunta interesante: ¿qué ocurre si no hay ficheros que se ajusten a la especificación del comodín? Pruebe "echo /rc/fr*og" y bash pasará literalmente la especificación del comodín al programa.

Otros shells, como tcsh, en vez de pasar el comodín literalmente, contestarán No match. Aquí está el mismo comando ejecutado bajo tcsh:

mousehouse>echo /rc/fr*og

echo: No match.

mousehouse>

La última pregunta que podría hacerse es, ¿qué pasa si quisiera mostrar data*, en vez de la lista de nombres? Bien, tanto en bash como en tcsh, sólo se debe incluir la cadena entre comillas:

/home/larry/report$ echo "data*" mousehouse>echo "data*"

data* Ó bien data*

/home/larry/report$ mousehouse>



El signo de interrogación

Además del asterisco, el shell también interpreta un signo de interrogación como un carácter especial.

Un signo de interrogación coincidirá con un carácter, y sólo uno. Por ejemplo, "ls /etc/*

*??" mostrará todos los ficheros de dos letras en el directorio /etc.
[editar]

1 opinión

Unix.

Quisiera saber si unix se puede descargar de alguna web o un servidor, pero que la descarga sea gratis?

porfavor ayudame que me interesa mucho.

Tutoriales relacionados con 'Trabajando con Unix'

Unix es un potente sistema para aquellos que saben cómo dominar su poder. En este... Más »
A lo largo de este trabajo se va a intentar hacer un repaso de los... Más »
Esta es la primerísima edición del Linux en Castellano COMO. La audiencia a la que... Más »
El principal objetivo es introducir y discutir el modo principal[2] PSGML de Emacs y las... Más »
Este manual describe el uso y configuración del gestor de ventanas WindowMaker. Está previsto para... Más »

Autor y licencia de 'Trabajando con Unix'


Tutorial de Mononeurona. Extraido de: http://www.mononeurona.org/index.php?idp=166 CopyLeft
Este trabajo está licenciado bajo la Creative Commons License. 1999-2005 © :: MonoNeurona.org ::
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.