Instrucciones en PDF - Elisa Schaeffer
Instrucciones en PDF - Elisa Schaeffer
Instrucciones en PDF - Elisa Schaeffer
- 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: