Fecha de efectividad: 11-08-2008 CARRERA PLAN DE ESTUDIO CLAVE ASIGNATURA NOMBRE DE LA ASIGNATURA LSC 2003-1 5491 Taller de Linux PRÁCTICA No. LABORATORIO DE Licenciado en Sistemas Computacionales DURACIÓN (HORA) 5 NOMBRE DE LA PRÁCTICA Mandos para el manejo de archivos 2 1. INTRODUCCIÓN Un archivo es la unidad fundamental del sistema UNIX. Podemos definir un archivo como un conjunto de datos con un nombre asociado que se guardan en un dispositivo de almacenamiento como un disco duro. El formato en el que se guardan los datos en el archivo depende del programa que se haya utilizado para crearlo. Algunos formatos comunes de archivos son: PDF formato portatil de documentos, JPG para imágenes y DOC documentos elaborados con un procesador de palabras. Otro formato que es muy común en UNIX es el formato de texto plano. La mayoría de los archivos de configuración que utiliza UNIX se guardan como texto plano. 2. OBJETIVO (COMPETENCIA) El alumno aplicará los comandos básicos para mostrar el contenido de archivos de texto y para mostrar información de ellos. 3. FUNDAMENTO Los archivos suelen residir en dispositivos de almacenamiento secundario, tales como cintas, discos duros o disquetes. Tienen asignado un nombre porque de este modo tanto los programas como los usuarios pueden hacer referencia a ellos. Debemos entender al sistema de archivos como aquella parte del sistema responsable de la administración de los datos en dispositivos secundarios, debe proporcionar los medios para un almacenamiento seguro y privado de la información y compartirla la misma cuando el usuario lo desee. En UNIX los archivos están organizados en directorios, los cuales son archivos algo especiales que contienen Formuló Revisó Aprobó Autorizó Ing. Linda Eugenia Arredondo Acosta M.C.Cecilia M. Curlango Rosas M.C. Mónica Cristina Lam Mora M.C. Miguel Ángel Martínez Romero Maestro Coordinador de Programa Educativo Página 1 de 11 Gestión de Calidad Director de la Facultad
información que permite localizar otros archivos. También pueden contener otros directorios los cuales se denominan subdirectorios. A la estructura resultante de esta organización se le conoce con el nombre de estructura de árbol invertida. La Figura 1 muestra la estructura de directorios de un sistema Linux, es importante resaltar que el directorio representado con la carpeta roja que se muestra con el nombre Root Folder en realidad lleva por nombre el símbolo slash (/). Figura 1: Estructura de directorios de un sistema Linux En UNIX todos los archivos y directorios dependen del directorio raíz o root y se representa por el símbolo slash "/". Los archivos se identifican por lo que se conoce como pathname o ruta. Así la cadena /etc/passwd identifica a passwd como un elemento que desciende del directorio etc que ha su vez desciende del directorio raíz ( / ). Cuando el nombre del camino inicia con el caracter / se dice que el camino es absoluto. También hay nombres de ruta relativos, los cuales no inician con el símbolo slash, por ejemplo la cadena bin/troff identifica al archivo o directorio troff que desciende del directorio bin que desciende del directorio actual. Página 2 de 11
ALGUNOS DIRECTORIOS IMPORTANTES EN UNIX cd Sintaxis: cd directorio El mando cd nos permite navegar por la estructura de árbol de directorios del sistema. Su nombre se deriva de la acción que se realiza que es cambiar de directorio y para utilizarlo, solo debemos indicar el nombre del directorio al que queremos cambiar. Por ejemplo en la estructura de directorios que se muestra en la Figura 1 para entrar al directorio /bin debemos escribir cd /bin sin importar en que directorio nos encontremos. pwd Sintaxis: cd El mando pwd nos permite conocer el nombre del directorio en el que nos encontramos en un momento dado. Su uso no requiere de ningun argumento. A continuación vemos un ejemplo del uso de este mando. $ pwd /var/www/html/addon-modules NOMBRES DE ARCHIVOS Y DIRECTORIOS Los nombres de los archivos pueden contener hasta 255 caracteres. Los caracteres empleados pueden ser cualesquiera pero hay algunos caracteres especiales que debemos evitar porque tienen un significado especial para el intérprete de órdenes, por ejemplo: *? < > [ ] \ $ " ( ) MANIPULACION DE ARCHIVOS Enseguida se explican una serie de órdenes empleadas para manipular archivos y directorios. Veremos cómo ver el contenido de cada directorio, copiar archivos, borrarlos, ver su contenido, etc. La mayoría de estas órdenes se utilizan frecuentemente por lo que es bueno familizarizarse con ellas ls Sintaxis: ls [ -lfard ] [ archivo (s) ] La orden ls se utiliza para listar los archivos contenidos en un determinado directorio. Si no se especifica ningún directorio ni archivo como argumento en la línea de mandos, se visualiza el contenido del directorio de trabajo actual. Por ejemplo: $ ls Desktop X cfg gzs mail mbox prac tgz xpdf Página 3 de 11
En algunos casos se necesita información adicional acerca de todo lo visualizado, en el ejemplo anterior no sabemos si los archivos son archivos ordinarios, directorios o programas ejecutables. Con la opción -F, ls añade un slash "/" a cada directorio y un asterisco "*" a cada archivo que sea ejecutable. $ ls -F algo/ awk/ dirlist exam java/ nombre.txt peliculas.txt a.out* cuentas/ Documents/ examenes/ mail/ numeros* procesos* Cuando queremos una información lo más extensa posible utilizaremos la opción -l para visualizar los archivos en formato largo. Por ejemplo: $ ls -l -rwxr-xr-x 2 taller_unix taller_unix pract-01.html 3072 Jan 23 2003 Linux drwx------ 1 taller_unix taller_unix public_html 1024 Jan 15 2003 LinuxDoc La primera columna comenzando por la izquierda es el modo de protección del archivo. El primer caracter puede ser una "d" que indica un directorio o un guión "-" que indica un archivo ordinario, una "c" o "b" indica un archivo de dispositivo. El resto de los caracteres del modo del archivo ( rwxr-xr-x ) informan de los permisos que el propietario, el grupo de trabajo al que pertenece el propietario y el resto de los usuarios tienen sobre dicho archivo. Estos permisos se refieren al tipo de operaciones que pueden realizarse con él. La r significa que puede ser leido, la w indica que se puede escribir o modificar y la x significa que el archivo puede ejecutarse. Si en lugar de r, w, x aparece un guión -, esto indica que no se tiene ese permiso. En la segunda columna se indica el número de enlaces, un enlace permite que un archivo pueda aparecer en lugares diferentes en la estructura de directorios sin necesidad de tener su copia física repetida en el disco. Un enlace es similar a los shortcuts que se manejan en Windows. La tercera columna muestra el nombre del propietario del archivo y la cuarta columna es el nombre del grupo. En la quinta columna se indica el tamaño del archivo, es decir, el número de bytes que contiene. La sexta columna indica la fecha de la última modificación realizada al archivo y por último, en la séptima columna, se muestra el nombre del archivo. En los ejemplos anteriores no aparecen los archivos cuyo primer caracter es un punto. Estos archivos se encuentran escondidos debido a que normalmente son archivos de configuración para algún programa y no le interesa al usuario verlos normalmente. Sin embargo, para ver un listado de ellos se utiliza la opción -a del comando ls La opción -d normalmente se utiliza con la opción -l para ver información relacionada con un directorio ( propietario, derechos, fecha, etc. ) y no con su contenido. $ ls -ld /etc drwxr-xr-x 24 root root 3072 Nov 16 16:58 /etc cat Sintaxis: cat [ archivo (s) ] Esta orden sirve para visualizar el contenido de archivos de texto en la pantalla. Veamos el siguiente ejemplo: $ cat archivo.c #include <stdio.h> void main() { int y=25; printf(" El valor de y es %d", y); } Si no le pasamos ningún archivo de texto como argumento al mando cat, entonces leerá caracteres del teclado (también conocido como entrada estándar) y cada vez que presionemos ENTER nos mostrará el texto que acabamos de escribir hasta que presionemos Ctrl - c para terminar. Un ejemplo de esto se puede visualizar en la Figura 2. Página 4 de 11
more Sintaxis: more [ archivo (s) ] La orden more imprime en pantalla el contenido del archivo de texto que le pasemos como argumento, pero la visualización se hace pantalla por pantalla. Cuando more detiene la visualización podemos continuar con la pantalla siguiente si presionamos la barra espaciadora. Para ver solo la siguiente línea presionamos ENTER y si queremos teminar la visualización, pulsamos la letra q (quit). En todo momento more nos informa el porcentaje del tamaño del archivo que lleva mostrado. cp Sintaxis: cp archivo(s)_fuente destino La orden cp se utiliza para copiar archivos de un lugar a otro en el árbol de directorios. Necesita por lo menos dos argumentos, el primero es el archivo existente que queremos copiar en otro lugar, y el segundo es el nombre del destino. Podemos utilizar rutas absolutas o relativas para ambos archivos. Podemos copiar varios archivos al mismo tiempo, utilizando los caracteres especiales como "*" o "?", pero esto solo funciona cuando se van a copiar a un directorio. A continuación se muestran unos ejemplo del uso de cp. $ cp /etc/passwd passwd $ cp ~taller_unix/public_html/ejemplo.html ~unix121/ejemplo.html Con la primera instrucción copiamos el archivo /etc/passwd en nuestro directorio HOME utilizando la ruta completa del archivo passwd. En la segunda instrucción copiamos el archivo ejemplo.html que está en la ruta /home/materias/taller_unix/public_html (utilizamos el auxiliar ( ~ ) que nos proporciona la ruta del directorio HOME de los usuarios) y lo copiamos a nuestro directorio de arranque o HOME. Aquí estamos suponiendo que nosotros somos el usuario unix121. mv Sintaxis: mv archivo(s) destino Con esta orden podemos mover los archivos de un lugar a otro, es decir, los archivos origen desaparecerán de su localización inicial. En esta práctica utilizaremos mv para cambiar el nombre a un archivo es decir renombrar el archivo. En el siguiente ejemplo con el mando ls vemos que existe un archivo llamado: datos. Después con el mando mv le cambiamos el nombre de datos a listado.txt. Finalmente con el mando ls, verificamos que ya no existe un archivo llamado datos pero que si existe uno que se llama listado.txt. $ ls datos prog prog.c serv.c $ mv datos listado.txt $ ls listado.txt prog prog.c serv.c rm Sintaxis: rm [ -irf ] archivo(s) La orden rm (remove) se utiliza para borrar archivos. Para utilizarlo, debemos especificar el nombre de todos los archivos que deseamos borrar. Si alguno de los archivos que queremos borrar no existiera, rm nos enviará un mensaje de aviso. Si el archivo no tiene derechos de escritura, aunque seamos su propietario, rm nos preguntará si realmente queremos eliminarlo. De otra manera, la orden se lleva a cabo sin preguntar nada. Por esta razon debemos tener cuidado al utilizarla, puesto que UNIX no permite recuperar un archivo borrado por medio de rm. Página 5 de 11
Algunas opciones que se utilizan comunmente con rm son: -f (force) Forza el borrado de los archivos, incluso si están protegidos (si el usuario es el dueño) -i (interactive) Pregunta antes de borrar cada archivo si realmente queremos hacerlo -r (recursive) Se borran los archivos de un directorio de forma recursiva, esto significa que descienden a los subdirectorios y borra su contenido también. Normalmente, rm solo borra archivos pero no entra a los subdirectorios. La Figura 3 muestra algunos ejemplos del uso del rm. Primero con ls -l verificamos los permisos de los archivos y vemos que existe un directorio llamado ingresos. Se intenta borrar el archivo cartas y nos aparece un mensaje indicando que este no tiene permiso de escritura. En este caso indicamos que no deseamos borrar el archivo. Posteriormente borramos el archivo datos1 de manera interactiva y vemos que el sistema no pide que confirmemos que queremos borrar el archivo. El siguiente mando borra de manera forzada todos los archivos. Vemos que nos marca que no pudo borrar ingresos pues es un directorio. Vemos que ingresos es un directorio que contiene el archivo enero. Finalmente para borrar el directorio ingresos y todo su contenido utilizamos el borrado recursivo y después verificamos que hemos borrado todo. Página 6 de 11
ln Sintaxis: ln archivo(s) destino La orden ln (link) se utiliza para permitir que un mismo archivo aparezca en el sistema de archivos bajo dos nombres diferentes, pero con una única copia. Esto es similar a crear un shortcut en Windows. Con ln no se hace una copia del archivo original, solamente se crea otro nombre de archivo que hace referencia al mismo archivo físico, lo cual nos permite que una única copia de un archivo aparezca en varios directorios con distintos nombres. De este modo, podemos compartir información de una forma cómoda. Al eliminar algún archivo de referencia, sólo eliminamos el shortcut, pero no la copia real. Ejemplo: Página 7 de 11
$ ls -l total 8 -rw-r r-- 1 chan igx 39 Nov 18 16:05 datos -rwxr-xr-x 1 chan igx 4098 Nov 17 18:24 prog -rw-r r-- 1 chan igx 1941 Nov 17 18:29 serv.c $ ln prog programa $ ls -l total 8 -rw-r r-- 1 chan igx 39 Nov 18 16:05 datos -rwxr-xr-x 2 chan igx 4098 Nov 17 18:24 prog -rwxr r-- 2 chan igx 4098 Nov 17 18:24 programa -rw-r r-- 1 chan igx 1941 Nov 17 18:29 serv.c En el ejemplo podemos ver que el número de vínculos o enlaces varía de uno a dos, en el archivo prog. A partir de este momento, prog y programa son dos archivos diferentes que contienen la misma información y una única copia en disco. Esto puede no parecer muy útil ya que el shortcut y el archivo original se encuentran en el mismo directorio. Pero en la Figura 4 podemos ver otro ejemplo en el que al utilizar el shortcut nos evitamos el tener que escribir el nombre completo del archivo para acceder a él. En este caso el archivo con su ruta completa es /externos/home/clases/compartido/archivolejano pero creamos un shortcut llamado cercano en el directorio en el que estamos. Vemos como ambos tienen el mismo contenido y que aun cuando borramos el shortcut no borramos el archivo original. du Sintaxis: du [ -abcs ] archivo(s) du - Estima el uso de espacio de los archivos. Informa de la cantidad de espacio de disco usada por los archivos especificados, y por cada. Sin argumentos, du informa del espacio de disco para el directorio en actual. La salida es en unidades de 1024 bytes (1kb). -a Muestra los números para todos los archivos encontrados, no solo para los directorios. -b Muestra los tamaños en bytes, en vez de en kilobytes. -c Muestra un gran total Página 8 de 11
-s Solamente imprime en la salida el uso de espacio en general, no para sus subdirectorios. Ejemplos: [aguilar@tiburon ~]$ du a 104K./practica22/foto1.tif 140K./practica22/mapa.jpg.. 104K./practica22/foto.tif 12K./.xdg_menu_cache/output 52K./.xdg_menu_cache 1.3G. [aguilar@tiburon ~]$ du s 1.3G. df Sintaxis: df sistema df informa de la cantidad de espacio de disco usada y de la disponible en sistemas de archivos. Sin argumentos, df informa del espacio usado y del disponible en todos los sistemas de archivos montados actualmente (de todos los tipos). De otro modo, df informa solo del sistema de archivo donde esta cada argumento archivo. Ejemplos [aguilar@tiburon ~]$ df S.archivos Tamaño Usado Disp Uso% Montado en /dev/sda1 9.9G 6.7G 2.8G 71% / /dev/sdb1 135G 20G 109G 16% /externos /dev/sda10 49G 27G 23G 55% /home /dev/sda7 11G 33M 9.6G 1% /opt /dev/sda6 3.7G 33M 3.5G 1% /tmp /dev/sda8 31G 2.8G 26G 10% /usr /dev/sda9 30G 9.8G 19G 35% /var [aguilar@tiburon ~]$ df /dev/sda9 S.archivos Tamaño Usado Disp Uso% Montado en /dev/sda9 30G 9.8G 19G 35% /var [aguilar@tiburon ~]$ df /var S.archivos Tamaño Usado Disp Uso% Montado en /dev/sda9 30G 9.8G 19G 35% /var [aguilar@tiburon ~]$ df /home S.archivos Tamaño Usado Disp Uso% Montado en /dev/sda10 49G 27G 23G 55% /home quota Sintaxis: quota [-ils] quota Despliega la capacidad utilizada en disco duro, así como sus límites o capacidad total asignada de almacenamiento en disco duro, así como en cantidad de archivos. -i Ignora los puntos de montaje, montados por el automounter (usb, cdrom, dvd, etc). -l Hace el reporte solo de las cuotas locales, ignora las NFS. -s Muestra las cantidades en Kb,Mb, Gb. Página 9 de 11
Ejemplos: [aguilar@tiburon ~]$ quota Disk quotas for user aguilar (uid 501): Filesystem blocks quota limit grace files quota limit grace /dev/sdb1 1323124 5999000 6000000 1010 0 0 [aguilar@tiburon ~]$ quota -s Disk quotas for user aguilar (uid 501): Filesystem blocks quota limit grace files quota limit grace /dev/sdb1 1293M 5859M 5860M 1010 0 0 Filesystem Sistema de archivos(partición) donde están aplicadas las cuotas. blocks Cantidad de blocks usados desplegados en unidades de 1024 (1Kb). quota Cantidad de espacio asignado en disco duro, el cual al ser superado el sistema marcara cuota excedida limit Cantidad de espacio en disco duro, el cual no puede ser supera y ya no se podrá grabar nada. grace Periodo de gracia en días que el usuario dispone después de exceder la cuota para borrar información antes de que se bloquee la cuenta. files Cantidad de archivos creados, el cual también cuenta con cuotas, una quota y limit de 0 significa ilimitado. 4. PROCEDIMIENTO (DESCRIPCIÓN) A) EQUIPO NECESARIO MATERIAL DE APOYO Computadoras con Linux instalado Práctica impresa y estudiada. B) DESARROLLO DE LA PRÁCTICA 1. Cuál es su directorio de arranque o directorio HOME? Mencione el nombre de los archivos ocultos que existen en su directorio de arranque, si es que existen algunos. 2. Liste en forma de columnas el contenido del directorio padre del directorio en el que usted está actualmente. 3. Utilice el mando man para visualizar todas las opciones de la orden ls 4. Determine el tipo de los siguientes archivos: /etc/hosts, /usr/bin, /bin/ls, /bin/login, /usr/lib/x11 y /usr/include/stdio.h 5. Responda a las siguientes preguntas: Quién es el propietario del archivo /etc/passwd? Y el grupo? Cuántos enlaces tiene? Cuál es la lista de derechos del archivo? 6. Visualice todas las opciones de la orden cp por medio del mando info. Página 10 de 11
7. Copie a su directorio HOME el archivo /etc/passwd. Visualice quién es ahora el propietario y el grupo del archivo. 8. Cambie el nombre de la copia del archivo passwd que se encuentra dentro de su directorio HOME, por el nombre de archivo_claves. 9. Visualice el contenido del archivo archivo_claves utilizando la orden cat. 10. Copie en su directorio HOME cualquier archivo del directorio /bin y nombrelo archivo1. Después visualice archivo1 en formato largo. Haga un enlace del archivo anterior con un archivo denominado nuevo. Cuántos enlaces tienen los archivos anteriores? Qué ocurre con los archivos nuevo y archivo1 si borro archivo1? 11.Visualice el contenido del archivo1, consulte la ayuda acerca del mando cat y encuentre la opción que debe utilizar para visualizar el archivo archivo1 numerando cada línea. Compruebe que funcione. 12. Ahora visualice el contenido del archivo1 pantalla por pantalla. 13.Trate de cambiar el nombre de un subdirectorio dentro de su directorio HOME utilizando la orden mv. 14.Utilice los mandos de ayuda para visualizar las opciones de todos los comandos utilizados en esta practica, anote en su cuaderno las opciones que considere más importantes de cada uno de ellos y practiquelas con los archivos que se encuentran en su directorio HOME. 15. Borre los archivos llamados archivo1 y archivo_claves de su directorio HOME. 16. Visualice la capacidad del directorio.kde sin mostrar los subdirectorios. 17. Visualice el porcentaje de utilización de la partición /var. C) CÁLCULOS Y REPORTE El alumno presentará un examen para evaluar la práctica 5. RESULTADOS Y CONCLUSIONES El alumno debe ser capaz de manipular archivos, copiarlos o moverlos de directorio y visualizar su contenido. 6. ANEXOS 7. REFERENCIAS Página 11 de 11