Páginas

domingo, 1 de febrero de 2009

Herramientas poderosas en GNU-Linux

"Quien no sabe GNU-Linux, no es informatico, por lo que está obligado a reinvertarlo y mal". Antonio Perpiñan. Padre del software libre en America Latina. http://www.codigolibre.org/

En esta sección se ofrece una breve descripción de las características de las herramientas más poderosas del ambiente de trabajo de GNU/Linux. Tomaremos en consideració los siguientes tópicos:

• diff –> Inventario de Cambios Efectuados a un Archivo

• find –> Busca y Manipula Archivos

• grep –> Busca Cadenas en el Contenido de Archivos de Texto

• Expresiones Regulares–> Uso de Abreviaturas para Asistir los Comandos y Utilitarios

• sed –> Edición de Flujo de Texto (Stream)

• awk –> Edición Avanzada de Flujo de Texto

• Perl –> Lenguaje de Programación de Extracción y Reporte

Aquí le damos una brevísima introducción al programa Perl, el cual es el lenguaje defacto de los administradores de sistemas y de páginas web.

El Comando diff- Inventario de Cambios a los Archivos

l comando diff toma como parámetros el nombre de 2 archivos y da salida a las diferencias entre los 2 archivos. Cuando es ejecutado sobre un archivo ordinario, como se muestra más adelante, la salida es un poco compleja y hace referencia a comandos de edición utilizados por el ed, la cual puede ser ejecutada para sincronizar los 2 archivos . En el ejemplo mostramos la diferencia en el archivo de contraseñas actual y una copia que sirve de backup. En éstos archivos la línea 23 ha sido cambiada y la línea 24 ha sido agregada al archivo /etc/passwd

$ diff passwd passwd.bak

23c23,24

<>

—-

> DIFERENTE

> LINEA ADICIONAL

Por lo general la salida sólo contiene comandos simple del siguiente formato:

n1 a n3,n4 Las líneas n3 a n4 agregada al archivo 2 después de la línea n1 en el archivo1

n1,n2 d n3 Líneas n1 a n2 eliminadas del archivo 1 (estaban en la línea n3 en el archivo 2)

n1,n2 c n3,n4 Línea n1 a n2 en el archivo 1 cambiadas a líneas n3 a n4 en el archivo 2

Después de cada línea de comandos, las líneas afectadas del primer archivo son listadas precedidas por un <, y cualquier línea nueva en el archivo 2 es listada y precedida por el símbolo >.

El comando diff también puede ser utilizado sobre directorios. Aquí la salida del comando sólo muestra mensajes de “only in …” (solamente en …) y “common subdirectories …” (Subdirectorios comunes …) y no al estilo de instrucciones parecidas al ed.

$ diff dir dir2/

Only in dir: archivo1

Only in dir: passwd.bak

El Comando find - Busca y Manipula Archivos

Find es un comando que busca en el árbol de directorio y ejecuta comandos sobre el resultado. Este buscará en un directorio y todos sus subdirectorios por archivos basados en un criterio de selección y opcionalmente ejecutaría cualquier comando o script del shell sobre cada archivo que iguale el criterio de búsqueda.

La sintaxis del comando find es:

$ find directorios opción acción

Las opciones son en forma de palabras reservadas, por ejemplo:

-name nombre Busca archivos llamados nombre

-user nombre Busca archivos adueñados por el usuario nombre

-type [fdlcb] Busca archivos del tipo dado (por ejemplo, d es un directorio, l esunvínculo)

-size [+/-]n[ck] Busca archivos de un tamaño dado (ejemplo,+10k significar más grande que 10 Kb)

-inum número Busca archivos con el número de inodo dado (hard link)

Las opciones del comando find facilitan la búsqueda de archivos, de acuerdo a cualquier tipo de atributo de éstos. Una vez el archivo ha sido localizado, éste puede ser sometido, como un argumento, a cualquier comando de GNU/Linux o script del shell disponible.

La Opción -name soporta los mismos caracteres wildcard que esos del shell (*, ?, y []). Recuerde colocar un nombre que contenga éstos caracteres dentro de comillas dobles para evitar que el shell efectue su propia generación de nombres de archivos y sustitución de argumentos.

Muchas otras opciones del comando find soportan criterios de búsqueda muy poderosos y son descritos en sus páginas man. En realidad, el comando find no es usado para buscar archivos, sino para navegar el sis- tema de archivos buscando los archivos que igualan cierto criterio de búsqueda y luego ejecutar comandos sobre los resultados. Un uso común es, por ejemplo, buscar todos los archivos que su tiempo de acceso es anterior a cierta fecha y luego moverlos a cierta localidad.

Las acciones pueden ser:

-print Imprime los nombres de archivos a la salida estándar

-exec comando {} ; Ejecuta el comando dado por cada archivo encontrado

-ok comando {} ; Ejecuta el comando dado pero pide confirmación

Ejercicio 7-6: Uso de find

En éste ejercicio le presentamos ejemplos del comando find. Las soluciones a éste ejercicio se encuentran en el Apéndice A.

¿Qué efectúan los siguientes comandos find?

1. $ find . -print

2. $ find . -type d -print

3. $ find /home -name .profile -print

4. $ find /home -name .bash_profile -print

5. $ find . /tmp /usr/tpm -name core -exec rm {} ;

6. $ find . -name “*.o” -ok rm {} ;

1.

$ find / -type f -size +1k -print >/tmp/grandes 2>/dev/null &

No hay comentarios:

Publicar un comentario