25.01.2015 Views

Instrucciones en PDF - Elisa Schaeffer

Instrucciones en PDF - Elisa Schaeffer

Instrucciones en PDF - Elisa Schaeffer

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

CAPÍTULO 7. PROGRAMACIÓN 142<br />

donde $0 refiere a la línea <strong>en</strong>tera. Int<strong>en</strong>tamos con este programa:<br />

> chmod u+x grandes<br />

> ls -l | ./grandes<br />

Archivos de 2MB y mayores:<br />

-rw-r--r-- 1 elisa faculty 281765 Jan 30 12:48 PID295149.pdf<br />

-rw-r--r-- 1 elisa faculty 3049984 Jan 24 14:11 SemillaBarros2006.doc<br />

drwx------ 4 elisa faculty 2048 Jun 14 12:00 backup<br />

drwx------ 2 elisa faculty 2560 Jun 15 10:45 mail<br />

drwx------ 2 elisa faculty 7168 Sep 6 2006 todo<br />

drwx------ 13 elisa faculty 2048 Jun 15 12:17 work<br />

Está incluy<strong>en</strong>do también carpetas <strong>en</strong> la salida. Para eliminar carpetas, tomamos <strong>en</strong> cu<strong>en</strong>ta que<br />

todas esas líneas comi<strong>en</strong>zan con la letra d. Utilizamos la operación de comparación con una<br />

expresión regular: $1 /d/ es verdad si la primera columna conti<strong>en</strong>e la letra d. Nosotros queremos<br />

que no la cont<strong>en</strong>ga, por lo cual incluimos <strong>en</strong> el mismo if como una segunda condición $1<br />

! /d/ y juntamos las dos condiciones a ser cumplidas con && que significa “y”:<br />

#!/bin/awk -f<br />

BEGIN {print "Archivos de 2MB y mayores:"}<br />

{if (($1 !~ /d/) && ($5 >= 2048)) print $0}<br />

Con esta ya obt<strong>en</strong>emos el resultado deseado:<br />

> ls -l | ./grandes<br />

Archivos de 2MB y mayores:<br />

-rw-r--r-- 1 elisa faculty 281765 Jan 30 12:48 PID295149.pdf<br />

-rw-r--r-- 1 elisa faculty 3049984 Jan 24 14:11 SemillaBarros2006.doc<br />

><br />

Para ver la sintaxis completa de awk, hay un tutorial muy completo <strong>en</strong> http://www.gnu.org/<br />

manual/gawk/html_node.<br />

7.2.2. sh<br />

Los shell script sirv<strong>en</strong> para situaciones donde hay que ejecutar con frecu<strong>en</strong>cia una serie de instrucciones<br />

y uno quiere ahorrar el esfuerzo de t<strong>en</strong>er que escribirlos cada vez. También ayuda<br />

si hay que correr por ejemplo un experim<strong>en</strong>to que consiste de varias instrucciones pero uno no<br />

quiere esperar <strong>en</strong> persona <strong>en</strong> el terminal para escribir la instrucción sigui<strong>en</strong>te. En esta sección<br />

veremos cómo escribir un script tipo Bourne shell. Se escribe <strong>en</strong> un archivo de texto, por ejemplo<br />

con emacs, y la primera línea siempre es #!/bin/sh (o realm<strong>en</strong>te la ubicación verdadera de<br />

sh, lo que se ve con la instrucción which sh). La última línea del script debería ofrecer un<br />

valor de salida para el script: cero si todo estuvo bi<strong>en</strong> (exit 0) y otro valor si un error ocurrió.<br />

Para poder ejecutar el script, el archivo ti<strong>en</strong>e que t<strong>en</strong>er permiso de ejecución por lo m<strong>en</strong>os para<br />

el usuario mismo, lo que se logra con chmod a+x junto con el nombre del archivo donde se<br />

guarda el script. En el primer ejemplo escribimos un script pequeño que no hace nada útil mas<br />

que simplem<strong>en</strong>te mostrar la sintaxis de los shell script:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!