8
Caracteres Comodín y Expresiones Regulares para Linux 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. Linux usa los comodín para la sustitución de caracteres. Estos caracteres comodín nos puede ser de mucha utilidad cuando lazamos el comado de ls para buscar un o varios de archivos o directorios cuyo nombre contiene una determinada secuencia de caracteres. El comodín “*”: sustutuye una cadena de caracteres en el nombre del archivo o directorio. Cuando se usa el carácter “*” para referirse al nombre de un archivon o directorio, el intérprete de comandos lo sustituye por todas las combinaciones posibles de los archivos y directorios dentro del directorio que estamos refiriendo. Por ejemplo supongamos que en el directorio del usuario aceitunero tenemos varios directorios como puede ser aceitunero, antonio y invitado. Si observamos todos estos directorios termina en “o” y si lanzamos un ls nos mostrará todos los archivos y directorios que tenemos: aceitunero@Pc15:~$ ls aceitunero Documentos Imágenes Plantillas Videos antonio Escritorio invitado Público Descargas examples.desktop Música salida.txt Para listar todos los archivos que termina con la letra “o”, usaremos esta línea de comandos, el resultado sería: aceitunero@Pc15:~$ ls *o aceitunero: antonio: Escritorio: Imagenes_ISO introduccion_linux_2010 invitado: Público: Como podemos ver, el comodín “*” ha sido sustituido todos los caracteres anteriores al caracater que se ha introducido y ha realizado las combinaciones posibles para mostrar los archivos y directorios que terminen en “o” del directorio donde nos encontramos. Otros ejemplos sería:

Caracteres Comodín y Expresiones Regulares para Linux

Embed Size (px)

Citation preview

Page 1: Caracteres Comodín y Expresiones Regulares para Linux

Caracteres Comodín y Expresiones Regulares para Linux

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.

Linux usa los comodín para la sustitución de caracteres. Estos caracteres comodín nos puede ser de mucha utilidad cuando lazamos el comado de ls para buscar un o varios de archivos o directorios cuyo nombre contiene una determinada secuencia de caracteres.

El comodín “*”: sustutuye una cadena de caracteres en el nombre del archivo o directorio. Cuando se usa el carácter “*” para referirse al nombre de un archivon o directorio, el intérprete de comandos lo sustituye por todas las combinaciones posibles de los archivos y directorios dentro del directorio que estamos refiriendo.

Por ejemplo supongamos que en el directorio del usuario aceitunero tenemos varios directorios como puede ser aceitunero, antonio y invitado. Si observamos todos estos directorios termina en “o” y si lanzamos un ls nos mostrará todos los archivos y directorios que tenemos:

aceitunero@Pc15:~$ ls

aceitunero Documentos Imágenes Plantillas Videosantonio Escritorio invitado PúblicoDescargas examples.desktop Música salida.txt

Para listar todos los archivos que termina con la letra “o”, usaremos esta línea de comandos, el resultado sería:

aceitunero@Pc15:~$ ls *o

aceitunero:antonio:Escritorio:Imagenes_ISO introduccion_linux_2010invitado:Público:

Como podemos ver, el comodín “*” ha sido sustituido todos los caracteres anteriores al caracater que se ha introducido y ha realizado las combinaciones posibles para mostrar los archivos y directorios que terminen en “o” del directorio donde nos encontramos.

Otros ejemplos sería:

aceitunero@Pc15:~$ ls a*

aceitunero:total 0antonio:total 0

Page 2: Caracteres Comodín y Expresiones Regulares para Linux

El comodín “?”: Este carácter comodín sólo sustituye un carácter, por ejemplo:

aceitunero@Pc15:~$ ls -ld antoni?

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 antonio

aceitunero@Pc15:~$ ls -ld ?*o

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 aceitunerodrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 antoniodrwxr-xr-x 5 aceitunero aceitunero 4096 2011-05-05 16:17 Escritoriodrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 invitadodrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Público

