Sie sind auf Seite 1von 5

Prctica 3 Francisco Javier Domnguez Martnez

1) Prcticas: La lnea de comandos


1.- Nmero de ficheros de un directorio
ls | wc -l
Si queremos contar los ocultos tambin:
ls -A | wc -l
5 (es el resultado de ejecutar el comando en un directorio con las imagenes del servidor y el
cliente, los scripts de arranque y la imagen debian)
2.- Ejecuta el comando date y guarda el resultado en un fichero cuyo nombre se
construye en base a nuestro nombre de usuario y al ao de la fecha actual, p.e.
fichero-tomas-2005.
date > fichero-`whoami`-`date +%Y`
fichero-fcojavier.dominguez-2014 (el fichero creado) y contiene Lun Set 29 18:15:57 CEST
2014.
3.- Modificar los ficheros de inicio de sesin para cambiar tu prompt y aadir
algunos alias.
El archivo a modificar (no queremos modificar el prompt de toda la mquina), con lo que
iremos al fichero .bashrc dentro de nuestro home -> /home/fcojavier.dominguez/.bashrc.
Las modificaciones realizadas se indican en el fichero bashrc_mod.txt.
Luego de la modificacin del archivo .bashrc, podemos abrir un nuevo terminal o ejecutar
source .bashrc para ver los cambios.
Se muestra una imagen a continuacin, resultado del cambio del prompt y de los alias (h ->
history)

2) Prcticas: Procesamiento de ficheros de texto


1.- Dado un fichero de texto que contiene fechas en los formatos dd:mm:yyyy,
dd.mm.yyyy, dd:mm:yy o dd.mm.yy, usando sed...
sed -r "s/(0[1-9]|[1-2][0-9]|3[0-1])(:|\.)(0[1-9]|1[0-2])\2((1|2)[0-9]{3}|[0-9]{2})/`date '+
%d'`\2`date '+%m'`\2`date '+%Y'`/g" fechas.txt
Utilizamos la opcin -r para escapar los parntesis. De no indicar esta opcin, no dejara
ejecutar el comando y muestra el siguiente error:
sed: -e expresin #1, carcter 79: Referencia hacia atrs invlida

2.- Suponer que en un directorio tenemos muchos ficheros con terminacin *.foo.
Usando sed y tuberas mover los ficheros *.foo a *.bar (sugerencia: usando sed crear
un flujo de comandos de tipomv a.foo a.bar, y pasrselo a bash mediante un pipe).

ls -a *.foo | sed -r -n "s/([a-zA-Z0-9. ]+).foo/mv \1.foo \1.bar/p"| bash


Utilizamos el comando ls para listar todos los ficheros del directorio indicado. Se aade la
opcin -a para que liste todos los ficheros del mismo, includos por ejemplo, los que
empiecen por ..
La salida del comando ls, es utilizada por sed, que mediante la expresin regular definida, y el
comando mv, renombra todos los ficheros *.foo a *.bar y mediante la tubera se le pasa al bash
para que este lo ejecute.
La opcin -n es para evitar la salida por consola tras la ejecucin del comando sed.

3.- A partir del fichero /etc/passwd, que aparezca el nombre completo del usuario y
su nombre de login; la tabla debe estar ordenada por el "User name", y solo deben
aparecer los usuarios con UID mayor o igual a 1000.
a) Hazlo primero usando comandos bsicos (cut, sort, etc), con una sola lnea de
comandos, sin usar ficheros intermedios.

echo -e 'Nombre\tUser name' | expand -t 50 && echo


'------------------------------------------------------------------------' && sed -r -n "s/([a-z]+):x:[1-9]*([19][0-9][0-9][0-9]):[1-9]*([1-9][0-9][0-9][0-9]):([a-zA-Z .]+)[,]+:[a-z//]+:[a-z//]+/\1\t\t\t\4/p"
passwd.txt | sort | sed -r -n "s/([a-z]+)\t\t\t([a-zA-Z .]+)/\2\t\1/p" | expand -t 50

Con el comando echo pintamos la tabla con las tabulaciones y encabezados solicitados y
concatenamos con el comando sed que agrupa los campos y ya filtra por los id de usuarios de
valor mayor o igual a 1000 (en la secuencia posterior a :x: que es el password.
La salida del primer sed obtenemos los campos 1 y 4 (login y nombre de usuario) que se le
pasa al comando sort que ordena por el primero de ellos (login).
La salida del sort es utilizada ahora por otro comando sed que simplemente invierte el orden
de los campos y aade la tabulacin entre ellos.
Con el expand indicamos a la nueva tabulacin que sea de 50.

b) Repite el ejercicio usando AWK (puedes usar sort para ordenar los registros).
Adjunto fichero passwd_awk_script que contiene el cdigo solicitado. Debemos ejecutar el
script con el siguiente comando:

awk -f passwd_awk_script passwd.txt (-f indica que el cdigo awk est contenido en el script)
Se han includo comentarios en el propio script que intentan explicar que hace cada cosa.

4.- Haced un script AWK que transponga un fichero de texto.


Adjunto fichero transponer_awk que contiene el cdigo solicitado. Debemos ejecutar el script
con el siguiente comando:
awk -f transponer_awk fich.txt
Se han includo comentarios en el propio script que intentan explicar que hace cada cosa.
El script, adems de sacar el resultado por pantalla, lo guarda en un fichero de texto
(fichero_traspuesto.txt).

3) Prcticas: Programacin de scripts


1.- El fichero /proc/$pid/smaps tiene, para cada proceso, informacin sobre los
segmentos de memoria que est usando ese proceso...
Adjunto fichero calcular_memoria_proceso.sh que contiene el cdigo solicitado. Debemos
ejecutar el script con el siguiente comando:
./calcular_memoria_proceso.sh PID
Se han includo comentarios en el propio script que intentan explicar que hace cada cosa.

2.- Crear un generador / chequeador de contraseas en Python.


Adjunto fichero passwordUtils.py que contiene el cdigo solicitado.
Se han includo comentarios en el propio script que intentan explicar que hace cada cosa.

Das könnte Ihnen auch gefallen