Escuela de Informática y Telecomunicaciones SEMANA N° 4 NOMBRE EXPERIENCIA: Comandos de manipulación de archivos y filtros UNIDAD DE APRENDIZAJE: I. Objetivo Que el alumno tenga una idea general de cuáles son los comandos LINUX de manipulación de archivos y filtros y sus principales opciones y que los pueda aplicar en la resolución de problemas prácticos de manejo de archivos. II. Conocimientos previos Los comandos de que dispone LINUX para buscar cadenas (o patrones) en archivos son grep, egrep y fgrep. La finalidad de estos comandos es imprimir por la salida estándar las líneas que contengan una cierta cadena. Usualmente grep presenta la siguiente sintaxis: grep [opciones] patrón [lista_archivos] El comando find se puede utilizar para buscar en un directorio, y los subdirectorios correspondientes, archivos que cumplan determinados criterios. Para mayor información utilizar el manual en línea de estos comandos. III. Requerimientos técnicos Para esta actividad basta con un PC con LINUX por alumno o en grupo de máximo dos alumnos por PC, opcionalmente acceso a Internet. IV. Desarrollo de la Actividad La siguiente actividad está centrada en la profundización de la familia de comandos grep de LINUX para búsqueda de patrones en archivos, sus opciones más comunes de uso. Ud. deberá profundizar acerca de los comandos grep de búsqueda de palabras y patrones en archivos, sus principales opciones de uso y la aplicación de dichos comandos en la resolución de problemas prácticos que involucren el manejo de archivos. También se especificarán comandos de búsqueda de archivos, sus opciones y la aplicación de dichos comandos a la resolución de problemas prácticos que involucren la búsqueda y el procesamiento de archivos. 1 Escuela de Informática y Telecomunicaciones Algunas de las preguntas y/o actividades planteadas pueden responderse con la documentación ofrecida en el material teórico de la asignatura, otras, sin embargo, requieren que Ud. Investigue, para esto último será usual que se le ofrezcan links a páginas web, esquemas o dibujos, diagramas, tablas, documentación complementaria, etc. Búsqueda de patrones en archivos 1.- Especificar el comando LINUX que permita buscar en el archivo /etc/passwd los usuarios que tengan definida como shell al bash. 2.- Especificar el comando LINUX que permita buscar en todos los archivos del directorio /var/log la cadena “error” (sin distinguir mayúsculas de minúsculas). 3.- Cree el archivo testfile.txt con al menos unas 10 líneas de texto. Ejecute y comente la salida del siguiente comando: grep -B3 -A4 "palabra" testfile.txt >grepout.log. Para probar el comando considere “palabra” como alguna palabra del archivo (indic.: -B antes (before) y -A después (after)). 4.- Cree a lo menos 10 archivos en su directorio actual, con nombres aleatorios: algunos con “s”, otros con “S”, otros con “s” y “S”, y otros sin “s” ni “S”. Ejecute y comente la salida de los siguientes comandos: ls ls ¦ grep -v -i "s" 2 Escuela de Informática y Telecomunicaciones 5.- Interpretar la siguiente expresión regular usada con grep: "\:[0-9][0-9] ...." 6.- Especificar el comando LINUX que permita buscar todos los archivos del directorio actual que sus nombres terminan en “.txt” y que contienen la cadena de texto “Saludos” al principio de la línea. No se debe distinguir entre mayúsculas y minúsculas y se debe imprimir solamente los nombres de los archivos que igualen la búsqueda. grep –i –l „^Saludos‟ *.txt 7.- Especificar el comando LINUX que permita buscar todos los archivos del directorio actual que sus nombres terminan en “.c”. 8.- Especificar el comando LINUX que permita listar todos los subdirectorios del directorio actual que tengan permiso de ejecución para los “otros” usuarios. ls –l ¦ grep „d……..x‟ Notar que grep busca por una cadena de caracteres que empieza con “d” y tiene exactamente ocho caracteres no especificados y entonces una “x” al final. 9.- Ejecute y comente la salida del siguiente comando: ps ax ¦ grep sshd ¦ grep -v grep. ¿Qué sentido tiene la sentencia grep –v grep en el comando? 3 Escuela de Informática y Telecomunicaciones 10.- Ejecute y comente la salida del siguiente comando: grep -lR apache /etc/*. 11.- Un archivo palabras.txt contiene palabras distintas una por línea. Especificar el comando LINUX que permita extraer hacia el archivo words.txt todas las palabras que empiecen y terminen con vocal, en minúscula o mayúscula. Búsqueda de archivos 12.- Con el comando find, busque todos los ficheros con extensión .conf en el directorio /etc y cópielos en el directorio copia_conf, creado previamente. 13.- Especificar los comandos LINUX que permitan mostrar el nombre de todos los archivos que tiene en su cuenta cuyo nombre termine con el símbolo “~”, mostrar el contenido de los archivos que encontró en el paso anterior mostrando una pantalla de información a la vez. 14.- Especificar los comandos LINUX que permitan crear un directorio que se llame para_borrar y copia los archivos que se mostraron en el paso anterior. Utilizar find para borrar los archivos del directorio que se creó en el paso anterior. 4 Escuela de Informática y Telecomunicaciones 15.- Especificar el comando LINUX que permita buscar todos los archivos de tamaño superior a 30KB en su equipo. 16.- Especificar el comando LINUX que permita buscar todos los directorios vacíos que se encuentran en /home/alumno (si no existen, cree algunos para probar el comando). 17.- Especificar el comando LINUX que permita buscar todos los archivos vacíos que se encuentran en /home/alumno (si no existen, cree algunos para probar el comando). 18.- Especificar el comando LINUX que permita buscar varios tipos de archivos a la vez, a modo de ejemplo puede Ud. buscar archivos con extensión “.mpg” y con extensión “.avi”. find . -name „*.mpg‟ -o -name „*.avi‟ 19.- Especificar el comando LINUX que permita buscar y mostrar los nombres de todos los archivos en el árbol de directorios /usr/src hasta los situados tres directorios debajo de /usr/src (lea la ayuda de find, opción -maxdepth), que terminen con ".rpm" y cuyos tamaños sean mayores a 100 kbytes. find /usr/src -maxdepth 3 -name '*.rpm' -size +100k -print 5 Escuela de Informática y Telecomunicaciones V. Resumen Con esta experiencia aprendiste acerca de las características de uso y opciones de los comandos LINUX de manipulación de archivos. Aprendiste acerca de algunos otros comandos misceláneos de LINUX como son date, clear, id, finger, who, w, etc. Aplicaste los comandos de manipulación de archivos en problemas prácticos de manejo de archivos en LINUX. 6