Los caracteres comodín nos permiten referirse a más de un archivo a la vez. Por ejemplo, también podemos usarlo con los comandos cp y mv para copiar o mover varios archivos de una vez. Por ejemplo:

aceitunero@Pc15:~$ mkdir archivos_host

aceitunero@Pc15:~$ cp /etc/host* /home/aceitunero/archivos_host/

aceitunero@Pc15:~$ cd archivos_host/

aceitunero@Pc15:~/archivos_host$ ls

host.conf hostname hosts hosts.allow hosts.deny

Lo que estamos haciendo es copiar todos los archivos del directorio /etc que comiencen con “host” al directorio /home/aceitunero/archivos_host/.

El comodín [ ]: Los corchete se utilizan para pasar un rango de caracateres, que tomará para realizar la busqueda, por ejemplo:

aceitunero@Pc15:~$ ls -ld [a-c]*

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 aceitunerodrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 antoniodrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-05 16:35 archivos_host-rw-r--r-- 1 aceitunero aceitunero 79 2011-05-04 19:40 basura.txt

El listado que nos muestra son los archivos o directorios que comienza en “a” hasta la “c” incluidad y como hemos pasado también el carácter comodín “*” tomará cualquier carácter. Otros ejemplos:

aceitunero@Pc15:~$ ls -ld [a-c]*o

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 aceitunerodrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 antonio

Page 3: Caracteres Comodín y Expresiones Regulares para Linux

aceitunero@Pc15:~$ ls -ld *[a-c]

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Música

El comodín !: La exclamación se utilizan para denegar el rango de caracteres que se pasa, es decir, tomara todos los caractes menos los que se pasen para realizar la busqueda, por ejemplo:

aceitunero@Pc15:~$ ls -ld [!a-c]*

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Descargasdrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Documentosdrwxr-xr-x 5 aceitunero aceitunero 4096 2011-05-05 16:17 Escritoriodrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Imágenesdrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 invitadodrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Músicadrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Plantillasdrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Públicodrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Videos

El listado que nos muestra son los archivos o directorios que NO comienza por “a” hasta la “c” incluidad y como hemos pasado también el carácter comodín “*” tomará cualquier carácter. Otros ejemplos:

aceitunero@Pc15:~$ ls -ld [!a-c]*o

drwxr-xr-x 5 aceitunero aceitunero 4096 2011-05-05 16:17 Escritoriodrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 invitadodrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Público

aceitunero@Pc15:~$ ls -ld *[!o-s]

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-05 16:35 archivos_hostdrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Música

El comodín { }: Las llaves se utilizan para pasar un numero de caracteres, que se usarán para realizar la busqueda de los archivos y directorios que contenga eso caracteres, por ejemplo:

aceitunero@Pc15:~$ ls -ld {a,b}*

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 aceitunerodrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 antoniodrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-05 16:35 archivos_host-rw-r--r-- 1 aceitunero aceitunero 79 2011-05-04 19:40 basura.txt

El listado que nos muestra son los archivos o directorios que comienza en “a” y los que comienzan por “b” y con el carácter comodín “*” tomará cualquier otro carácter. Otros ejemplos:

Page 4: Caracteres Comodín y Expresiones Regulares para Linux

aceitunero@Pc15:~$ ls -ld {a,c}*o

ls: no se puede acceder a c*o: No existe el fichero o el directoriodrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 aceitunerodrwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 antonio

aceitunero@Pc15:~$ ls -ld *{a,c}

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Música

Como podeis observa estas convinaciones de los comodines nos puede ayudar a la hora de copiar, mover, listar, etc. un conjunto de archivos o directorios de una forma sencilla.

Espero que os sea de ayuda a todos un saludo:

Antonio

 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

Page 5: Caracteres Comodín y Expresiones Regulares para Linux

/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:

Page 6: Caracteres Comodín y Expresiones Regulares para Linux

/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$

Page 7: Caracteres Comodín y Expresiones Regulares para Linux

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 g